How can I implement "continuous screen flow"?


Let me explain on the following work-flow.

[Start]->[Human Task 1]->[Human Task 2]->[End]

Actor setting of [Human Task 1 and 2] are the following.
・Use the actor defined in lane (+Filter: Process Initiator)
Therefore, these 2 tasks are assigned to the same user.
So, I want to make it "continuous screen flow" that is, when the user push [Submit] button on [Human Task 1] form then [Human Task 2] form is displayed to the user.
However, Bonita Platform doesn't behave like that.
When the user push [Submit] button on [Human Task 1] form then the user has to refresh the "To Do" task and pick up the [Human Task 2].
I think this behavior is not comfortable.

I'd be happy if someone could help me.

2 answers

This one is the BEST answer!


You have to come back to the principle of what is a business process. As I say, don't implement a UI issue by a Process nightmare.

The basis of a process is:

when you have 2 tasks, take as a principle the two tasks will be executed by 2 different users

Second principle: you have a delay of 1 day between each task.

Third principle: a task is a Business task.

So, in your situation, you have to think: my "Human Task 1" and my "Human Task 2" are real business tasks? That's mean task 1 will be executed by Walter Bates, and Walter Bates does not care about task 2? Task 2 can be executed by Jan Fisher completely independently?

If the answer is NO, then you have 1 business task.

If the answer is YES, then ... you don't ask this question:-)

So, now let's focus: how can I manage in one task this behavior (2 screens)? With the UI Designer, it's possible, but not easy.

1/ Create two containers. One for each page. So, now you have to decide which container you want to show/hide, correct?

2/ add a button "next page" in the first container. In this button, do a "Add to collection", and give a JSON list "myList"

The point is that you cannot add a JavaScript on a button, which should solve the behavior.

3/ in a "formControler" JavaScript variable, do something like :

var result= { 'showScreen='screen1'


if ($data.myList.size()>0) {

// user clicks on the button !



If you want to have a Previous button, do the same (you can remove an item in the list, or manage with a second list).

Note: you may want to execute some connectors between the two tasks? So in that situation, yes, you may have two business tasks. But keep in mind the logic behind the portal:

Portal manages TASKS.

So, as a User, I have a list of tasks in front of me. When I execute a task, I come back to my list. Is my case will come back again as a new task? Maybe, in the meantime, I focus on tasks and I take a new one.

And the last point: if you really need to implement this behavior as you describe, then you have to develop you own page.

Hope this help


Hi Pierre-yves Monnet,
Your advice helped me a lot. Thank you so much.
Now I understand more clearly about how a task should be.
Yes, "Human Task1" and "Human Task2" should not be two separate tasks.
I will mearge them into a task.

Regarding the tips about show/hiding container, I will try it after that.


Submitted by Pierre-yves Monnet on Fri, 08/28/2020 - 19:37

Thank you for your comment !

Have a good day,