diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index e709ec997..c7fa8ce91 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -4071,7 +4071,6 @@ class Cases public function pauseCase($sApplicationUID, $iDelegation, $sUserUID, $sUnpauseDate = null) { - $this->CloseCurrentDelegation($sApplicationUID, $iDelegation); $oApplication = new Application(); $aFields = $oApplication->Load($sApplicationUID); //get the appthread row id ( APP_THREAD_INDEX' ) @@ -4089,6 +4088,7 @@ class Cases throw new Exception(G::LoadTranslation("ID_CASE_STOPPED_TRIGGER")); } + $this->CloseCurrentDelegation($sApplicationUID, $iDelegation); //now create a row in APP_DELAY with type PAUSE $aData['PRO_UID'] = $aFields['PRO_UID']; $aData['APP_UID'] = $sApplicationUID; diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 653e93c1a..460a12415 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -521,7 +521,7 @@ class Derivation $flagTaskNextAssignTypeIsMultipleInstance = false; if (!is_null($taskNext) && !is_null($bpmnActivityNext)) { - $flagTaskNextIsMultipleInstance = $bpmnActivityNext->getActType() == "TASK" && preg_match("/^(?:EMPTY|USERTASK|MANUALTASK)$/", $bpmnActivityNext->getActTaskType()) && $bpmnActivityNext->getActLoopType() == "PARALLEL"; + $flagTaskNextIsMultipleInstance = $bpmnActivityNext->getActType() == "TASK" && preg_match("/^(?:EMPTY|SENDTASK|RECEIVETASK|USERTASK|SERVICETASK|MANUALTASK|BUSINESSRULE)$/", $bpmnActivityNext->getActTaskType()) && $bpmnActivityNext->getActLoopType() == "PARALLEL"; $flagTaskNextAssignTypeIsMultipleInstance = preg_match("/^(?:MULTIPLE_INSTANCE|MULTIPLE_INSTANCE_VALUE_BASED)$/", $taskNext->getTasAssignType()); } @@ -1557,7 +1557,9 @@ class Derivation $aDeriveTask['NEXT_TASK']['USER_ASSIGNED'] = $selectedUser; $myLabels = array ($aDeriveTask['NEXT_TASK']['TAS_TITLE'],$aParentCase['APP_NUMBER'],$selectedUser['USR_USERNAME'],$selectedUser['USR_FIRSTNAME'],$selectedUser['USR_LASTNAME'] ); - G::SendTemporalMessage( 'ID_TASK_WAS_ASSIGNED_TO_USER', 'warning', 'labels', 10, null, $myLabels ); + if($aDeriveTask['NEXT_TASK']['TAS_ASSIGN_TYPE'] == "MANUAL"){ + G::SendTemporalMessage( 'ID_TASK_WAS_ASSIGNED_TO_USER', 'warning', 'labels', 10, null, $myLabels ); + } } $nextDelegations2[] = array ('TAS_UID' => $aDeriveTask['NEXT_TASK']['TAS_UID'],'USR_UID' => $aDeriveTask['NEXT_TASK']['USER_ASSIGNED']['USR_UID'],'TAS_ASSIGN_TYPE' => $aDeriveTask['NEXT_TASK']['TAS_ASSIGN_TYPE'],'TAS_DEF_PROC_CODE' => $aDeriveTask['NEXT_TASK']['TAS_DEF_PROC_CODE'],'DEL_PRIORITY' => 3,'TAS_PARENT' => $aDeriveTask['NEXT_TASK']['TAS_PARENT'] diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index aab78134d..507901b61 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -2393,7 +2393,10 @@ class wsBase $usrasgdUserName = null; if (isset($val['NEXT_TASK']['USER_ASSIGNED'])) { - $usrasgdUid = $val['NEXT_TASK']['USER_ASSIGNED']['USR_UID']; + $usrasgdUid = ''; + if(isset($val['NEXT_TASK']['USER_ASSIGNED']['USR_UID'])){ + $usrasgdUid = $val['NEXT_TASK']['USER_ASSIGNED']['USR_UID']; + } if(isset($val['NEXT_TASK']['USER_ASSIGNED']['USR_USERNAME'])){ $usrasgdUserName = '(' . $val['NEXT_TASK']['USER_ASSIGNED']['USR_USERNAME'] . ')'; }else{ @@ -3143,6 +3146,14 @@ class wsBase return $result; } + $oApplication = new Application(); + $aFields = $oApplication->load($caseUid); + if($aFields['APP_STATUS'] == 'DRAFT'){ + $result = new wsResponse( 100, G::LoadTranslation( "ID_CASE_IN_STATUS" ). " DRAFT" ); + $g->sessionVarRestore(); + return $result; + } + $case = new Cases(); $case->cancelCase( $caseUid, $delIndex, $userUid );