Friday, December 22, 2006

BPM and Simulation... are we there?

A new feature of BPM-suites is the possibility to simulate.While playing around with IBM's tool and Savvion, i started wondering about the real requirements for simulation.Having a background in Simula simulations (a, somewhat legacy, programming language for simulations, which, by the way tought me OO thinking in a really good way!), I am disappointed about the features of the current simulation engines....

Some stuff that I miss, and was not able to get going:

Working days and working hoursFor realistisch throughput and cycle time, especially in financial organizations, it is essential to be able to model workingtime (9:00 - 17:00) and working days (no weekend, no vacation days).

Timed batchesThe possibility to define a batch. A process instance comes to a certain point, and then needs to wait for the nightbatch to continue. The batch can be modelled as a resource, that will execute one of more tasks from the process instance (but then I need to be able to allocate a resource availability!). After these steps, again, the process should wait until the next working day, to continue...

Process instance allocation of a shared resourceIn certain processes, there are resources that have their own schedule and maximum size.As an example - let's assume we have a process that produces plates. Plates need to be painted (activity by a resource), and then placed in a drying room. A drying room has a certain capacity, and will take up to X plates (aka process instances, each for a certain plate). Again, I need to feature to model this resource, that is able to pickup a set of process instances, execute an activity (dry) in each of them, and then release them....

Grouping of process instances based on certain shared elementsFactories usually have production schedules, where certain tasks are combined (first we do all the products XYZ, then ABC), to minimize machine setup and improve efficiency/focus. Again, where is the possibility to do this.

Machine maintenance and setupIn more factory setting processes, we will have machines (resources), that will need setup time (when processing a certain process instance that is for a new type of product). And these machines need maintenance, leading to downtime. So, when triggered for use, a resource as a machine, should be able to take out time from the waiting process instances, due to setup time and maintenance time.

More advanced resource selection and allocationAll types of features to be able to select resources (people, machines) based on business rules, driven by (random) data in a process instance (type of product, level of investment, etc)....