Hi,

I have experienced a strange behaviour (for me at least) about the wrapup sequence. Could you please explain me why is this a feature or a bug? The attached workflow example is a Kepler workflow, using the Logger actor, which exploits the documented fact that the wrapup() method will be called at the end of the workflow execution. I use the Logger in several places in the workflow to log into the same file, which is closed in wrapup().

1. Consider the following workflow: (CA for CompositeActor)
   (SDFDirector)
   Ramp -- CA -- CA2 -- Display

where Ramp generates just one element.
Both CA and CA2 logs the value in the same log file, "wrapuptest.log" (i.e. we get two lines).

2. Consider that both CAs have their own SDF director. Still everything works fine, we get two lines in the log.

3. Consider a third composite CAinCA inside CA, which has its own SDF director again, and is limited to iterate only once. Still fine.

4. Replace the top level SDF with PN director. Interestingly, the actors in CA will be wrapped up before CA2 is executed.
Why?
This means, that the Logger closes the file in CA, then opens (and overwrites) it again in CA2.


Thanks for any explanation, Norbert

     Norbert Podhorszki
   ------------------------------------
     University of California, Davis
     Department of Computer Science
     1 Shields Ave, 2236 Kemper Hall
     Davis, CA 95616
     (530) 752-5076
     [EMAIL PROTECTED]
     ----------------------------------
<?xml version="1.0" standalone="no"?>
<!DOCTYPE entity PUBLIC "-//UC Berkeley//DTD MoML 1//EN"
    "http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd";>
