The EntityProcessor simulates multiple parallel servers that share the same queue. The servers are assumed to have exactly the same characteristics, which makes them interchangeable.
The Capacity input specifies the number of parallel servers.
The WaitQueue input identifies the Queue from which the entities are drawn for processing.
The optional ResourceList and NumberOfUnits keywords determine whether additional resources need to be seized before processing can begin. All the resource units must be available before the next entity can be removed from the WaitQueue. The resource units are seized simultaneously.
When the processing of an entity is completed, its resources are released, the entity is sent to the object specified by the NextComponent input.
The operation of an EntityProcessor can be stopped by threshold closures, scheduled maintenance, and by breakdown events as controlled by the inputs to its various Threshold, Maintenance, and Breakdown keywords.
The ReleaseThresholdList input works for EntityProcessor in the same way that it works for Server. When a threshold in the list closes, each of the EntityProcessor's units continues to work until the entity being processed is ready to be released and has returned any resources it had seized, at which point the unit is halted. The other units continue to work until they too are ready to release their entity. When the threshold re-opens, all the waiting entities are released at the same time.
Normally, an EntityProcessor picks the first object from its queue for processing. However, it is possible to select any of the other objects in the queue using the Match, SelectionCondition, and NextEntity keywords. These inputs can be used separately or together to specify the objects that are eligible to be selected.
EntityProcessor Inputs
Keyword |
Description |
Key Inputs |
|
Description |
A free-form string describing the object. |
NextComponent |
The next object to which the processed entity is passed. |
WaitQueue |
Queue from which the next entity for processing will be selected. If an expression is entered that can return various Queues, it is necessary for each Queue to be included in the entry to the WatchList keyword. If a Queue is not included, then the arrival of an entity to that Queue will not wake up this processor. |
Match |
An expression returning a string value that determines which of the queued entities are eligible to be selected. If used, the only entities eligible for selection are the ones whose inputs for the Queue's Match keyword are equal to value returned by the expression entered for this Match keyword. Expressions that return a dimensionless integer or an object are also valid. The returned number or object is converted to a string automatically. A floating point number is truncated to an integer. Note that a change in the Match value does not trigger the processor automatically to re-check the Queue. The processor can be triggered by adding one or more objects to the WatchList input. |
SelectionCondition |
An optional expression that tests whether an entity in the queue is eligible to be processed. The expression should return 1 (true) if the entity is eligible. The entity chosen for processing is the first one in the queue that satisfies both the SelectionCondition expression and the Match value (if specified). Unlike the Match value, which must be specified when an entity first enters the queue, the SelectionCondition is evaluated when an entity is to be removed from the queue. Consequently, a SelectionCondition is more flexible than a Match value, but is significantly less efficient. |
NextEntity |
An optional expression that returns the next entity to be removed from the queue. No entity is removed if the expression returns null or the entity is not present in the queue. To be removed, the entity must also satisfy the Match and SelectionCondition inputs if these are entered. |
WatchList |
An optional list of objects to monitor. The queue will be inspected for an entity to process whenever one of the WatchList objects changes state. |
ResourceList |
The Resources from which units are to be seized. All the resource units must be available to be seized before any one unit is seized. When more than one object attempts to seize the same resource, the resource is assigned based on the priorities and arrival times of entities waiting in the objects' Queues. An entity's priority is determined by the Priority input for its Queue, and is assigned to the entity when it first arrives to the Queue. This priority determines both the position of the entity in the queue and its priority for seizing a resource. If several entities have the same priority, the resource is assigned to entity that arrived first to its Queue. |
NumberOfUnits |
The number of units to seize from the Resources specified by the ResourceList keyword. The last value in the list is used if the number of resources is greater than the number of values. Only an integer number of resource units can be seized. A decimal value will be truncated to an integer. |
Capacity |
The maximum number of entities that can be processed simultaneously. If the capacity changes during the simulation run, the EntityProcessor will attempt to use an increase in capacity as soon as it occurs. However, a decrease in capacity will have no effect on entities that have already started processing. |
ServiceTime |
The service time required to process an entity. |
Options |
|
AttributeDefinitionList, CustomOutputList |
See Section 6.2. |
StateAssignment |
The state to be assigned to each entity on arrival at this object. No state is assigned if the entry is blank. |
Thresholds |
|
ImmediateThresholdList, ImmediateReleaseThresholdList, OperatingThresholdList, ReleaseThresholdList |
See Section 10.1. |
Maintenance |
|
WorkingStateList, ImmediateMaintenanceList, ForcedMaintenanceList, OpportunisticMaintenanceList, ImmediateBreakdownList, ForcedBreakdownList, OpportunisticBreakdownList |
See Section 10.2. |
Format |
|
StateGraphics |
A list of state/DisplayEntity pairs. For each state, the graphics will be changed to those for the corresponding DisplayEntity, e.g. { Idle DisplayEntity1 } { Working DisplayEntity2 } |
ProcessPosition |
The position of the entity being processed relative to the processor. |
Graphics |
|
Position, Alignment, Size, Orientation, Region, RelativeEntity, DisplayModel, Show, Movable, VisibleViews, DrawRange |
See Section 11.1. |
EntityProcessor Outputs
Output Name |
Description |
Entity and DisplayEntity |
|
Name, ObjectType, SimTime, Parent, Position, Size, Orientation, Alignment, GraphicalLength, ObserverList, NextList, PreviousList, EntityReferenceList |
See Section 11.1. |
StateEntity |
|
State, WorkingState, WorkingTime, StateTimes, TotalTime |
See Section 10.3. |
StateUserEntity |
|
Idle, Working, Setup, Maintenance, Breakdown, Stopped, Utilisation, Commitment, Availability, Reliability, Open, NextMaintenanceTime, NextBreakdownTime |
See Section 10.2. |
LinkedDevice |
|
obj, NumberAdded, NumberProcessed, NumberInProgress, ProcessingRate, ReleaseTime |
See Section 16. |
LinkedService |
|
MatchValue |
The present value to be matched to an entity in the queue. |
EntityProcessor |
|
Capacity |
The present number of entities that can be processed simultaneously. |
UnitsInUse |
The present number of capacity units that are being used. |
EntityList |
The entities being processed at present. |
RemainingTime |
The remaining processing time for the entities being processed at present. |
User-defined attributes and custom outputs |
As defined by the AttributeDefinitionList and CustomOutputList inputs. |