[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> Create
a date token. If a date string is not given on <i>input</i>,
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