NOTE: This page is outdated. If you are looking for up-to-date information, please refer to the official documentation on the deegree homepage. |
deegree 3 processingService
1. Features of the implementation
Complete implementation of the WPS 1.0.0 specification
- Easy-to-use API for implementing processes that abstracts the WPS protocol details
Pluggable process provider layer enables the integration of popular geoprocessing frameworks, such as Sextante (work in progress), FME (planned), GRASS (planned) and others
- Supports KVP, XML and SOAP (1.1 and 1.2) requests
- Supports all variants of input / output parameters: literal, bbox, complex (binary and xml)
- Streaming access for complex input / output parameters (allows the processing of huge amounts of data with minimal memory footprint)
- Supports storing of response documents / output parameters
- Supports input parameters given inline and by reference
Supports RawDataOutput / ResponseDocument responses
- Supports asynchronous execution (with polling of process status)
2. See a demo installation
A running version can be accessed on the deegree 3 wps-workspace. It features some example processes as well as a simple client for sending raw WPS requests.
3. Get it up and running
Follow the steps described here.
NOTE: Please use the Firefox browser for performing the configuration steps. |
Log into the services console (the password is "deegree").
Go to workspaces.
Import the "wps-workspace".
Start the "deegree-workspace-wps-3.x.x".
4. Configuration basics
In addition to the standard general deegree workspace settings, a workspace for a deegree processingService uses the following additional directories / files:
`-- services | |-- ... | |-- wps.xml |-- processes | |-- ... | |-- ... | `-- ...
processes: The XML files (*.xml) in this directory configure the so-called process providers
wps.xml: Main configuration file of the processingService. Currently, this file only allows to explicitly select the offered WPS protocol versions -- and at the moment, this can only be 1.0.0.
Use the "Reload" link in the administration console or restart the application container to activate configuration changes.
5. Injecting processes
As depicted in the architecture diagram, process configuration is based on the notion of so-called process providers. The directory $WORKSPACE/processes/ contains XML files (*.xml) that activate and configure the process providers. The root element of each file determines the process provider type that it affects. Please note that it is possible to have multiple process provider configuration files for the same process provider -- each file will cause a new instance of the respective provider to be initialized by the processingService.
5.1. Java processes
If you want write your own Java-based process, please read on to learn HowToCreateWPSProcesses using the Java process provider. This page also explains the available configuration options. Process configuration files for the Java process provider use ProcessDefinition as root element (in the namespace http://www.deegree.org/processes/java). Here's an example:
<ProcessDefinition configVersion="3.0.0" processVersion="1.0.0" storeSupported="true" statusSupported="false"
xmlns="http://www.deegree.org/processes/java" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.deegree.org/processes/java http://schemas.deegree.org/processes/java/3.0.0/java.xsd">
<Identifier>Buffer</Identifier>
<JavaClass>org.deegree.wps.jts.BufferProcesslet</JavaClass>
<Title>Process for creating a buffer around a GML geometry.</Title>
<Abstract>The purpose of this process is to create a buffer around an existing geometry with a buffer distance specified by the user.</Abstract>
<InputParameters>
<ComplexInput>
<Identifier>GMLInput</Identifier>
<Title>GMLInput</Title>
<DefaultFormat mimeType="text/xml" encoding="UTF-8" schema="http://schemas.opengis.net/gml/3.1.1/base/geometryComplexes.xsd" />
</ComplexInput>
<LiteralInput>
<Identifier>BufferDistance</Identifier>
<Title>Buffer distance</Title>
<DataType reference="http://www.w3.org/TR/xmlschema-2/#double">double</DataType>
<DefaultUOM>unity</DefaultUOM>
</LiteralInput>
</InputParameters>
<OutputParameters>
<ComplexOutput>
<Identifier>BufferedGeometry</Identifier>
<Title>BufferedGeometry</Title>
<DefaultFormat mimeType="text/xml" encoding="UTF-8" schema="http://schemas.opengis.net/gml/3.1.1/base/geometryComplexes.xsd" />
</ComplexOutput>
</OutputParameters>
</ProcessDefinition>
5.2. Sextante processes (work in progress)
NOTE: The Sextante process provider is still in an early phase and may not work as expected.
Process configuration files for the Sextante process provider use SextanteProcesses as root element (in the namespace http://www.deegree.org/services/wps/sextante). Here's an example:
<SextanteProcesses xmlns="http://www.deegree.org/services/wps/sextante">
<!-- Nothing configurable here, still to come... -->
</SextanteProcesses>
When this configuration file exists, some Sextante vector processes will be added to the processingService. Currently, there are no options available (will change in the future). See implementation notes.
5.3. GRASS processes (planned)
TBD
5.4. FME processes (planned)
TBD
6. Implement your own process provider
You may want to learn HowToCreateWPSProcessProviders
- if you want to implement an adapter for processes offered by an external geospatial processing framework
if you're looking for a way to inject processes into the processingService programmatically, rather than writing processes and process descriptions manually
See implementation notes on the Sextante process provider.