\section{Overview of the GNV-Server}

\subsection{Tasks and Components of the GNV-Server}

The GNV-server is a middleware-component and consists of two functional
components:
\begin{enumerate}
    \item artifact-server -- providing access to the database and
    managing the users' workflow to the GNV-WebClient
    \item mapserver -- providing user-generated maps. Mapserver is
    controlled by the artifact-server.
\end{enumerate}

The central concept of the artifact-server is to model the workflow of
users by the following steps:
\begin{enumerate}
    \item selection of data (parameterization)
    \item processing of result sets (interpolation, clipping)
    \item exporting processed result sets (charts, statistics, raw data)
\end{enumerate}

Within the artifact-server, these steps are supported by the following
core components for the entire GNV-system.  The naming refers to
components used in the configuration. In order to simplify a first
orientation in the configuration and this manual, the XML-tags/words in
the central configuration file at {\tt conf/conf.xml} are used. They are
marked in {\tt typewriter} style:

\begin{itemize}
   \item {\tt geo-backend} -- access to the database backend
   \item {\tt rest-server} -- providing a RESTful-Interface with a
   XML-based protocol to serve the expert information systems (FIS) with
   their products to different clients, e.g. GNV WebClient
   \item {\tt factories/*}, {\tt artifacts/*} --  managing the steps and
   operations of users' workflow for all expert information
   systems (FIS)
   \item {\tt gnv} -- processing pipeline providing results of the
   products with the following subtasks:
     \begin{itemize}
       \item processing of result sets like interpolation, clipping 
       \item visualization of charts and maps
       \item exporting selected raw data
     \end{itemize}
   \item {\tt mapserver} -- managing the Web Map Service for creating maps
   dynamically
\end{itemize}

Each component has a specific configuration for its functionality and
subsystems. 

\subsection{Internal Structure of the GNV-Server}

\subsubsection{Internal Structure of Artifact-Server}
Per default the artifact-server can be found at {\tt
/opt/artifact-server}\footnote{Information about installation and
operation can be found in the admin-manual.}. The internal directory
structure of the artifact-server looks like this:

%% tree /opt -d -L1
\begin{lstlisting}
artifact-server
|-- artifactdb # storing artifacts in a database
|-- bin # binaries including all libraries
|-- cache # storage for cached data (e.g. result sets)
|-- conf # central configuration of artifact-server
|-- install # files for system integration (just for setup)
|-- mapfiles # generated configurations for map-server (done by
             # map-generator)
`-- shapefiles # raw data for map generating (done by map-generator)
\end{lstlisting}


\subsubsection{Internal Structure of Mapserver}
Per default the mapserver can be found at {\tt
/usr/lib/cgi-bin}.\footnote{Information about installation and
operation can be found in the admin-manual.} The internal structure of
the mapserver looks like this:

%% tree /usr/lib/
\begin{lstlisting}
cgi-bin/
|-- gnv-wms # wrapper pointing to the configuration (default:
            # artifact-server/mapfiles/mapfile.map), invoked by
            # webserver
`-- mapserv-gp # binary of mapserver, invoked by wrapper
\end{lstlisting}
