Project

General

Profile

Bug #4359 » ModelReferenceStringError.xml

Oliver Soong, 08/31/2009 04:24 PM

 
1
<?xml version="1.0" standalone="no"?>
2
<!DOCTYPE entity PUBLIC "-//UC Berkeley//DTD MoML 1//EN"
3
    "http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd">
4
<entity name="ModelReferenceStringError" class="ptolemy.actor.TypedCompositeActor">
5
    <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="8.1.devel">
6
    </property>
7
    <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:450:182:18:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:450:189:333:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:52:5:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:56:462:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:450:654:274:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:334:148:66:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:183:23:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:334:175:75:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:237:157:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:564:19:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:339:44:10">
8
    </property>
9
    <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:339:58:3">
10
    </property>
11
    <property name="TOP Provenance Recorder" class="org.kepler.provenance.ProvenanceRecorder">
12
        <property name="Recording Type" class="ptolemy.data.expr.StringParameter" value="SQL-SPA-v8">
13
        </property>
14
        <property name="Record Token Values" class="ptolemy.data.expr.Parameter" value="true">
15
        </property>
16
    </property>
17
    <property name="Reporting Listener" class="org.kepler.module.reporting.ReportingListener">
18
    </property>
19
    <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
20
        <property name="iterations" class="ptolemy.data.expr.Parameter" value="1">
21
        </property>
22
        <property name="vectorizationFactor" class="ptolemy.data.expr.Parameter" value="1">
23
        </property>
24
        <property name="allowDisconnectedGraphs" class="ptolemy.data.expr.Parameter" value="true">
25
        </property>
26
        <property name="allowRateChanges" class="ptolemy.data.expr.Parameter" value="false">
27
        </property>
28
        <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="true">
29
        </property>
30
        <property name="period" class="ptolemy.data.expr.Parameter" value="0.0">
31
        </property>
32
        <property name="synchronizeToRealTime" class="ptolemy.data.expr.Parameter" value="false">
33
        </property>
34
        <property name="timeResolution" class="ptolemy.actor.parameters.SharedParameter" value="1E-10">
35
        </property>
36
        <property name="Scheduler" class="ptolemy.domains.sdf.kernel.SDFScheduler">
37
            <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="constrainBufferSizes">
38
            </property>
39
        </property>
