[Pipet Devel] Re: [Pipet Devel] Re: Ideas for network distributed objects

J.W. Bizzaro bizzaro at geoserve.net
Fri Mar 24 22:37:20 EST 2000


Jean-Marc Valin wrote:
> 
> OK, I'll try to summerize the way XML is used in Overflow with an example:
> 
> <?xml version="1.0"?>
> <Document>
> 
> A document is a file and can contain many networks (it's the equivalent of a .c)

Then this is something like Loci's 'workspace' or 'workflow diagram', or
Jarl's 'dataflow structure'.

>   <Network type="subnet" name="MAIN">
> 
> A network if the C equivalent of a function. Each document must contain a MAIN
> network.
> 
>     <Node name="node1" type="Constant" x="-294.000000" y="101.000000">
>       <Parameter name="VALUE" type="subnet_param" value="IN"/>
>     </Node>
>
> This is a node definition. The name is arbitrary,

The name is akin to Loci's identification number, which is really a URI to the
XML representation of the node.

> while the type corresponds to an Overflow node class.

Great, this is just like Loci's locus types/classes.

> x and y are for the GUI.

I think for VSH we should have the GUI store that information.  If we are to
have more than one interface available for VSH, x and y will not always be
relevant.  This is what we were going to do with Loci.

>  The parameters have to correspond to what the node expects.

This is like a mime-type for link I/O?  This is also something Loci was going
to define.

>     <Node name="node5" type="MAIN_LOOP" x="-26.000000" y="108.000000">
>       <Parameter name="FRAME_SIZE" type="int" value="256"/>
>     </Node>
>     <Node name="node2" type="ExecStream" x="-165.000000" y="98.000000">
>       <Parameter name="COMMAND" type="string" value="cat"/>
>     </Node>
>     <Node name="node6" type="Constant" x="-162.000000" y="186.000000">
>       <Parameter name="VALUE" type="string" value="frames"/>
>     </Node>

I'm not sure what you mean by value=256, cat, or frames.

>     <Node name="node8" type="OutputStream" x="43.000000" y="190.000000"/>
>     <Node name="node9" type="Save" x="243.000000" y="119.000000"/>
>     <Link from="node2" output="OUTPUT" to="node5" input="INPUT"/>
>     <Link from="node1" output="VALUE" to="node2" input="INPUT"/>
>     <Link from="node6" output="VALUE" to="node8" input="INPUT"/>
>     <Link from="node5" output="TRAIN_IN" to="node9" input="OBJECT"/>
>     <Link from="node8" output="OUTPUT" to="node9" input="STREAM"/>
> 
> Links define which node is connected to which. Input and output names need to be
> defined since nodes can have more than one input/output.

Excellent, just like Loci.  Although Loci embedded <link> (what Loci calls
<input> and <output> 'connectors') in with the node information.  This is how
Loci defines a node (loci == node, although 'locus' is singular):

  <loci type='document' >
    <widget>file_select</widget>
    <input xml:link='simple'  href='baselocus.xml' >
    </input>
    <output xml:link='simple'  href='workspace1/viewer1.xml' >
    </output>
  </loci>

(Brad, shouldn't we also have locus 'id=' in here?)

In this example, when we say 'type=', we mean the same thing you do with
'type='.  But our type 'document' is a node that stores data: a file.  It's
not where Loci sets up a network.  What Overflow calls 'document', Loci calls
'workspace'.

<widget> is the name of the interface component to be used.  We're working on
using more XML here, and the 'widget' representation in XML can be located
anywhere on the Internet.

<input> and <output> define the links (connectors) for this particular node. 
href points to the XML representation of the node it is connected to. 
xml:link is from an XML document linking tool that Brad has been using.

Loci also gives the node an ID (not shown above) that is the location/URI of
the node's XML representation.  Here the GUI of Loci requests that a node
called 'viewer1' gets linked to a node called 'document1':

  <connect>
    <input id='workspace1/viewer1.xml' >
    </input>
    <output id='workspace1/document1.xml' >
    </output>
  </connect>

Other information related to a node (e.g., library URI and version number) can
be kept between <loci> and </loci>

>     <NetOutput name="OUTPUT" node="node9" terminal="OUTPUT"/>
> 
> NetOutput means which node (and which output of that node) will be used as the
> output of the whole network. The same applies to NetInput and NetCondition.

What is the actual output?  The screen, a file?  Or is this something the user
defines?

>   </Network>
>   <Parameter name="IN" type="string" value="/data/ntt/french/*/*"/>

In this case, the whole 'document' gets a 'parameter' tag?

When I first came across Overflow (when you posted the announcement on
gnotices), I noted to Brad how remarkably similar some of its features are to
Loci's.  This is particularly true for the XML representation of a network.

This is something GMS (which uses no XML) needs to implement as well.  And
since Overflow and Loci are so similar, we should choose one definition.  Can
you comment on what you like or dislike about Loci's use of XML for network
representation?  Let's hammer this out right away.

Cheers.
Jeff
-- 
                      +----------------------------------+
                      |           J.W. Bizzaro           |
                      |                                  |
                      | http://bioinformatics.org/~jeff/ |
                      |                                  |
                      |        BIOINFORMATICS.ORG        |
                      |           The Open Lab           |
                      |                                  |
                      |    http://bioinformatics.org/    |
                      +----------------------------------+




More information about the Pipet-Devel mailing list