26
Copyright © 2006 Open Geospatial Consortium – All rights reserved
layer : Layer id
wfsResource : IResolve style : StyleBlackboard
WfsWorkflow : Renderer key : String = sld
value : Object = SLDDocument sldStyle : StyleContent
SomeWFS : WFSProxy resolve
Figure 8 Adaptive Workflow Example WFS
In this initial example a default SLD style has been generated and placed on the blackboard, and a voting process has determined that a WfsWorkflow represents an
appropriate method of visualizing the current layer. The WfsWorkflow resolves the wfsResource and makes a GetFeature request. As the feature information is retrieved the
sldStyle is used to render the contents to the screen.
layer : Layer id
wfsResource : IResolve style : StyleBlackboard
FpsWorkflow : Renderer SomeWFS : WFSProxy
resolve key : String = se
value : Object = SymbologyEncoding seStyle : StyleContent
capabilities : URL version : String
SomeFPS : FPSProxy key : String = fps
value : Object = http:objectfx.com fpsStyle : StyleContent
Figure 9 Adaptive Workflow Example FPS
After a catalog search the blackboard has been updated with a Symbology Encoding document presumably matched to the FeatureType beind displayed and a fpsStyle
indicating a capable FPS. The voting process engages a FpsWorkflow which assembled this information into a GetPortrayal request for display.
The use of a blackboard for inter module communication in this manner stands in contrast to layer based architectures traditionally seen in network applications.
7.2.4 Supporting Multiple Versions
There are currently deployed a wide range of WFS and WMS services. An integrated client needs to be capable of supporting a version range with respect to each specification
and should be designed to additional versions as they become available.
Copyright © 2006 Open Geospatial Consortium – All rights reserved
27 Many popular OWS-Service implementations vary slightly for the standardization, or
have different interpretations of such things as scale denominator and SRS notation. At a pragmatic level interaction with these services is required, warts and all.
A Conditional Logic Given the variability between the specifications not to mention the implementations one
should not consider making conditional code to handle the differences. B Version Specific Proxy
The first approach is very straight forward; make direct allowance for different versions of a service. When asked to connect, construct the most appropriate proxy to match the
service being communicated.
+GetCapabilities +GetFeatures
+DescribeFeatureType +Transaction
+GetLock +GetFeaturesWithLock
WFSProxy
WFS1.0Proxy WFS1.1Proxy
+createin capabilities
WFSFactory
creates
Factory
Figure 10 Negotiation using Factory
In the preceding diagram the flavors of WFS encountered during the OWS-3 project are illustrated. Version negotiation follows the guidelines described by the WFS
specification.
The drawback to this approach is the very public nature in which additional versions and quite frankly hacks are made available. You do have the chance of inadvertently
introducing dependence on a specific version into the rest of your code base.
C Version Specific Stratagy Use of a Stratagy object may also be considered to capture the version dependent
functionality
28
Copyright © 2006 Open Geospatial Consortium – All rights reserved
+GetCapabilities +GetMap
+GetFeatureInfo +GetLegendGraphics
+GetStyles +PutStyles
WMSProxy
+createDescribeLayerRequests +createGetCapabilitiesRequest
+createGetFeatureInfoRequest +createGetStylesRequest
+createPutStylesRequest -capabilities : URL
-getmap : URL
WMSSpecification
WMS1.0
-getFeatureInfo -getLegendGraphics
-getStyles -putStyles
WMS1.1 Stratagy
-getFeatureInfo -getLegendGraphics
-getStyles -putStyles
WMS1.1.1
-getFeatureInfo -getLegendGraphics
-getStyles -putStyles
WMS1.3
Figure 11 Version Negotiation using Strategy
In the above diagram the different WMS versions are accounted for by use of WMS Specification strategy object.
7.3 Other Architectural and Design Choices