40
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
41
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
42
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Steve Neuendorffer</configure></property>
43
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
44
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;&lt;p&gt;The SDF Director is often used to oversee fairly simple, sequential workflows in which the director can determine the order of actor invocation from the workflow. Types of workflows that would run well under an SDF Director include processing and reformatting tabular data, converting one data type to another, and reading and plotting a series of data points. A workflow in which an image is read, processed (rotated, scaled, clipped, filtered, etc.), and then displayed, is also an example of a sequential workflow that requires a director simply to ensure that each actor fires in the proper order (i.e., that each actor executes only after it receives its required inputs).&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director is very efficient and will not tax system resources with overhead. However, this efficiency requires that certain conditions be met, namely that the data consumption and production rate of each actor in an SDF workflow be constant and declared. If an actor reads one piece of data and calculates and outputs a single result, it must always read and output a single token of data. This data rate cannot change during workflow execution and, in general, workflows that require dynamic scheduling and/or flow control cannot use this director. Additionally, the SDF Director has no understanding of passing time (at least by default), and actors that depend on a notion of time may not work as expected. For example, a TimedPlotter actor will plot all values at time zero when used in SDF. &lt;/p&gt;&#10;&#10;&lt;p&gt;By default, the SDF Director requires that all actors in its workflow be connected. Otherwise, the director cannot account for concurrency between disconnected workflow parts. Usually, a PN Director should be used for workflows that contain disconnected actors; however, the SDF Director's allowDisconnectedGraphs parameter may also be set to true. The SDF Director will then schedule each disconnected &quot;island&quot; independently. The director cannot infer the sequential relationship between disconnected actors (i.e., nothing forces the director to finish executing all actors on one island before firing actors on another). However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF model indicate an error.&lt;/p&gt;&#10; &#10;&lt;p&gt;Because SDF Directors schedule actors to fire only after they receive their inputs, workflows that require loops (feeding an actor's output back into its input port for further processing) can cause &quot;deadlock&quot; errors. The deadlock errors occur because the actor depends on its own output value as an initial input. To fix this problem, use a SampleDelay actor to generate and inject an initial input value into the workflow.&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director determines the order in which actors execute and how many times each actor needs to be fired to complete a single iteration of the workflow. This schedule is calculated BEFORE the director begins to iterate the workflow. Because the SDF Director calculates a schedule in advance, it is quite efficient. However, SDF workflows must be static. In other words, the same number of tokens must be consumed/produced at every iteration of the workflow. Workflows that require dynamic control structures, such as a BooleanSwitch actor that sends output on one of two ports depending on the value of a 'control', cannot be used with an SDF Director because the number of tokens on each output can change for each execution.&lt;/p&gt;&#10;&#10;&lt;p&gt;Unless otherwise specified, the SDF Director assumes that each actor consumes and produces exactly one token per channel on each firing. Actors that do not follow the one-token-per-channel firing convention (e.g., Repeat or Ramp) must declare the number of tokens they produce or consume via the appropriate parameters. &lt;/p&gt;&#10;&#10;&lt;p&gt;The number of times a workflow is iterated is controlled by the director's iterations parameter. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. &lt;/p&gt;&#10;&#10;&lt;p&gt;The amount of data processed by an SDF workflow is a function of both the number of times the workflow iterates and the value of the director's vectorizationFactor parameter. The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. &lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director has several advanced parameters that are generally only relevant when an SDF workflow contains composite components. In most cases the period, timeResolution, synchronizeToRealTime, allowRateChanges, timeResolution, and constrainBufferSizes parameters can be left at their default values.&lt;/p&gt;&#10;&#10;&lt;p&gt;For more information about the SDF Director, see the Ptolemy documentation (http://ptolemy.eecs.berkeley.edu/papers/05/ptIIdesign3-domains/ptIIdesign3-domains.pdf).&lt;/p&gt;&#10;&#10;</configure></property>
45
<property name="prop:allowDisconnectedGraphs" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether to allow disconnected actors in the workflow (by default, all actors are required to be connected). If disconnected actors are permitted, the SDF Director will schedule each disconnected 'island' independently. Nothing &quot;forces&quot; the director to finish executing all actors on one island before firing actors on another. However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF workflow indicate an error.</configure></property>
46
<property name="prop:allowRateChanges" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether dynamic rate changes are permitted or not. By default, rate changes are not permitted, and the director will perform a check to disallow such workflows. If the parameter is selected, then workflows that require rate parameters to be modified during execution are valid, and the SDF Director will dynamically compute a new schedule at runtime. This is an advanced parameter that can usually be left at its default value.</configure></property>
47
<property name="prop:constrainBufferSizes" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether buffer sizes are fixed. By default, buffers are fixed, and attempts to write to the buffer that cause the buffer to exceed its scheduled size result in an error. This is an advanced parameter that can usually be left at its default value.</configure></property>
48
<property name="prop:timeResolution" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time precision used by this director. All time values are rounded to the nearest multiple of this number. The value is a double that defaults to &quot;1E-10&quot; (which is 10-10). This is an advanced parameter that can usually be left at its default value.</configure></property>
49
<property name="prop:iterations" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify the number of times a workflow is iterated. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. </configure></property>
50
<property name="prop:vectorizationFactor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. </configure></property>
51
<property name="prop:synchronizeToRealTime" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the execution should synchronize to real time or not. By default, the director does not synchronize to real time. If synchronize is selected, the director will only process the workflow when elapsed real time matches the product of the period parameter and the iteration count. Note: if the period parameter has a value of 0.0 (the default), then selecting this parameter has no effect. This is an advanced parameter that can usually be left at its default value.</configure></property>
52
<property name="prop:period" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time period of each iteration. The value is a double that defaults to 0.0, which means that the director does not increment workflow time. If the value greater than 0.0, the actor will increment workflow time each time it fires. This is an advanced parameter that can usually be left at its default value. </configure></property>
53
</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:450:195:2">
54
        </property>
55
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
56
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
57
            </property>
58
        </property>
59
        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
60
        </property>
61
        <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
62
        </property>
63
        <property name="_location" class="ptolemy.kernel.util.Location" value="[25.0, 310.0]">
64
        </property>
65
        <property name="" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:director:1:1">
66
        </property>
67
        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:director:1:1">
68
        </property>
69
    </property>
70
    <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={825, 33, 1095, 1063}, maximized=false}">
71
    </property>
