8686 * @OA\Property(property="self_service_tasks", type="object"),
8787 * @OA\Property(property="signal_events", type="array", @OA\Items(type="object")),
8888 * @OA\Property(property="category", type="object", @OA\Schema(ref="#/components/schemas/ProcessCategory")),
89- * @OA\Property(property="manager_id", type="integer", format="id"),
89+ * @OA\Property(property="manager_id", type="array", @OA\Items(type=" integer", format="id") ),
9090 * ),
9191 * @OA\Schema(
9292 * schema="Process",
@@ -589,7 +589,7 @@ public function collaborations()
589589 * Get the user to whom to assign a task.
590590 *
591591 * @param ActivityInterface $activity
592- * @param TokenInterface $token
592+ * @param ProcessRequestToken $token
593593 *
594594 * @return User
595595 */
@@ -613,14 +613,14 @@ public function getNextUser(ActivityInterface $activity, ProcessRequestToken $to
613613 if ($ userByRule !== null ) {
614614 $ user = $ this ->scalateToManagerIfEnabled ($ userByRule ->id , $ activity , $ token , $ assignmentType );
615615
616- return $ this ->checkAssignment ($ token ->processRequest , $ activity , $ assignmentType , $ escalateToManager , $ user ? User::where ('id ' , $ user )->first () : null );
616+ return $ this ->checkAssignment ($ token ->processRequest , $ activity , $ assignmentType , $ escalateToManager , $ user ? User::where ('id ' , $ user )->first () : null , $ token );
617617 }
618618 }
619619
620620 if (filter_var ($ assignmentLock , FILTER_VALIDATE_BOOLEAN ) === true ) {
621621 $ user = $ this ->getLastUserAssignedToTask ($ activity ->getId (), $ token ->getInstance ()->getId ());
622622 if ($ user ) {
623- return $ this ->checkAssignment ($ token ->processRequest , $ activity , $ assignmentType , $ escalateToManager , User::where ('id ' , $ user )->first ());
623+ return $ this ->checkAssignment ($ token ->processRequest , $ activity , $ assignmentType , $ escalateToManager , User::where ('id ' , $ user )->first (), $ token );
624624 }
625625 }
626626
@@ -665,7 +665,7 @@ public function getNextUser(ActivityInterface $activity, ProcessRequestToken $to
665665
666666 $ user = $ this ->scalateToManagerIfEnabled ($ user , $ activity , $ token , $ assignmentType );
667667
668- return $ this ->checkAssignment ($ token ->getInstance (), $ activity , $ assignmentType , $ escalateToManager , $ user ? User::where ('id ' , $ user )->first () : null );
668+ return $ this ->checkAssignment ($ token ->getInstance (), $ activity , $ assignmentType , $ escalateToManager , $ user ? User::where ('id ' , $ user )->first () : null , $ token );
669669 }
670670
671671 /**
@@ -676,10 +676,11 @@ public function getNextUser(ActivityInterface $activity, ProcessRequestToken $to
676676 * @param string $assignmentType
677677 * @param bool $escalateToManager
678678 * @param User|null $user
679+ * @param ProcessRequestToken $token
679680 *
680681 * @return User|null
681682 */
682- private function checkAssignment (ProcessRequest $ request , ActivityInterface $ activity , $ assignmentType , $ escalateToManager , User $ user = null )
683+ private function checkAssignment (ProcessRequest $ request , ActivityInterface $ activity , $ assignmentType , $ escalateToManager , User $ user = null , ProcessRequestToken $ token = null )
683684 {
684685 $ config = $ activity ->getProperty ('config ' ) ? json_decode ($ activity ->getProperty ('config ' ), true ) : [];
685686 $ selfServiceToggle = array_key_exists ('selfService ' , $ config ?? []) ? $ config ['selfService ' ] : false ;
@@ -693,10 +694,15 @@ private function checkAssignment(ProcessRequest $request, ActivityInterface $act
693694 if ($ isSelfService && !$ escalateToManager ) {
694695 return null ;
695696 }
696- $ user = $ request ->processVersion ->manager ;
697+ $ rule = new ProcessManagerAssigned ();
698+ if ($ token === null ) {
699+ throw new ThereIsNoProcessManagerAssignedException ($ activity );
700+ }
701+ $ user = $ rule ->getNextUser ($ activity , $ token , $ this , $ request );
697702 if (!$ user ) {
698703 throw new ThereIsNoProcessManagerAssignedException ($ activity );
699704 }
705+ $ user = User::find ($ user );
700706 }
701707
702708 return $ user ;
@@ -1147,7 +1153,7 @@ public function getStartEvents($filterWithPermissions = false, $filterWithoutAss
11471153 }
11481154 }
11491155 } elseif (isset ($ startEvent ['assignment ' ]) && $ startEvent ['assignment ' ] === 'process_manager ' ) {
1150- $ access = $ this -> manager && $ this -> manager -> id && $ this ->manager -> id === $ user -> id ;
1156+ $ access = in_array ( $ user -> id , $ this ->manager_id ?? []) ;
11511157 } else {
11521158 $ access = false ;
11531159 }
0 commit comments