Witsml/> Core Application Program Interface Version 1


PUBLISH Interface Example



Download 0.54 Mb.
Page21/21
Date31.07.2017
Size0.54 Mb.
#24987
1   ...   13   14   15   16   17   18   19   20   21

12.5PUBLISH Interface Example


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.


1 for example, the Subscriber will convey in its capabilities object the version of the API that it implements. This will allow new versions of the API to be implemented without disrupting existing systems.

2 because HTTP/S is used to transport the published data, this use case shows the Subscriber process running under a generic HTTP/S Server (aka, “web server”). A Subscriber is free to implement its own dedicated, embedded HTTP/S processing if it wishes.

3 XML is not sensitive to “white space” characters such as line feeds, so reformatting it this way doesn’t affect its meaning.

4 but this can be accomplished in two steps – see the next page.

5 the Subscription object cannot specify the Subscription or Capabilities object types, however. Those object types cannot be published.


6 for a more rigorous definition of HTTP syntax, see http://www.w3.org/Protocols/rfc2616/rfc2616.html

7 additional spaces have been inserted into the example elements to make the example more easily readable. Spaces would not be present between numeric values in actual elements.


8 Since the Bit RPM curve in the example contains data only up to interval 4070, this query will result in null values being returned for the Bit RPM curve in the intervals above 4070.



Download 0.54 Mb.

Share with your friends:
1   ...   13   14   15   16   17   18   19   20   21




The database is protected by copyright ©ininet.org 2024
send message

    Main page