72
    <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[784, 684]">
73
    </property>
74
    <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
75
    </property>
76
    <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{395.0, 342.0}">
77
    </property>
78
    <entity name="Display" class="ptolemy.actor.lib.gui.Display">
79
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute">
80
        </property>
81
        <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute">
82
        </property>
83
        <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
84
        </property>
85
        <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
86
        </property>
87
        <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
88
        </property>
89
        <property name="title" class="ptolemy.data.expr.StringParameter" value="">
90
        </property>
91
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
92
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
93
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
94
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
95
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;</configure></property>
96
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type.</configure></property>
97
<property name="prop:suppressBlankLines" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the actor should display blank lines (the default) or suppress them.</configure></property>
98
<property name="prop:rowsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical size of the display, in rows. The value is an integer that defaults to 10.</configure></property>
99
<property name="prop:columnsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal size of the display, in columns. The value is an integer that defaults to 40.</configure></property>
100
<property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The title of the text display window. If specified, the value will appear in the title bar of the text display window.</configure></property>
101
</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
102
        </property>
103
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
104
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
105
            </property>
106
        </property>
107
        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
108
        </property>
109
        <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
110
        </property>
111
        <property name="_location" class="ptolemy.kernel.util.Location" value="[440.0, 300.0]">
112
        </property>
113
    </entity>
114
    <entity name="Model Reference" class="ptolemy.actor.lib.hoc.ModelReference">
115
        <property name="modelFileOrURL" class="ptolemy.actor.parameters.FilePortParameter" value="CalledModel.xml">
116
        </property>
117
        <property name="executionOnFiring" class="ptolemy.data.expr.StringParameter" value="run in calling thread">
118
        </property>
119
        <property name="lingerTime" class="ptolemy.data.expr.Parameter" value="0L">
120
        </property>
121
        <property name="postfireAction" class="ptolemy.data.expr.StringParameter" value="do nothing">
122
        </property>
