Products

Products are cost-drivers, since the number of your executed processes depends on the number of products handled. A process definition can deal with a set of products, while a process instance deals with exactly one product or is completely product-neutral. Determining which process instances deal with which products allows a product-based costing allocation.

Alternatively to the straightforward 'one instance for one product' approach as descriped above, you can also use another approach for e.g. production processes, where one product is continuously transferred to another over the product chain. By transferring a product to another and not simply changing it, it retains the booked costs and times across the production chain (product history). To achieve this, you can use the methods Transform and Take.
Changing a product, as described in the Python Scripts section, is without history.

Defining products

Create an organigram do define your products. Change the element type of the organigram 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.

NewItem893
Figure 1. 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 a drop-down box, whose default is 'default'.

At a start event, 'default' means that the entire process will be product-neutral. (Of course, this only applies as long as the product is not changed / transformed via script.) If a product is set at a start event, the entire corresponding process will deal with that product. Set one interarrival time for each product which is processed in that process.

NewItem894
Figure 2. 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 3 (be sure using simulation property set).

NewItem895
Figure 3. 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 expression checks whether the current product is "RubberDuckYellow":

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'