Characteristics of such ad-hoc processes include:
- Some activities in the process might or might not need to be executed
- Some activities might be repeated more than once
- The order in which the activities need to be executed is not (always) described
- Not all activities are always connected, sometimes resulting in several process fragments
- The process (engine) does not (solely) decide what activities need to be executed, but this is rather decided by either:
- the end user that selects which tasks he wants to execute
- external events that might trigger certain tasks
- the available data related to that process instance that defines what to do next
- the end user that selects which tasks he wants to execute
Note however that these processes are still very similar to traditional processes in many ways, as the user still expects the same logging, management and monitoring capabilities, etc.
For example, the following screenshot shows an ad-hoc process that allows users of some social networking site (like facebook) to upgrade to the latest version. Imagine this requires the user to migrate their profile, data, contacts, etc. to the new platform. An upgrade process would offer these possibilities to the end user, but the end user would decide what to perform during the upgrade (as he might not want to migrate all data for example). The order in which these tasks are performed is also up to the user. And some tasks might even be performed multiple times (like updating your preferences if you're not yet happy).
(Click for larger image)

Drools Flow allows you to describe semi-structured processes like this, using an ad-hoc sub-process. And because the Drools project has the unique feature of combining business processes with business rules and event processing, this allows you to combine the following possibilities at runtime:
- End users can decide what tasks to execute by signaling the engine
- Rules can automatically trigger certain tasks based on the data related to this case (see below for an example)
- Event processing rules can process low-level events and if necessary also trigger additional tasks
- Imagine that the preferences allow you to specify that you want to automatically synchronize your LinkedIn contacts as friends on this site. This could then be achieve adding a rule that automatically signals the Import task with the relevant data whenever this preference is selected.
- A rule could even be used to fully automate this whole upgrade process (updating the profile, preferences, data, etc. automatically) if the user has specified that he always wants to upgrade to the latest available version in his preferences.
Thank you, I'm just impressed by such a short but truly imformative article for me. Would it be possible to have it as a part of: -comparison of jBPM and Drools; - Drools introduction. Recalling all my jBPM experience, I'd say the most problems were not writing business rules by Java, but rather structuring naturally not structured business processes.
ReplyDelete