123
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
124
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
125
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee, Elaine Cheong</configure></property>
126
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
127
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;This is an atomic actor that can execute a model specified by&#10; a file or URL. This can be used to define an actor whose firing behavior&#10; is given by a complete execution of another model.&#10; &lt;p&gt;&#10; An instance of this actor can have ports added to it.  If it has&#10; input ports, then on each firing, before executing the referenced&#10; model, this actor will read an input token from the input port, if&#10; there is one, and use it to set the value of a top-level parameter&#10; in the referenced model that has the same name as the port, if there&#10; is one. The simplest way to ensure that there is a matching parameter&#10; is to use a PortParameter for inputs.  However, this actor will work&#10; also for ordinary ports. In this case, if there is a top-level&#10; parameter of the referenced model with the same name as the port, and&#10; it is an instance of Variable (or its derived class Parameter), then&#10; the token read at the input is moved into it using its setToken() method.&#10; Otherwise, if it is an instance of Settable, then a string representation&#10; of the token is copied using the setExpression() method.&#10; Input ports should not be multiports, and if they are, then&#10; all but the first channel will be ignored.&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; If this actor has output ports and the referenced model is executed,&#10; then upon completion of that execution, this actor looks for top-level&#10; parameters in the referenced model whose names match those of the output&#10; ports. If there are such parameters, then the final value of those&#10; parameters is sent to the output ports. If such a parameter is an&#10; instance of Variable (or its derived class Parameter), then its&#10; contained token is sent to the output. Otherwise, if it is an&#10; instance of Settable, then a string token is produced on the output&#10; with its value equal to that returned by getExpression() of the&#10; Settable.  If the model is executed in the calling thread, then&#10; the outputs will be produced before the fire() method returns.&#10; If the model is executed in a new thread, then the outputs will&#10; be produced whenever that thread completes execution of the model.&#10; Output ports should not be multiports. If they are, then all but&#10; the first channel will be ignored.&#10; Normally, when you create output ports for this actor, you will have&#10; to manually set the type.  There is no type inference from the&#10; parameter of the referenced model.&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; A typical use of this actor will use the SetVariable actor&#10; inside to define the value of the output port.&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; A suite of parameters is provided to control what happens when this&#10; actor executes:&#10; &lt;ul&gt;&#10; &lt;li&gt; &lt;i&gt;executionOnFiring&lt;/i&gt;:&#10; The value of this string attribute determines what execution&#10; happens when the fire() method is invoked.  The recognized&#10; values are:&#10; &lt;ul&gt;&#10; &lt;li&gt; &quot;run in calling thread&quot; (the default) &lt;/li&gt;&#10; &lt;li&gt; &quot;run in a new thread&quot; &lt;/li&gt;&#10; &lt;li&gt; &quot;do nothing&quot;. &lt;/li&gt;&#10; &lt;/ul&gt;&#10; If execution in a separate thread is selected, then the execution can&#10; optionally be stopped by the postfire() method (see below). If the model&#10; is still executing the next time fire() is called on this actor, then&#10; the fire() method will wait for completion of the first execution.&#10; If an exception occurs during a run in another thread, then it will&#10; be reported at the next invocation of fire(), postfire(), or wrapup().&#10; Note that if you select &quot;run in a new thread&quot; and this actor has&#10; output ports, the data is produced to those output ports when&#10; the execution completes, whenever that might be.  This may make&#10; output ports difficult to use in some domains.&#10; &lt;/li&gt;&#10; &lt;li&gt; &lt;i&gt;lingerTime&lt;/i&gt;:&#10; The amount of time (in milliseconds) to linger in the fire()&#10; method of this actor.  This is a long that defaults to 0L.&#10; If the model is run in the calling thread, then the linger&#10; occurs after the run is complete. If the model is run in a&#10; new thread, then the linger occurs after the run starts,&#10; and the run is stopped after the linger time expires.&#10; This can be used, for example, to run a model for a specified&#10; amount of time, then ask it to finish() and continue.&#10; &lt;/li&gt;&#10; &lt;li&gt; &lt;i&gt;modelFileOrURL&lt;/i&gt;:&#10; The file name or URL of the model that this actor will execute.&#10; This can be specified either by setting the parameter or by&#10; providing a string at the input port.&#10; &lt;/li&gt;&#10; &lt;li&gt; &lt;i&gt;postfireAction&lt;/i&gt;:&#10; The value of this string attribute determines what happens&#10; in the postfire() method.  The recognized values are:&#10; &lt;ul&gt;&#10; &lt;li&gt; &quot;do nothing&quot; (the default) &lt;/li&gt;&#10; &lt;li&gt; &quot;stop executing&quot; &lt;/li&gt;&#10; &lt;/ul&gt;&#10; The &quot;stop executing&quot; choices will only have an effect if&#10; if &lt;i&gt;executionOnFiring&lt;/i&gt; is set to &quot;run in a new thread&quot;.&#10; This can be used, for example, to run a model for a specified&#10; amount of time, and then stop it.&#10; &lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; There are currently some limitations:&#10; &lt;ul&gt;&#10; &lt;li&gt;&#10; The referenced model cannot create any displays. Use the subclass&#10; VisualModelReference to do that.&#10; &lt;/li&gt;&#10; &lt;li&gt;&#10; FIXME: Pausing the referring model doesn't pause the referenced model.&#10; &lt;/li&gt;&#10; &lt;li&gt;&#10; FIXME: Need options for error handling.&#10; &lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/p&gt;</configure></property>
128
<property name="prop:modelFileOrURL" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The file name or URL of the model that this actor represents.  This is empty by default, which means that there is no  associated model to execute.</configure></property>
129
<property name="prop:executionOnFiring" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value of this string parameter determines what execution  happens when the fire() method is invoked.  The recognized  values are:  &lt;ul&gt;  &lt;li&gt; &quot;run in calling thread&quot; (the default) &lt;/li&gt;  &lt;li&gt; &quot;run in a new thread&quot; &lt;/li&gt;  &lt;li&gt; &quot;do nothing&quot;. &lt;/li&gt;  &lt;/ul&gt;</configure></property>
130
<property name="prop:lingerTime" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of time (in milliseconds) to linger in the fire()  method of this actor.  This is a long that defaults to 0L.  If the model is run, then the linger occurs after the run  is complete (if the run occurs in the calling thread) or  after the run starts (if the run occurs in a separate thread).</configure></property>
131
<property name="prop:postfireAction" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value of this string attribute determines what happens  in the postfire() method.  The recognized values are:  &lt;ul&gt;  &lt;li&gt; &quot;do nothing&quot; (the default) &lt;/li&gt;  &lt;li&gt; &quot;stop executing&quot; &lt;/li&gt;  &lt;/ul&gt;  The &quot;stop executing&quot; choices will only have an effect if  if &lt;i&gt;executionOnFiring&lt;/i&gt; is set to &quot;run in a new thread&quot;.  This can be used, for example, to run a model for a specified  amount of time, and then stop it.</configure></property>
132
</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:339:46:4">
133
        </property>
