The ISA95JobOrderReceiverObjectType contains methods to receive job order commands and optional definitions of allowable job order information as illustrated in Figure 4.
Figure 4 – Job Order Receiver Object Type Methods and Data
In addition, it provides information about the StateMachine of the job orders managed by instances of the ObjectType. As the job orders are not represented as Objects in the AddressSpace, but just as structured values, this ObjectType only provides the meta data of the StateMachine. It may be subtyped to add additional substates.
In Figure 5, an overview of the states is given. Note that this ObjectType does not define the substates of NotAllowedToStart, AllowedToStart, Ended and Interrupted. This is done in the ISA95JobOrderStateMachineType, defined in 6.2.2. The dotted states and transitions are not represented in the StateMachine at all. They express how job orders are added and removed from the system (InitialState and EndState and their transitions) and a logical state (Prepared) which is always exposed by its subtypes NotAllowedToStart and AllowedToStart.
Figure 5 – States of a Job Order
A job order is added to the system by calling the Store or StoreAndStart Method defined on the ISA95JobOrderReceiverObjectType or by some internal mechanisms. Afterwards, the job order is in the state NotAllowedToStart or AllowedToStart. In both states, the job order is not executed. Using the Update Method, the job order may still be changed. Calling the Start Method switches the state from NotAllowedToStart to AllowedToStart, and calling RevokeStart vice versa.
When a job order is in the state AllowedToStart, the system may automatically start the job order depending on available recourses and priorities in case several job orders are in the same state. If the AllowedToStart state provides substates, they may indicate if a job order can be started (e.g. Waiting indicates that it cannot be started).
When the job order starts to be executed, it switches its state to Running.
Clients may interrupt a running job order by calling the Pause Method. The system may also automatically interrupt the job order. In both cases, the state switches to Interrupted. Substates may indicate if the interruption was triggered from external (Suspended) or automatic (Held).
Clients may resume the execution of an interrupted job by calling the Resume Method, or the system may automatically continue. In both cases, the state switches back to Running.
A job order may be aborted by calling the Abort Method. This can be done while the job order is running, interrupted or not even started (AllowedToStart and NotAllowedToStart). In all cases, the state switches to Aborted.
When the job order was executed, it automatically switches in the state Ended. Substates of Ended may expose whether some postprocessing needs to be done before receiving the final results of the execution.
Some job orders may not be defined to finish its execution automatically. In addition, some job orders may get stopped before the planned amount of the job order is produced. In both cases, the Stop Method is called to end the execution of the job order. This can either be done while in Running or in Interrupted. In both cases, it switches into Ended.
When the job order is either Aborted or Ended, the job order may be deleted from the system by calling the Clear Method. This is typically done by a specific Client after the Client has received the final results of the job order execution.
A job order that has not been started (AllowedToStart or NotAllowedToStart) may be removed from the system before execution by calling the Cancel Method.