[kepler-dev] MoML authoring use cases

Paul Allen pea1 at cornell.edu
Fri Mar 13 07:19:38 PDT 2009


Recent discussions on this mailing list have helped clarify my thinking 
about workflow (MoML) authoring tools. (See 
http://mercury.nceas.ucsb.edu/kepler/pipermail/kepler-dev/2009-March/013865.html
http://mercury.nceas.ucsb.edu/kepler/pipermail/kepler-dev/2009-March/013903.html)

Abstractly, the issue I'm trying to tackle is how to implement a MoML 
authoring tool that isn't Java-based and thus doesn't have access to the 
actor implementations themselves. See the attached PDF diagram. I've 
been working with Christopher Tuot's KFlex package which uses the actor 
XML specifications from KAR files to understand how to visually 
represent actors and the semantics of their ports, links, and relations. 
I misunderstood the actor XML representations from KAR files and now 
understand that they are quite different from the MoML you get when you 
run Ptolemy's exportMoML() for an actor (see below).

I'd be happy to other people's thoughts about whether a non-Java MoML 
authoring tool should be trying to deal with KAR actor descriptions or 
the actor MoML directly.

--------------------------------------------------------------------------------------------------------
KAR actor description:
--------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<entity name="CreateDate" class="ptolemy.kernel.ComponentEntity">
<property name="entityId"  
value="urn:lsid:kepler-project.org:actor:541:1" 
class="org.kepler.moml.NamedObjId"/>
<property name="class" value="org.kepler.date.CreateDate" 
class="ptolemy.kernel.util.StringAttribute">
  <property name="id" value="urn:lsid:kepler-project.org:class:541:1" 
class="ptolemy.kernel.util.StringAttribute"/>
</property>
<property name="kepler:output" class="org.kepler.moml.PortAttribute">
  <property name="direction" value="output" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="dataType" value="date" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="isMultiport" value="true" 
class="ptolemy.kernel.util.StringAttribute"/>
</property>
<property name="kepler:trigger" class="org.kepler.moml.PortAttribute">
  <property name="direction" value="input" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="dataType" value="unknown" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="isMultiport" value="true" 
class="ptolemy.kernel.util.StringAttribute"/>
</property>
<property name="kepler:format" class="org.kepler.moml.PortAttribute">
  <property name="direction" value="input" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="dataType" value="string" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="isMultiport" value="false" 
class="ptolemy.kernel.util.StringAttribute"/>
    <property name="_showName" class="ptolemy.kernel.util.Attribute">
</property>
</property>
<property name="kepler:input" class="org.kepler.moml.PortAttribute">
  <property name="direction" value="input" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="dataType" value="string" 
class="ptolemy.kernel.util.StringAttribute"/>
  <property name="isMultiport" value="false" 
class="ptolemy.kernel.util.StringAttribute"/>
    <property name="_showName" class="ptolemy.kernel.util.Attribute">
</property>
</property>
<property name="firingCountLimit" class="ptolemy.data.expr.Parameter" 
value="NONE">
</property>

<property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
</property>


<property name="semanticType00" class="org.kepler.sms.SemanticType" 
value="urn:lsid:localhost:onto:2:1#Time">
</property>

<property name="KeplerDocumentation" 
class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
<property name="description" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
<property name="author" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Daniel 
Crawl</configure></property>
<property name="version" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
<property name="userLevelDocumentation" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;Create 
a date token. If a date string is not given on &lt;i&gt;input&lt;/i&gt;, 
&#10;   the current date and time is used.</configure></property>
<property name="port:output" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The date 
and time token.</configure></property>
<property name="port:trigger" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If 
connected, the actor will not run until a token is 
available.</configure></property>
<property name="prop:input" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A string 
date and time. If not used, the current date and time  is 
used.</configure></property>
<property name="prop:format" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The format 
of the input date and time. See   java.text.SimpleDateFormat for the 
syntax.</configure></property>
<property name="prop:firingCountLimit" 
class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If a 
positive integer, then the number of iterations before the  actor 
indicates to the scheduler that it is finished by returning  false in 
its postfire() method.</configure></property>
</property></entity>


--------------------------------------------------------------------------------------------------------
Output from exportMoML:
--------------------------------------------------------------------------------------------------------
<entity name="CreateDate" class="org.kepler.date.CreateDate">
    <property name="firingCountLimit" 
class="ptolemy.data.expr.Parameter" value="NONE">
    </property>
    <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
    </property>
    <property name="format" 
class="ptolemy.actor.parameters.PortParameter" value="">
    </property>
    <property name="input" 
class="ptolemy.actor.parameters.PortParameter" value="">
    </property>
    <port name="output" class="ptolemy.actor.TypedIOPort">
        <property name="output"/>
        <property name="multiport"/>
    </port>
    <port name="trigger" class="ptolemy.actor.TypedIOPort">
        <property name="input"/>
        <property name="multiport"/>
    </port>
    <port name="format" class="ptolemy.actor.parameters.ParameterPort">
        <property name="input"/>
        <property name="_showName" class="ptolemy.kernel.util.Attribute">
        </property>
    </port>
    <port name="input" class="ptolemy.actor.parameters.ParameterPort">
        <property name="input"/>
        <property name="_showName" class="ptolemy.kernel.util.Attribute">
        </property>
    </port>
</entity>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: Non-Java Workflow Authoring Use Case.pdf
Type: application/pdf
Size: 8973 bytes
Desc: not available
URL: <http://mercury.nceas.ucsb.edu/kepler/pipermail/kepler-dev/attachments/20090313/e1384136/attachment.pdf>


More information about the Kepler-dev mailing list