Class SequenceDirector

  • All Implemented Interfaces:
    java.lang.Cloneable, Executable, Initializable, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
    Direct Known Subclasses:
    VisualSequenceDirector

    public class SequenceDirector
    extends SequencedModelDirector
    A director that executes actors in a sequence explicitly specified by the model. Actors are required to either contain an instance of SequenceAttribute or to be upstream of an actor that contains an instance of SequenceAttribute. Each SequenceAttribute contains a unique integer that specifies the position in the sequence for the actor. This director will sort the list of actors that contain a SequenceAttribute according to these integers, and fire them in order. Before each firing, it will also fire any upstream actors actors that do not contain an instance of SequenceAttribute. FIXME: In what order are those actors fired? FIXME: What if the upstream actors do contain a SequenceAttribute? FIXME: If an actor is upstream of two actors with SequenceAttribute, does it fire twice in an iteration? Are it's output valued queued?

    The SequenceDirector computes the sequenced actors and passes these in two lists to the SequenceScheduler (one list for independent sequenced actors, and one list for sequenced actors that are dependent on other actors e.g. control actors) Please see SequencedModelDirector for more details on how the schedule is computed.

    Since:
    Ptolemy II 10.0
    Version:
    $Id$
    Author:
    Elizabeth Latronico (Bosch), rrs1pal
    Pt.AcceptedRating:
    Red (beth)
    Pt.ProposedRating:
    Red (beth)
    • Constructor Detail

      • SequenceDirector

        public SequenceDirector()
                         throws IllegalActionException,
                                NameDuplicationException
        Construct a director in the default workspace with an empty string as its name. The director is added to the list of objects in the workspace. Increment the version number of the workspace. The SequenceDirector will have a default scheduler of type SequenceScheduler.
        Throws:
        IllegalActionException - If the name has a period in it, or the director is not compatible with the specified container.
        NameDuplicationException - If the container already contains an entity with the specified name.
      • SequenceDirector

        public SequenceDirector​(Workspace workspace)
                         throws IllegalActionException,
                                NameDuplicationException
        Construct a director in the workspace with an empty name. The director is added to the list of objects in the workspace. Increment the version number of the workspace. The SequenceDirector will have a default scheduler of type SequenceScheduler.
        Parameters:
        workspace - The workspace for this object.
        Throws:
        IllegalActionException - If the name has a period in it, or the director is not compatible with the specified container.
        NameDuplicationException - If the container already contains an entity with the specified name.
      • SequenceDirector

        public SequenceDirector​(CompositeEntity container,
                                java.lang.String name)
                         throws IllegalActionException,
                                NameDuplicationException
        Construct a director in the given container with the given name. The container argument must not be null, or a NullPointerException will be thrown. If the name argument is null, then the name is set to the empty string. Increment the version number of the workspace. The SequenceDirector will have a default scheduler of type SequenceScheduler.
        Parameters:
        container - Container of the director.
        name - Name of this director.
        Throws:
        IllegalActionException - If the director is not compatible with the specified container. May be thrown in a derived class.
        NameDuplicationException - If the container is not a CompositeActor and the name collides with an entity in the container.
    • Method Detail

      • fire

        public void fire()
                  throws IllegalActionException
        Iterating an actor involves calling the actor's iterate() method, which is equivalent to calling the actor's prefire(), fire() and postfire() methods in succession. If iterate() returns NOT_READY, indicating that the actor is not ready to execute, then an IllegalActionException will be thrown. The values returned from iterate() are recorded and are used to determine the value that postfire() will return at the end of the director's iteration.

        This method may be overridden by some domains to perform additional domain-specific operations.

        Specified by:
        fire in interface Executable
        Overrides:
        fire in class Director
        Throws:
        IllegalActionException - If any actor executed by this actor return false in prefire.
        InvalidStateException - If this director does not have a container.
      • preinitialize

        public void preinitialize()
                           throws IllegalActionException
        Preinitialize the actors associated with this director and compute the schedule. The schedule is computed during preinitialization so that hierarchical opaque composite actors can be scheduled properly. In addition, performing scheduling during preinitialization enables it to be present during code generation. The order in which the actors are preinitialized is arbitrary.
        Specified by:
        preinitialize in interface Initializable
        Overrides:
        preinitialize in class SequencedModelDirector
        Throws:
        IllegalActionException - If the preinitialize() method of one of the associated actors throws it.