How to implement a process where a certain task can be paused and resumed later on



I have a scenario where I have designed a task for a group.Anyone from the group can pick the task and perform it.
Now , the scenario is that the person acting on the task needs to go and collect feedback from third party vendors offline and needs to submit the information in the Task.
To adhere to regulated time frame / SLA , I have put a timer on the task and preset the timer to 2 days.
Essentially the task must be completed within 48 hours.
Now the feedback from the third party vendor can take time. It may take upto 2 weeks to gather all the information.
During this time , the timer count should not be taken into account.
The timer count should be considered only once the feedback from the Vendor is received .
The actor performing the task should have an option to pause the timer and then later resume it once he has the necessary information.
Could this be achieved ? Also we need to consider Saturday and Sunday outside SLA as they are holidays.

How do i go about implementing this ? I am using Bonita Subscription 7.3.0

I tried assuming that if the task is with the group , then timer will not start. Only when the task is assigned to individual person, should the count start. This way , the actor can first gather the required information from the vendor and then pick the task.
But in doing so , I am giving them the opportunity to violate the 48 hour window. They would always take advantage of the fact that its lying with the group (open) and not take it unless they feel so.
This would not make them adhere to the SLA which needs to be implemented.

Any suggestions would be welcome . I am stuck logically .
Any other way to implement the same but without TImer or boundary conditions ?


1 answer


Here is my take on the problem,

I am going to call it a Request for Proposal (RFP) process as it's similar to one we already have:

It is made of three tasks:

1) the preliminary tasks (us)
2) the data gathering tasks (them)
3) the action tasks (us)

This will require a minimum of two pools in the process, one for each Actor (us and them)

Obviously we only have control over 1 and 3, but we also need to monitor 2 giving us a problem...a this is not a fixed time it could be one day or 14 days.

This is what messaging and signalling are all about, and there are many ways to implement this so think about what you need and how it will interact with your systems. Here is a possible method:

1) I do my RFP preliminary tasks
2) the end of the RFP preliminary Starts the Vendor data gathering Process with Message (that will be assigned to vendor actor, therefore still visible to administrators, but not the task doer)
3) the RFP falls into hibernate mode waiting for a message back from Vendor process
4) the Vendor data gathering Process must have a "failure to deliver timer" on it that can feedback to your RFP process
5) the end of the Vendor data gathering Process messages back to the RFP process and starts the RFP action tasks where your 2 day timer resides

Technically you would implement this as follows:

add two pools myPool and vendorPool

In myPool after step1 add Int. Message Event
In vendorPool add Start Message Event
Click myPool Int. Message Event and General->Messages-Add
give it a name select vendorPool and then select the Start Event-> Finish
In vendorPool add End Message Event, link to Start (you can fill in the tasks later)
In myPool add Start Message Event
Click vendorPool End Message Event and General->Messages-Add
give it a name select myPool and then select the Start->Finish

That will allow you to see how it fits together and test it accordingly. Note - I've not tested this but it's what we do.

Here are some references for you to look at,


PS: As this reply offers an answer your question, and if you like it, please Mark UP and/or as Resolved.


Submitted by Dibyajit.Roy on Mon, 05/29/2017 - 08:38

Thank you Sean for your Feedback.
This is helpful.