<entity name="wrapuptest" class="ptolemy.actor.TypedCompositeActor">
    <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="6.1.devel">
    </property>
    <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={226, 120, 873, 795}, maximized=false}">
    </property>
    <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
    </property>
    <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
    </property>
    <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{309.0, 180.5}">
    </property>
    <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
        <property name="timeResolution" class="ptolemy.moml.SharedParameter" value="1E-10">
        </property>
        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
        </property>
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
            </property>
        </property>
        <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
        </property>
        <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
        </property>
        <property name="_location" class="ptolemy.kernel.util.Location" value="[65.0, 60.0]">
        </property>
    </property>
    <entity name="CompositeActor" class="ptolemy.actor.TypedCompositeActor">
        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:449:1">
        </property>
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.TypedCompositeActor">
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:449:1">
            </property>
        </property>
        <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Actor">
        </property>
        <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#GeneralPurpose">
        </property>
        <property name="semanticType222" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Workflow">
        </property>
        <property name="_location" class="ptolemy.kernel.util.Location" value="[185.0, 145.0]">
        </property>
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={264, 368, 873, 795}, maximized=false}">
        </property>
        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
        </property>
        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
        </property>
        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{300.0, 329.5}">
        </property>
        <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
            <property name="timeResolution" class="ptolemy.moml.SharedParameter" value="1E-10">
            </property>
            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
            </property>
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
                </property>
            </property>
            <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
            </property>
            <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="[30.0, 70.0]">
            </property>
        </property>
        <port name="in" class="ptolemy.actor.TypedIOPort">
            <property name="input"/>
            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="[55.0, 150.0]">
            </property>
        </port>
        <port name="out" class="ptolemy.actor.TypedIOPort">
            <property name="output"/>
            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="[475.0, 135.0]">
            </property>
        </port>
        <entity name="Expression" class="ptolemy.actor.lib.Expression">
            <property name="expression" class="ptolemy.kernel.util.StringAttribute" value="&quot;This is line &quot; + in + &quot; with data &quot; + in2">
                <property name="_hide" class="ptolemy.data.expr.Parameter" value="true">
                </property>
            </property>
            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:75:1">
            </property>
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Expression">
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:950:1">
                </property>
            </property>
            <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#MathOperationActor">
            </property>
            <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#GeneralPurpose">
            </property>
            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="expression">
                </property>
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="60">
                </property>
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="[275.0, 185.0]">
            </property>
            <port name="in" class="ptolemy.actor.TypedIOPort">
                <property name="input"/>
                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
                </property>
            </port>
            <port name="in2" class="ptolemy.actor.TypedIOPort">
                <property name="input"/>
                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
                </property>
            </port>
        </entity>
        <entity name="Logger" class="org.kepler.actor.Logger">
            <property name="logfile" class="ptolemy.data.expr.FileParameter" value="$CWD/wrapup.log">
            </property>
            <property name="header" class="ptolemy.data.expr.StringParameter" value="CompositeActor">
            </property>
            <property name="format" class="ptolemy.data.expr.StringParameter" value="text">
            </property>
            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:509:1">
            </property>
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.kepler.actor.Logger">
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1209:1">
                </property>
            </property>
            <property name="semanticType110" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="[470.0, 210.0]">
            </property>
            <port name="text" class="ptolemy.actor.TypedIOPort">
                <property name="input"/>
                <property name="_showName" class="ptolemy.data.expr.Parameter" value="false">
                </property>
            </port>
            <port name="logfile" class="ptolemy.actor.TypedIOPort">
                <property name="input"/>
            </port>
        </entity>
        <entity name="CAinCA" class="ptolemy.actor.TypedCompositeActor">
            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:449:1">
            </property>
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.TypedCompositeActor">
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:449:1">
                </property>
            </property>
            <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Actor">
            </property>
            <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#GeneralPurpose">
            </property>
            <property name="semanticType222" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Workflow">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="[35.0, 230.0]">
            </property>
            <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={556, 303, 873, 795}, maximized=false}">
            </property>
            <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
            </property>
            <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
            </property>
            <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{300.0, 329.5}">
            </property>
            <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
                <property name="iterations" class="ptolemy.data.expr.Parameter" value="1">
                </property>
                <property name="timeResolution" class="ptolemy.moml.SharedParameter" value="1E-10">
                </property>
                <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
                </property>
                <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
                    <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
                    </property>
                </property>
                <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
                </property>
                <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
                </property>
                <property name="_location" class="ptolemy.kernel.util.Location" value="[115.0, 85.0]">
                </property>
            </property>
            <port name="out" class="ptolemy.actor.TypedIOPort">
                <property name="output"/>
                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
                </property>
                <property name="_location" class="ptolemy.kernel.util.Location" value="[290.0, 190.0]">
                </property>
            </port>
            <entity name="Constant" class="ptolemy.actor.lib.Const">
                <property name="value" class="ptolemy.data.expr.Parameter" value="&quot;D1&quot;">
                </property>
                <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:1:1">
                </property>
                <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Const">
                    <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:877:1">
                    </property>
                </property>
                <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#ConstantActor">
                </property>
                <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
                </property>
                <property name="kar" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:kar:57:1">
                </property>
                <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
                    <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
                    </property>
                    <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
                    </property>
                </property>
                <property name="_location" class="ptolemy.kernel.util.Location" value="[135.0, 190.0]">
                </property>
            </entity>
            <relation name="relation" class="ptolemy.actor.TypedIORelation">
                <property name="width" class="ptolemy.data.expr.Parameter" value="1">
                </property>
            </relation>
            <link port="out" relation="relation"/>
            <link port="Constant.output" relation="relation"/>
        </entity>
        <relation name="relation" class="ptolemy.actor.TypedIORelation">
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
            </property>
        </relation>
        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
            </property>
            <vertex name="vertex1" value="[440.0, 185.0]">
            </vertex>
        </relation>
        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
            </property>
        </relation>
        <link port="in" relation="relation"/>
        <link port="out" relation="relation2"/>
        <link port="Expression.output" relation="relation2"/>
        <link port="Expression.in" relation="relation"/>
        <link port="Expression.in2" relation="relation3"/>
        <link port="Logger.text" relation="relation2"/>
        <link port="CAinCA.out" relation="relation3"/>
    </entity>
    <entity name="Display" class="ptolemy.actor.lib.gui.Display">
        <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
        </property>
        <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
        </property>
        <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
        </property>
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={1016, 153, 428, 217}, maximized=false}">
        </property>
        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
        </property>
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
            </property>
        </property>
        <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
        </property>
        <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
        </property>
        <property name="_location" class="ptolemy.kernel.util.Location" value="[535.0, 145.0]">
        </property>
    </entity>
    <entity name="CompositeActor2" class="ptolemy.actor.TypedCompositeActor">
        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:449:1">
        </property>
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.TypedCompositeActor">
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:449:1">
            </property>
        </property>
        <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Actor">
        </property>
        <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#GeneralPurpose">
        </property>
        <property name="semanticType222" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Workflow">
        </property>
        <property name="_location" class="ptolemy.kernel.util.Location" value="[400.0, 140.0]">
        </property>
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={397, 309, 873, 795}, maximized=false}">
        </property>
        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
        </property>
        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
        </property>
        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{300.0, 329.5}">
        </property>
        <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
            <property name="timeResolution" class="ptolemy.moml.SharedParameter" value="1E-10">
            </property>
            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
            </property>
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
                </property>
            </property>
            <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
            </property>
            <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="{40.0, 80.0}">
            </property>
        </property>
        <port name="in" class="ptolemy.actor.TypedIOPort">
            <property name="input"/>
            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="{50.0, 195.0}">
            </property>
        </port>
        <port name="out" class="ptolemy.actor.TypedIOPort">
            <property name="output"/>
            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="{345.0, 145.0}">
            </property>
        </port>
        <entity name="Logger" class="org.kepler.actor.Logger">
            <property name="logfile" class="ptolemy.data.expr.FileParameter" value="$CWD/wrapup.log">
            </property>
            <property name="header" class="ptolemy.data.expr.StringParameter" value="CompositeActor2">
            </property>
            <property name="format" class="ptolemy.data.expr.StringParameter" value="text">
            </property>
            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:509:1">
            </property>
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.kepler.actor.Logger">
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1209:1">
                </property>
            </property>
            <property name="semanticType110" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
            </property>
            <property name="_location" class="ptolemy.kernel.util.Location" value="{340.0, 220.0}">
            </property>
            <port name="text" class="ptolemy.actor.TypedIOPort">
                <property name="input"/>
                <property name="_showName" class="ptolemy.data.expr.Parameter" value="false">
                </property>
            </port>
            <port name="logfile" class="ptolemy.actor.TypedIOPort">
                <property name="input"/>
            </port>
        </entity>
        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
            </property>
            <vertex name="vertex1" value="[250.0, 195.0]">
            </vertex>
        </relation>
        <link port="in" relation="relation2"/>
        <link port="out" relation="relation2"/>
        <link port="Logger.text" relation="relation2"/>
    </entity>
    <entity name="Sleep" class="ptolemy.actor.lib.Sleep">
        <property name="sleepTime" class="ptolemy.actor.parameters.PortParameter" value="2000L">
        </property>
        <property name="_location" class="ptolemy.kernel.util.Location" value="[300.0, 150.0]">
        </property>
    </entity>
    <entity name="Ramp" class="ptolemy.actor.lib.Ramp">
        <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="1">
        </property>
        <property name="init" class="ptolemy.data.expr.Parameter" value="1">
        </property>
        <property name="step" class="ptolemy.actor.parameters.PortParameter" value="1">
        </property>
        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:5:1">
        </property>
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Ramp">
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:881:1">
            </property>
        </property>
        <property name="semanticType000" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#IterativeMathOperationActor">
        </property>
        <property name="semanticType111" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#IterativeOperation">
        </property>
        <property name="semanticType222" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#WorkflowInput">
        </property>
        <property name="_location" class="ptolemy.kernel.util.Location" value="[70.0, 150.0]">
        </property>
    </entity>
    <relation name="relation2" class="ptolemy.actor.TypedIORelation">
        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
        </property>
    </relation>
    <relation name="relation4" class="ptolemy.actor.TypedIORelation">
        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
        </property>
    </relation>
    <relation name="relation3" class="ptolemy.actor.TypedIORelation">
        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
        </property>
    </relation>
    <relation name="relation" class="ptolemy.actor.TypedIORelation">
        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
        </property>
    </relation>
    <link port="CompositeActor.in" relation="relation"/>
    <link port="CompositeActor.out" relation="relation4"/>
    <link port="Display.input" relation="relation2"/>
    <link port="CompositeActor2.in" relation="relation3"/>
    <link port="CompositeActor2.out" relation="relation2"/>
    <link port="Sleep.input" relation="relation4"/>
    <link port="Sleep.output" relation="relation3"/>
    <link port="Ramp.output" relation="relation"/>
</entity>

Reply via email to