OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

obix-xml message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [obix-xml] obix, discovery, and more...


Title: Message
Sounds good.  Can we make sure there is no overlap with the WS-Discovery and WS-MetaDataExchange proposals in the latest version of the proposed Devices Profile for Web Services? (http://msdn.microsoft.com/library/en-us/dnglobspec/html/devprof.asp?frame=true) No point in reinventing the wheel.
-----Original Message-----
From: Brian Frank [mailto:bfrank@tridium.com]
Sent: 20 August 2004 17:08
To: obix-xml@lists.oasis-open.org
Subject: [obix-xml] obix, discovery, and more...

I'm starting to get back into obix after a summer of distractions.  Lately I've been doing
some brainstorming on our current design and how it relates to discovery.  This process
has led to the following conclusions:
 
- The main value of the work we did under the guise of the PointService is really to normalize
  how primitives are represented and annotated with meta-data (like min, max, range, etc)
 
- That led me to think that maybe the PointService is really just the service used to read and
  write data primitives
 
- That led me to think about the DiscoveryService as a way to read complex structures down
  to the primitive level
 
- That led me to think that maybe Discovery and Points is really all just one thing...
 
What I am thinking is that we collapse Discovery and Points into a single service which I've been
thinking of as the Reflection service.   To me it encapsulates two primary goals:
 
 - to learn the structure of any vendor's system without needing to know a whole bunch
   of types and data structures ahead of time
 
 - to normalize key data primitives so that systems can exchange basic data
 
I've been thinking about the Reflection service similar to COM's IDispatch or Java/.Net reflection
APIs.  It lets me use a small set of wrapper types to generically describe and interact with the
vendor's native data model without needing to know all the gory details about the vendor's native
type system. 
 
Plus we would still use the Reflection service as a discovery and jump point into other more rigidly
defined services.  Thus reflection can be used to interact with a vendor's system generically using
loose typing, but still let's us jump to strongly typed services for solving domain specific problems
like history, scheduling, or alarming.
 
My thinking is that the reflection service provides two operations Get and Put.  I've haven't given
a lot of thought to the exact XML syntax, but just to show an example:
 
<Get>
  <Locale>en</Locale>
  <Include>
    <Facets>true</Facets>
  </Include>
  <Depth>1</Depth>
  <Id>someid</Id>
</Get>
 
<GetResp>
  <!-- root object of the get request -->
  <Object>
    <Id>someid</Id>
    <Facets>
      <Icon>/icons/happyFace.png</Icon>
    </Facets>
    <Children>
       <!-- child object, string description -->
       <Object>
         <Id>description</Id>
         <Type>string</Type>
         <Value>someid's description</Value>
       </Object>
       <!-- child object, int counter with facets -->
       <Object>
         <Id>counter</Id>
         <Type>int</Type>
         <Value>73</Value>
         <Facets>
           <Min>0</Min>
           <Max>100</Max>
         </Facets>
       </Object>
    </Children>
  </Object>
</GetResp>
 
Does this seem like a sane way to proceed?
Brian
 
 
 


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]