BPMN User substitution : Are we breaking the boundaries?

Vinod Kavinda
Business Process Management (BPM)
2 min readJun 26, 2016

I was involved in discussions on a User Substitution feature for our BPM product (http://wso2.com/products/business-process-server/).

When a user become unavailable (on leave) in a corporate environment, the tasks assigned to him may stale. In the future also new tasks may be assigned to him. Since they are asssigned to this user they will remain until he becomes available.

Solutions?

  1. Keep an expiration time and if certain task is isolated more that that it will be assigned to someone else, or make claimable.
  2. We define a substitute for each user, existing tasks will be reassigned to the substitute and future tasks will be assigned to the substitute while the task creation.

Using the first solution,

  • Will have to keep track of each and every task.
  • Task completions will be delayed unnecessarily.
  • Still require finding a substitute like in second solution.

We chose the second solution for our implementation.

Second solution is straightforward if we know the substitute. But there are few concerns,

Transitive substitute

What if the given substitute also unavailable?

We need to find the transitive substitute by going through our substitution records. Still, this may run into a cycle dependency that we have to handle. This transitivity may change in runtime also since a substitution may start in a scheduled timestamp.

Our implementation will try and find an available substitute by evaluating the transitive substitute.

In my opinion, this is where we are crossing the boundaries. We just changed a particular user’s substitute without his consent. Further, we are calculating the transitive substitute from the available substitute records. There may be more suitable substitute in a practical scenario.

A process engine should be a dumb engine that only knows about processes. It should not know any other HR or Corporate stuff. There should be someone else that instruct the correct substitute.

In my point of view, we should provide an interface/extension point from the process engine to get the substitute if the original substitute is not available. Anything more than that to get a proper substitute is out of the scope of the process engine.

This is obviously arguable. All your responses are welcome!

--

--

Vinod Kavinda
Business Process Management (BPM)

Engineer @WSO2 | Developing the brilliant @ballerinalang | Trying to learn the art of writing here!