In the release of Oracle BPM 184.108.40.206, Oracle promised us to give the Alter Flow option. This piece of functionality allows Process Owner to intervene and change task and data objects during runtime. This will give a lot more flexibility to manage the process without having to call in the technical guys.
There’s one tricky part with intervening in the run time behavior of a process, and that is compliance. Make sure your solution covers the compliance regulations by the regulatory department, including the option of intervening in the process. Looking at the current implementation of the Alter Flow option some compliance risks occur, which call for extra security measures and reporting facilities related to this functionality in the next release.
The business case
The BPM workspace environment is where you achieve doing your day-to-day work. But what if something goes wrong in the process? Start the alternative flow! But the finance guy objects: we cannot build 300 alternative flows, there is simply not enough money to waste.
Now let’s look at how the Suspend and Alter flow handles such situations and how you can save money using this piece of functionality when using it combined with error handling.
Suspend and Alter flow is granted by having the Process Owner roll, which comes standard with each process.
I have created an example process, as you can see below.
In this example I will use a simple flow with 3 human tasks and a Service task, which writes the user data to the database. But you can imagine that in real life the processes can be bigger and contain a lot more complexity compared to what I’ve used here.
The start error event is set to catch all systems exceptions.
Suspend and alter flow
With this option the process owner now has full capabilities to pick up tasks, change outcomes and data objects just like he was used to in the paper-age.
The process owner can use the Suspend and Alter flow capabilities to move the process instance back and forward as he likes. From the Process Tracking tab, select the correct process instance and choose Alter Flow & Suspend from the Actions Menu. As you can see the process owner has full control over the flow and its data objects.
Select the new Activity and alter any payload details as needed. Press Resume to continue with the process.
Combined with Error Handling
When you combine the Suspend and Alter flow with error handling, you will see it is even more powerful.
The process is started and has progressed the process to the point where the Service task is going to write the information into a database table. An error will be raised here (I have changed the schema password after deployment).
Now in the old situation we would have to get a technical person to fix the database issue and restart the process plus copy any payload, which already may have been entered by users earlier on in the process.
He may achieve this by sending an XML file, or even manually starting the process and typing in the data.
This is uncalled for; the only thing that he is responsible for is the database part. He does not want to involve in the process, and even less in the details of the payload.
In this situation I have connected the SendTask activity to the RestartProcess start message event and configured it so that the payload from the original process is copied to the new instance.
The process owner can use the Suspend and Alter flow capabilities to move the process instance back to where it belongs. From the Process Tracking tab, select the correct process instance and choose Alter Flow & Suspend from the Actions Menu. As you can see the process owner has full control over the flow and its data objects.
The technical guy fixes the database and the process owner can worry about the process instance(s).
Intervening in a process on run time has certainly added value, such as intervening in an exception situations or handling issues with a process in-flight, which needs a one-off change. The down side of having this functionality available is that you’re able to change the process outcomes in a non-compliant way. For instance we’re dealing with an expenses process. An expense request runs for John Bear for 1000 Euros, a big friend of the process owner Frank Raud. The expense department manager just approved this process instance. Now the process owner can move the process instance directly to the payment step, and at the same time, change the amount to 2000 Euros, without any approval. This example shows that there are cases where care needs to be taken with Altering a run time instance of a process.
Standard, out-of-the-box, Suspend and Alter flow is allowed only by the Process Owner, however this behavior cannot (as far as I’m able to find) be un-selected within Oracle BPM. The BPM Inbox offers functionality to give insight in the process flow. As shown below you can see that a process instance has been moved to another step and that the data was changes. Another however, we’re not able to see what has been changed.
Human Tasks, as part of Oracle BPM, have the option to send out events whenever something happens to such a task (see blog “Measuring the Human Task activity in Oracle BPM”) I’ve not been able to find a clear relation to the Alter flow activity in the created events.
This means that it’s hard for the Company controller to find Alter Flow activities as executed by the Process owners, except for strolling through all the process instances. When dealing with large amount of process executions this hardly is possible.
From a controlling perspective a couple of requirements exist with respect to the Alter Flow when dealing with sensitive processes:
- A fined grained security level on Alter flow functionality, such as segregation of duties (four-eyes principle), in high risk areas of the process, for instance after the approval of a manager.
- Better support for compliance auditing with respect to Alter functionality
- Disallow Alter Flow for some specific processes.
Martijn van der Kamp, Oracle BPM Implementation specialist
Léon Smiers, Solution Architect and Oracle BPM Thought Leader for Capgemini