134
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.hoc.ModelReference">
135
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:536:1">
136
            </property>
137
        </property>
138
        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Workflow">
139
        </property>
140
        <property name="_location" class="ptolemy.kernel.util.Location" value="[310.0, 245.0]">
141
        </property>
142
        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:actor:536:1:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:492:7:urn:lsid:gamma.msi.ucsb.edu/OpenAuth/:631:492:7">
143
        </property>
144
        <property name="" class="ptolemy.vergil.basic.DocAttribute">
145
            <property name="description" class="ptolemy.data.expr.StringParameter" value="&#10;This is an atomic actor that can execute a model specified by&#10; a file or URL. This can be used to define an actor whose firing behavior&#10; is given by a complete execution of another model.&#10; &lt;p&gt;&#10; An instance of this actor can have ports added to it.  If it has&#10; input ports, then on each firing, before executing the referenced&#10; model, this actor will read an input token from the input port, if&#10; there is one, and use it to set the value of a top-level parameter&#10; in the referenced model that has the same name as the port, if there&#10; is one. The simplest way to ensure that there is a matching parameter&#10; is to use a PortParameter for inputs.  However, this actor will work&#10; also for ordinary ports. In this case, if there is a top-level&#10; parameter of the referenced model with the same name as the port, and&#10; it is an instance of Variable (or its derived class Parameter), then&#10; the token read at the input is moved into it using its setToken() method.&#10; Otherwise, if it is an instance of Settable, then a string representation&#10; of the token is copied using the setExpression() method.&#10; Input ports should not be multiports, and if they are, then&#10; all but the first channel will be ignored.&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; If this actor has output ports and the referenced model is executed,&#10; then upon completion of that execution, this actor looks for top-level&#10; parameters in the referenced model whose names match those of the output&#10; ports. If there are such parameters, then the final value of those&#10; parameters is sent to the output ports. If such a parameter is an&#10; instance of Variable (or its derived class Parameter), then its&#10; contained token is sent to the output. Otherwise, if it is an&#10; instance of Settable, then a string token is produced on the output&#10; with its value equal to that returned by getExpression() of the&#10; Settable.  If the model is executed in the calling thread, then&#10; the outputs will be produced before the fire() method returns.&#10; If the model is executed in a new thread, then the outputs will&#10; be produced whenever that thread completes execution of the model.&#10; Output ports should not be multiports. If they are, then all but&#10; the first channel will be ignored.&#10; Normally, when you create output ports for this actor, you will have&#10; to manually set the type.  There is no type inference from the&#10; parameter of the referenced model.&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; A typical use of this actor will use the SetVariable actor&#10; inside to define the value of the output port.&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; A suite of parameters is provided to control what happens when this&#10; actor executes:&#10; &lt;ul&gt;&#10; &lt;li&gt; &lt;i&gt;executionOnFiring&lt;/i&gt;:&#10; The value of this string attribute determines what execution&#10; happens when the fire() method is invoked.  The recognized&#10; values are:&#10; &lt;ul&gt;&#10; &lt;li&gt; &quot;run in calling thread&quot; (the default) &lt;/li&gt;&#10; &lt;li&gt; &quot;run in a new thread&quot; &lt;/li&gt;&#10; &lt;li&gt; &quot;do nothing&quot;. &lt;/li&gt;&#10; &lt;/ul&gt;&#10; If execution in a separate thread is selected, then the execution can&#10; optionally be stopped by the postfire() method (see below). If the model&#10; is still executing the next time fire() is called on this actor, then&#10; the fire() method will wait for completion of the first execution.&#10; If an exception occurs during a run in another thread, then it will&#10; be reported at the next invocation of fire(), postfire(), or wrapup().&#10; Note that if you select &quot;run in a new thread&quot; and this actor has&#10; output ports, the data is produced to those output ports when&#10; the execution completes, whenever that might be.  This may make&#10; output ports difficult to use in some domains.&#10; &lt;/li&gt;&#10; &lt;li&gt; &lt;i&gt;lingerTime&lt;/i&gt;:&#10; The amount of time (in milliseconds) to linger in the fire()&#10; method of this actor.  This is a long that defaults to 0L.&#10; If the model is run in the calling thread, then the linger&#10; occurs after the run is complete. If the model is run in a&#10; new thread, then the linger occurs after the run starts,&#10; and the run is stopped after the linger time expires.&#10; This can be used, for example, to run a model for a specified&#10; amount of time, then ask it to finish() and continue.&#10; &lt;/li&gt;&#10; &lt;li&gt; &lt;i&gt;modelFileOrURL&lt;/i&gt;:&#10; The file name or URL of the model that this actor will execute.&#10; This can be specified either by setting the parameter or by&#10; providing a string at the input port.&#10; &lt;/li&gt;&#10; &lt;li&gt; &lt;i&gt;postfireAction&lt;/i&gt;:&#10; The value of this string attribute determines what happens&#10; in the postfire() method.  The recognized values are:&#10; &lt;ul&gt;&#10; &lt;li&gt; &quot;do nothing&quot; (the default) &lt;/li&gt;&#10; &lt;li&gt; &quot;stop executing&quot; &lt;/li&gt;&#10; &lt;/ul&gt;&#10; The &quot;stop executing&quot; choices will only have an effect if&#10; if &lt;i&gt;executionOnFiring&lt;/i&gt; is set to &quot;run in a new thread&quot;.&#10; This can be used, for example, to run a model for a specified&#10; amount of time, and then stop it.&#10; &lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/p&gt;&#10; &lt;p&gt;&#10; There are currently some limitations:&#10; &lt;ul&gt;&#10; &lt;li&gt;&#10; The referenced model cannot create any displays. Use the subclass&#10; VisualModelReference to do that.&#10; &lt;/li&gt;&#10; &lt;li&gt;&#10; FIXME: Pausing the referring model doesn't pause the referenced model.&#10; &lt;/li&gt;&#10; &lt;li&gt;&#10; FIXME: Need options for error handling.&#10; &lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/p&gt;">
