© 2022 (CC BY) Gerd Wagner, Brandenburg University of Technology, Germany.
This modeling problem has been posted by Noorjax Consulting as their AnyLogic Contest #2.
A common process in any warehouse is the transport of objects with the help of forklifts driven by operators. In this type of process, operators are trained to handle certain types of forklifts, which, in turn, are designed to transport certain types of items.
There are 4 locations/areas of interest: the product arrival area, the operators' home location, the forklifts' home location and the destination area.
The process consists of the following steps:
You can inspect the model's OESjs code on the OES GitHub repo.
A company's forklift transport operation has resource pools for forklifts (FLs) and their operators. The seven activities Walk to FL, Drive FL to arrival area, Load product, Transport product, Unload product, Drive FL back to arrival area and Drive FL home require both a forklift and an operator) as a resource, while Walk back home activities require only an operator.
The potentially relevant object types are:
Potentially relevant types of events and activities (and the types of objects that participate in them) are:
Both object types and event types, together with their participation associations, can be visually described in a conceptual information model in the form of a UML class diagram.
The types of events and activities listed above can be related with each other via event scheduling arrows, as shown in the following DPMN process diagram:
Notice how Drive FL home and Walk back home activities can be preempted when a new product arrives and no suitable forklift/operator combination is available.
Notice also that no activity node in this model needs a task queue, since their required resources are already allocated by their predecessor node. Consequently, no resource-dependent activity scheduling arrows are used in the diagram.
In the information design model, we need to define a status attribute for all resource object types, such as Forklift and Operator, and a duration function for each activity type:
Notice how functions representing random variables, like the duration
function of all activity types,
are marked with the keyword (or UML 'stereotype') «rv» standing for "random variable". These random variable functions
sample from a probability distribution function (PDF), which is symbolically indicated with expressions like
Tri(30,50,40) standing for the triangular PDF with lower and upper bounds 30 and 50, and a median of 40.
In the process design model, we need to specify the state changes and follow-up events caused by events, including activity start and end events, and the constructor arguments for scheduling follow-up events, using model variables (possibly referencing resource pools), as shown in the following DPMN diagram:
The JavaScript-based simulator OESjs Core 2 implements the Activity Networks modeling language of the Object Event Simulation paradigm, and, consequently, allows a straight-forward coding of OE class models and DPMN process models.
For implementing the information design model, we have to code all object types, event types and activity types specified in the model in the form of classes.
A DPMN process design model can be decomposed into a set of event rule design models, one for each type of event specified in the design model.