Supporting Multiple Versions Interaction with Open Web Services

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