146
            </property>
147
            <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Edward A. Lee, Elaine Cheong">
148
            </property>
149
            <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
150
            </property>
151
            <property name="executionOnFiring (parameter)" class="ptolemy.data.expr.StringParameter" value="The value of this string parameter determines what execution  happens when the fire() method is invoked.  The recognized  values are:  &lt;ul&gt;  &lt;li&gt; &quot;run in calling thread&quot; (the default) &lt;/li&gt;  &lt;li&gt; &quot;run in a new thread&quot; &lt;/li&gt;  &lt;li&gt; &quot;do nothing&quot;. &lt;/li&gt;  &lt;/ul&gt;">
152
            </property>
153
            <property name="lingerTime (parameter)" class="ptolemy.data.expr.StringParameter" value="The amount of time (in milliseconds) to linger in the fire()  method of this actor.  This is a long that defaults to 0L.  If the model is run, then the linger occurs after the run  is complete (if the run occurs in the calling thread) or  after the run starts (if the run occurs in a separate thread).">
154
            </property>
155
            <property name="postfireAction (parameter)" class="ptolemy.data.expr.StringParameter" value="The value of this string attribute determines what happens  in the postfire() method.  The recognized values are:  &lt;ul&gt;  &lt;li&gt; &quot;do nothing&quot; (the default) &lt;/li&gt;  &lt;li&gt; &quot;stop executing&quot; &lt;/li&gt;  &lt;/ul&gt;  The &quot;stop executing&quot; choices will only have an effect if  if &lt;i&gt;executionOnFiring&lt;/i&gt; is set to &quot;run in a new thread&quot;.  This can be used, for example, to run a model for a specified  amount of time, and then stop it.">
156
            </property>
157
            <property name="modelFileOrURL (parameter)" class="ptolemy.data.expr.StringParameter" value="The file name or URL of the model that this actor represents.  This is empty by default, which means that there is no  associated model to execute.">
158
            </property>
159
        </property>
160
        <port name="output" class="ptolemy.actor.TypedIOPort">
161
            <property name="output"/>
162
        </port>
163
    </entity>
164
    <relation name="relation" class="ptolemy.actor.TypedIORelation">
165
    </relation>
166
    <link port="Display.input" relation="relation"/>
167
    <link port="Model Reference.output" relation="relation"/>
168
</entity>
(4-4/4)