The 4-Eyes principle is the term used when you want to ensure that a task is approved by more than one person. This is needed in Oracle BPM approval processes to exclude previous participants from approving tasks in a process that they had approved upstream in a process.  

The purpose of this blog is to explain how this is done differently in Oracle BPM 12c processes than it was in 11g (Marcel van de Glind wrote an outstanding blog on how to prevent the previous participant from approving the same task in Oracle BPM 11g).  

In this example even though the two activities are assigned to the same role, the business wants any user that approves a task in the “First User Task” activity not to be able to approve tasks in the “Second User Task” activity. 

Process with two user activities

 

In both releases Oracle BPM 11g and 12c, this can be accomplished when the human task is initially created by checking the “Exclude previous participants” checkbox.

Exclude previous participant as human task is initially created

 

The problem is when you try to set this property after the human task has already been created.  In 12c, in order to exclude the previous approver of a task from approving the same task downstream, open the downstream human task (“SecondUserTask” in this example) -> click the “Assignment” tab -> click “Early Completion” (I’d agree that “Early Completion” is a strange place to have placed this property).

Human Task Early Completion

In the Early Completion dialog, check the “Exclude previous participants” checkbox.

Exclude previous participant checkbox to enable 4-eyes

After deploying the project, you are initially going to think this is not working.  The reason is the user who approved the task initially in the first activity will still be able to see the task in the second activity downstream.  Here are the actions that the user has available for tasks in the first activity in the process.

Approval actions in first activity

Once approved, the same user will still see the task in the second activity in the process (the one that they were supposed to be excluded from).

The excluded user still sees the task in their inbox

If you select the instance in the second activity, however, you see that that user is no longer able to approve the task when the “Actions” button is selected in the Workspace.

The user is no longer able to approve the task in the second activity

Download the exported project used in this example from here.