Design feedback process

Hi All,

We have a requirement that once request cam on a user task, user can ask for multiple feedback from multiple user. for instance let say request have came to A, A can ask for feedback from B, C , D. A can do this multiple time till he has not got satisfactory feedback. A can then complete the task and send for approval to E.

Can you please suggest how to design this so that we can achieve above case.

Thanks in advance…

Hi,

Sounds like a great use case for CMMN. With CMMN you could set up discretionary (manually activated) user tasks for feedback…

CMMN detail here…

regards

Rob

Any other way to achieve this by BPMN? We have moderate experience in BPMN and CMNN will be new for us… If there is no way to achieve this through BPMN, how we can start with CMNN considering we are generating BPMN file using fluent api for any custom workflow?

Hi @Anurag_Tripathi,

You can implement it using parallel multiple instance sub-process

https://docs.camunda.org/manual/latest/reference/bpmn20/tasks/task-markers/#multiple-instance

And call activity where the same process model is called from inside the parallel multiple instance sub-process “recursive call”

https://docs.camunda.org/manual/latest/reference/bpmn20/subprocesses/call-activity/

Hi @hassang

I also have such scenario so I have few questions regarding this. Please suggest best approch to achieve the same.

  1. Can parent task will remain Active after calling a Subprocess(feedback)?
  2. Can parent task call Subprocess without completing it.
    
  3. By the time parent task calls Subprocess , i have a scenario to complete parent task while Subprocess is running.

I don’t want to complete current task and have to jump to another tasks(Feedback) . I mean at the same time both Tasks remain active in Task List. Can we achieve it.

@PrashantD
Could you please specify your use case?

Hi @hassang

I have one User Task(Review) .I can ask for feedback to other User Task(s) without completing My Review Task and it can be multiple times. Below is the stepwise details

  1. At first step there is a Reviewer who will review the request.
  2. While reviewing the request Reviewer can as feedback(Feedback Users Tasks) from one or multiple departments.
  3. Once Reviewer receives feedbacks from multiple departments , reviewer can again ask for Clarification of their feedback to those department and this can be multiple times.
  4. When reviewer get satisfactory feedback from other department, Reviewer can Complete their task.
  5. After Revewer complets their Task it will bet sent to Approver to approve it to end the process.

I want Review and Feedback User can see Tasks in their Task List at the same time.

Please advice how can i desgin a BPMN for such Process.

Thanks in Advance.

Can we achieve this scenario using BPMN?

You could create sub processes for each of the requests to other users, then create buttons, on the custom user task form, that will send requests to the subprocesses.

As for getting the feedback after the child tasks are complete, you could set up boundary events/listeners that can notify the initial user and update whatever data you need to update.

Then, once the main user is done, then they can compete the main user task and proceed with the main process.

Thanks @jase52476 for your valuable response.

I created a event sub process for every feedback tasks starting with non-interrupting message event.

Your suggestion will be highly appreciated if something else could be done.

Sorry, I was going to reply right away and got side-tracked. Without knowing all the details, this is just a hypothetical design (you’d need to fill in more details in the processes).

main_proc

If you want to do everything within one task, you’d have to code a custom form (e.g., html with AngularJS, etc.). When the main approver claims the task, you’d have buttons on the form (or drop downs for the dept, etc.). Approver would then type in the feedback instructions/clarification questions, then this would send a request to the sub process using the REST API. You could store the feedback/dialog/notes in an application database and create REST services to access the data to present on the User Task.

Or, you could look into how signals work and create signal events that could update your process variables with the new data from the feedback tasks. I am fairly certain that you can create ascyhronous signal events to communicate with running processes to update information while it’s doing other things in parallel.

The subprocess could also be set up so that it sends an e-mail (or any other type of notification you’d have) to the approver when their feedback is completed, then the approver would go back into the task and see the information.

Also, please note that these are separate processes (separate BPMN). You can call the processes via RESTAPI using a regular Java class (or whatever you use). You can send the data to initialize the tasks as JSON, XML, or whatever you want. That way you can re-use the sub process for the feedback/clarification as a generic task and send in the department info on the request (alternatively, if the departments would have different tasks, you could make different processes or do some sort of exclusive gateway and have a condition for the different departments. However, it’s nice to use separate processes so you can change the bpmn independently from the others.

Thanks @jase52476 ,

  I used rest api to call subprocess starting with message event and it worked.

Thanks again !!!

No problem, glad it worked out for you. Also, I don’t know if you knew this, but to call a separate BPMN from a parent BPMN, you can convert a standard task to a “Call” task. There you can run subprocesses individually, in parallel, or sequentially (the latter two use Maps to call the subprocess for each element in the map). This is nice if you want the main process to call and wait on the subprocess to complete w/o using messaging, etc.

Your use case seemed to call for 1 human task that stays open until 1 to many subprocesses are completed (and also interactive with the main user), so the REST API is the best fit for this situation.

As far as I can see, Discretionary tasks aren’t supported yet by Camunda (https://docs.camunda.org/manual/7.6/reference/cmmn11/). You could use Entry Criterion as a gate to whether the task is created initially though…

Hi Steve,

Yes - what I meant by discretionary tasks was manually activated, thus activated at the discretion of the ‘knowledge worker’

regards

Rob

1 Like