diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php
index 3614aa669..f5d7d299b 100755
--- a/workflow/engine/classes/class.wsBase.php
+++ b/workflow/engine/classes/class.wsBase.php
@@ -2221,7 +2221,7 @@ class wsBase
}
}
- //Execute triggers before derivation
+ //Execute triggers before derivation BEFORE_ROUTING
$aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 2, 'BEFORE' );
if (count( $aTriggers ) > 0) {
@@ -2272,6 +2272,51 @@ class wsBase
}
}
+ //Execute triggers before derivation BEFORE_ASSIGNMENT
+ $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 1, 'BEFORE' );
+
+ if (count( $aTriggers ) > 0) {
+ $varTriggers .= "-= Before Derivation =-
";
+
+ $oPMScript = new PMScript();
+
+ foreach ($aTriggers as $aTrigger) {
+ //Set variables
+ $params = new stdClass();
+ $params->appData = $appFields["APP_DATA"];
+
+ if ($this->stored_system_variables) {
+ $params->option = "STORED SESSION";
+ $params->SID = $this->wsSessionId;
+ }
+
+ $appFields["APP_DATA"] = array_merge( $appFields["APP_DATA"], G::getSystemConstants( $params ) );
+
+ //PMScript
+ $oPMScript->setFields( $appFields['APP_DATA'] );
+ $bExecute = true;
+
+ if ($aTrigger['ST_CONDITION'] !== '') {
+ $oPMScript->setScript( $aTrigger['ST_CONDITION'] );
+ $bExecute = $oPMScript->evaluate();
+ }
+
+ if ($bExecute) {
+ $oPMScript->setScript( $aTrigger['TRI_WEBBOT'] );
+ $oPMScript->execute();
+
+ $oTrigger = TriggersPeer::retrieveByPk( $aTrigger['TRI_UID'] );
+ $varTriggers .= " - " . nl2br( htmlentities( $oTrigger->getTriTitle(), ENT_QUOTES ) ) . "
";
+ $appFields['APP_DATA'] = $oPMScript->aFields;
+ unset($appFields['APP_STATUS']);
+ unset($appFields['APP_PROC_STATUS']);
+ unset($appFields['APP_PROC_CODE']);
+ unset($appFields['APP_PIN']);
+ $oCase->updateCase( $caseId, $appFields );
+ }
+ }
+ }
+
$oDerivation = new Derivation();
$derive = $oDerivation->prepareInformation( $aData );