Just as the STORE interface has special handling of Query Templates for the growing objects, the PUBLISH interface also has special handling of Subscription Templates for these objects.
That is, a Subscription Template can - like a Query Template - specify a range of values that determine which occurrences of a recurring structure are to be returned. A Subscription Template for the log object, for example, can specify a begin and end depth and only the log data points falling within that range will be published.
Both Query and Subscription Templates specify the type of object to be returned (well, wellbore, etc), the data items to be returned (elements and attributes), which objects are to be returned (by specifying a value of one or more data items) and - for those objects having special handling - the range of recurring structure occurrences to be returned.
For the STORE interface, that is the extent of the "selection" process; the Query Template fully specifies the object types, instances and contents to be returned.
And, for most data objects, the Subscription Template also fully specifies the object types and contents to be sent to a Subscriber by the Publisher.
► However, for the growing objects, the PUBLISH interface also performs additional "eligibility" processing prior to applying the Subscription Template.
As described in the section on Publishing, a Publisher considers an object to be "eligible" to be sent to a Subscriber only when that object has changed (or been newly-added).
But some objects "grow" over time as additional occurrences of their recurring structures are added (as additional trajectoryStations are added to a trajectory object, for instance), and thus the Publisher might publish the entire object each time a new recurring structure was inserted!
To prevent this needless retransmission of data, the Publisher always considers the non-recurring ("header") data items of the log, mudLog and trajectory objects to be eligible for publication, but only considers those instances of the recurring structure that are new or have been changed to be eligible for publication.
Here's a summary of the parts of growing objects that are eligible to be published, based on the type of change:
Type of Change Eligible for Publication
new object all non-recurring data
and
all instances of recurring structure
update of non-recurring data all non-recurring data
add of new recurring data all non-recurring data
and
new instance(s) of recurring structure
update of existing recurring data all non-recurring data
and
updated instance(s) of recurring structure
Once the Publisher has determined which part of these objects are eligible for publication, it then applies the Subscription Template to determine whether the Subscriber has requested this particular object (and which portions of the object).
► The Subscription Template is applied to the parts of the object that are eligible to be published in the same way as a Query Template - including special handling.
13 APPENDIX E - Service Agreement
Whenever a WITSML service is setup between a WITSML service provider (provider) and a WITSML service consumer (consumer) there are several aspects of the service that needs to be further specified and agreed upon.
The WITSML standard only contains specifications about the data transport media, format, protocol, data objects and their elements, and so the issues below are not part of the standard itself.
In order for a WITSML service to be successfully setup, the provider and consumer also needs to agree on these subjects:
-
What WITSML interfaces should the provider supply?
-
What WITSML API version is the server supporting?
-
What version of the provider’s WITSML server should be provided?
-
What character sets and encodings is the WITSML server able to handle in the incoming WITSML requests (XML documents), and what kind of characters sets and encodings will the server use in it’s answers to the WITSML clients?
-
What data objects and data elements should the provider supply (not all WITSML data elements are mandatory)?
-
How should the mapping between provider and consumer names on curves etc be done?
-
What default unit of measures should be used for the various data elements?
-
What unit of measure conversions should be available for the various data elements?
-
Security
-
Should authentication be used?
-
What protocol should be used, HTTP or HTTPS?
-
Over what network should the service be run: Internet, VPN, or some other closed network?
-
If firewalls need to be opened for the service to run the IP addresses and ports of the participating machines as well as the direction of connection initiation between them should be specified.
-
For how long should the service run?
-
Quality of service
-
For what period is the service available? 24/7?
-
Is the service supported in that same period?
-
E-mail and phone number of the provider support personnel or contact person.
-
Is the service kept under surveillance? At what times?
-
What is the IP address and URL to the WITSML server?
14 APPENDIX F - Custom Data
All the WITSML data objects include a container element named which can be used to extend the WITSML data object definitions. While this is a useful feature, it can lead to the very interoperability problems that WITSML was intended to prevent.
For the special case of , all sub-nodes will be returned if only the customData element is specified. Querying sub-nodes of customData is server dependent.
The following recommendations are made in order to minimize problems across different implementations of custom data.
14.1Namespace
Custom data definitions should use a namespace URI different from the one used by WITSML (http://www.witsml.org/schemas/nnn).
Here is a WITSML well object that uses the xmlns attribute to declare a custom namespace prefix of "cns" associated with the URI http://www.my.org/schemas/100.
The object includes two custom data elements (cd1 and cd2) defined in that custom data namespace.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cns="http://www.my.org/schemas/100"> custom ns declaration
… WITSML-defined elements and attributes …
value of cd1
value of cd2
Note that in this example the WITSML-defined elements and attributes do not require a namespace prefix, since they use the default namespace declaration.
Share with your friends: |