Products are cost-drivers, since the number of your executed processes depends on number of products handled. A process definition can deal with a set of products, while a process instance deals with exactly on product or is completely product-neutral. Determining which process instances deals with which products allows a product-based costing allocation.
Defining products
Create a organigram do define your products. Change the element type of the orgaingram element to 'Product' and give your product a name. Be sure that the organigram is part of your BPI project. If you once have declared your products, you can use them inside your collaboration diagrams.
Figure 7: Organigram with products
Start-events
The products defined in the organigram will appear in the time editor for events and activites. In the upper right there is drop-down box, which's default is 'default'
At a start-event 'default' means, that the whole process will be product-neutral. If a product is set at a start-event, the whole corresponding process will deal with that product. Set one interarrival-time for each product which is processed in that process.
Figure 8: Time-Editor with drop-down box to set product specific paramateres
Activites
Once a process processes a specific element, the duration of activities may differ corresponding to the current product. That's why you can set a specific duration for each product used in a process. If there are no specific duration parameters for a current product, the 'default' duration parameters will be used.
Gateways
Decision making at splitting exclusive or inclusive gateways may depend on the current product. You either can use python scripts (see next subsection) or product-dependent probabilities. Select a seqence link after an splitting gateway and click on 'Probability' in the property editor to open the window showed in figure 9 (be sure using simulation property set).
Figure 9: Setting different probabilities for each product and sequence links behind splitting exclusive or inclusive gateways
Python Scripts
You can access the current product of a process instance within Python scripts, e.g. the following conditions, checks whether the current product is "RubbeDuckYellow":
SimulationContext.Product=='RubberDuckYellow'
The following expression shows how to set a product with help of python scripts within an already running process instance.
SimulationContext.Product='RubberDuckRed'