diff --git a/workflow/engine/bin/messageeventcron_single.php b/workflow/engine/bin/messageeventcron_single.php index 57470de2e..b991aaab1 100644 --- a/workflow/engine/bin/messageeventcron_single.php +++ b/workflow/engine/bin/messageeventcron_single.php @@ -108,6 +108,7 @@ try { Bootstrap::registerClass("wsResponse", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.wsResponse.php"); G::LoadClass("processes"); + G::LoadClass("derivation"); G::LoadClass("dates"); //Load Criteria //Workflow @@ -198,6 +199,10 @@ try { $rbac = &RBAC::getSingleton(PATH_DATA, session_id()); $rbac->sSystem = "PROCESSMAKER"; + if (!defined("DB_ADAPTER")) { + define("DB_ADAPTER", $DB_ADAPTER); + } + eprintln("Processing workspace: " . $workflow, "green"); try { diff --git a/workflow/engine/classes/model/ListCanceled.php b/workflow/engine/classes/model/ListCanceled.php index a0974f76d..1871e6f25 100644 --- a/workflow/engine/classes/model/ListCanceled.php +++ b/workflow/engine/classes/model/ListCanceled.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListCanceled.php'; /** * Skeleton subclass for representing a row from the 'LIST_CANCELED' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -269,6 +269,11 @@ class ListCanceled extends BaseListCanceled { $criteria->addSelectColumn(ListCanceledPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListCanceledPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListCanceledPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListCanceledPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -300,3 +305,4 @@ class ListCanceled extends BaseListCanceled { return $data; } } // ListCanceled + diff --git a/workflow/engine/classes/model/ListCompleted.php b/workflow/engine/classes/model/ListCompleted.php index be44881dd..2b9a38d21 100644 --- a/workflow/engine/classes/model/ListCompleted.php +++ b/workflow/engine/classes/model/ListCompleted.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListCompleted.php'; /** * Skeleton subclass for representing a row from the 'LIST_COMPLETED' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -248,6 +248,11 @@ class ListCompleted extends BaseListCompleted $criteria->addSelectColumn(ListCompletedPeer::DEL_CURRENT_USR_LASTNAME); $criteria->addSelectColumn(ListCompletedPeer::DEL_CURRENT_USR_USERNAME); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListCompletedPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListCompletedPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -279,3 +284,4 @@ class ListCompleted extends BaseListCompleted return $data; } } // ListCompleted + diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index e2901d40e..1d6b9b399 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListInbox.php'; /** * Skeleton subclass for representing a row from the 'LIST_INBOX' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -313,6 +313,11 @@ class ListInbox extends BaseListInbox $criteria->addSelectColumn(ListInboxPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListInboxPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListInboxPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListInboxPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -352,3 +357,4 @@ class ListInbox extends BaseListInbox return $data; } } + diff --git a/workflow/engine/classes/model/ListMyInbox.php b/workflow/engine/classes/model/ListMyInbox.php index 665517259..5a5aa3f36 100644 --- a/workflow/engine/classes/model/ListMyInbox.php +++ b/workflow/engine/classes/model/ListMyInbox.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListMyInbox.php'; /** * Skeleton subclass for representing a row from the 'LIST_MY_INBOX' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -236,6 +236,11 @@ class ListMyInbox extends BaseListMyInbox $criteria->addSelectColumn(ListMyInboxPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListMyInboxPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListMyInboxPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListMyInboxPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -269,3 +274,4 @@ class ListMyInbox extends BaseListMyInbox return $data; } } // ListMyInbox + diff --git a/workflow/engine/classes/model/ListParticipatedHistory.php b/workflow/engine/classes/model/ListParticipatedHistory.php index 38ffa98a4..8384e1c76 100644 --- a/workflow/engine/classes/model/ListParticipatedHistory.php +++ b/workflow/engine/classes/model/ListParticipatedHistory.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListParticipatedHistory.php'; /** * Skeleton subclass for representing a row from the 'LIST_PARTICIPATED_HISTORY' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -195,6 +195,11 @@ class ListParticipatedHistory extends BaseListParticipatedHistory $criteria->addSelectColumn(ListParticipatedHistoryPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListParticipatedHistoryPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListParticipatedHistoryPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListParticipatedHistoryPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -228,3 +233,4 @@ class ListParticipatedHistory extends BaseListParticipatedHistory return $data; } } + diff --git a/workflow/engine/classes/model/ListParticipatedLast.php b/workflow/engine/classes/model/ListParticipatedLast.php index b1ccb12eb..df076c8be 100644 --- a/workflow/engine/classes/model/ListParticipatedLast.php +++ b/workflow/engine/classes/model/ListParticipatedLast.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListParticipatedLast.php'; /** * Skeleton subclass for representing a row from the 'LIST_PARTICIPATED_LAST' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -218,6 +218,11 @@ class ListParticipatedLast extends BaseListParticipatedLast $criteria->addSelectColumn(ListParticipatedLastPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListParticipatedLastPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListParticipatedLastPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListParticipatedLastPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -251,3 +256,4 @@ class ListParticipatedLast extends BaseListParticipatedLast return $data; } } + diff --git a/workflow/engine/classes/model/ListPaused.php b/workflow/engine/classes/model/ListPaused.php index c211efd76..a88e85f54 100644 --- a/workflow/engine/classes/model/ListPaused.php +++ b/workflow/engine/classes/model/ListPaused.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListPaused.php'; /** * Skeleton subclass for representing a row from the 'LIST_PAUSED' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -287,6 +287,11 @@ class ListPaused extends BaseListPaused { $criteria->addSelectColumn(ListPausedPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListPausedPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListPausedPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $criteria->add( ListPausedPeer::USR_UID, $usr_uid, Criteria::EQUAL ); self::loadFilters($criteria, $filters); @@ -318,3 +323,4 @@ class ListPaused extends BaseListPaused { return $data; } } // ListPaused + diff --git a/workflow/engine/classes/model/ListUnassigned.php b/workflow/engine/classes/model/ListUnassigned.php index 459e6766e..588a032d2 100644 --- a/workflow/engine/classes/model/ListUnassigned.php +++ b/workflow/engine/classes/model/ListUnassigned.php @@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListUnassigned.php'; /** * Skeleton subclass for representing a row from the 'LIST_UNASSIGNED' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -263,6 +263,11 @@ class ListUnassigned extends BaseListUnassigned $criteria->addSelectColumn(ListUnassignedPeer::DEL_DUE_DATE); $criteria->addSelectColumn(ListUnassignedPeer::DEL_PRIORITY); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + + $criteria->addJoin(ListUnassignedPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); + $aConditions = array(); $aConditions[] = array(ListUnassignedPeer::UNA_UID, ListUnassignedGroupPeer::UNA_UID); $aConditions[] = array(ListUnassignedGroupPeer::USR_UID, "'" . $usr_uid . "'"); @@ -312,4 +317,3 @@ class ListUnassigned extends BaseListUnassigned } } - diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 200b166ff..9a5d34960 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -1983,6 +1983,13 @@ class Cases public function throwMessageEventBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData) { try { + //Verify if the Project is BPMN + $bpmn = new \ProcessMaker\Project\Bpmn(); + + if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) { + return; + } + //Element origin and dest $messageEventTaskRelation = new \ProcessMaker\BusinessModel\MessageEventTaskRelation(); @@ -2012,8 +2019,6 @@ class Cases $elementDestType = $arrayElement["elementDest"]["type"]; //Get Message-Events of throw type - $bpmn = new \ProcessMaker\Project\Bpmn(); - $arrayEvent = $bpmn->getMessageEventsOfThrowTypeBetweenElementOriginAndElementDest( $elementOriginUid, $elementOriginType, @@ -2047,50 +2052,137 @@ class Cases //Set variables $ws = new \wsBase(); + $case = new \Cases(); + + $messageApplication = new \ProcessMaker\BusinessModel\MessageApplication(); + $messageApplication->setFrontEnd($frontEnd); //Get data - $messageApplication = new \ProcessMaker\BusinessModel\MessageApplication(); + $totalMessageEvent = 0; - $arrayMessageApplicationUnread = $messageApplication->getMessageApplications(array("messageApplicationStatus" => "UNREAD")); + $counterStartMessageEvent = 0; + $counterIntermediateCatchMessageEvent = 0; + $counter = 0; - foreach ($arrayMessageApplicationUnread["data"] as $value) { - $arrayMessageApplicationData = $value; + $flagFirstTime = false; - $processUid = $arrayMessageApplicationData["PRJ_UID"]; - $taskUid = $arrayMessageApplicationData["TAS_UID"]; + $messageApplication->frontEndShow("START"); - $messageApplicationUid = $arrayMessageApplicationData["MSGAPP_UID"]; - $messageApplicationCorrelation = $arrayMessageApplicationData["MSGAPP_CORRELATION"]; + do { + $flagNextRecords = false; - $messageEventDefinitionUserUid = $arrayMessageApplicationData["MSGED_USR_UID"]; - $messageEventDefinitionVariables = $arrayMessageApplicationData["MSGED_VARIABLES"]; - $messageEventDefinitionCorrelation = $arrayMessageApplicationData["MSGED_CORRELATION"]; + $arrayMessageApplicationUnread = $messageApplication->getMessageApplications(array("messageApplicationStatus" => "UNREAD"), null, null, 0, 1000); - switch ($arrayMessageApplicationData["EVN_TYPE"]) { - case "START": - if ($messageApplicationCorrelation == $messageEventDefinitionCorrelation && - $messageEventDefinitionUserUid != "" - ) { - //Start and derivate new Case - //$result = $ws->newCase($processUid, $messageEventDefinitionUserUid, $taskUid, array("NAME1" => "value1")); - $result = $ws->newCase($processUid, $messageEventDefinitionUserUid, $taskUid, array()); + if (!$flagFirstTime) { + $totalMessageEvent = $arrayMessageApplicationUnread["total"]; - $arrayResult = json_decode(json_encode($result), true); - - if ($arrayResult["status_code"] == 0) { - $applicationUid = $arrayResult["caseId"]; - - $result = $ws->derivateCase($messageEventDefinitionUserUid, $applicationUid, 1); - - //Message-Application catch - $result = $messageApplication->update($messageApplicationUid, array("MSGAPP_STATUS" => "READ")); - } - } - break; - case "INTERMEDIATE": - break; + $flagFirstTime = true; } - } + + foreach ($arrayMessageApplicationUnread["data"] as $value) { + if ($counter + 1 > $totalMessageEvent) { + $flagNextRecords = false; + break; + } + + $arrayMessageApplicationData = $value; + + $processUid = $arrayMessageApplicationData["PRJ_UID"]; + $taskUid = $arrayMessageApplicationData["TAS_UID"]; + + $messageApplicationUid = $arrayMessageApplicationData["MSGAPP_UID"]; + $messageApplicationCorrelation = $arrayMessageApplicationData["MSGAPP_CORRELATION"]; + + $messageEventDefinitionUserUid = $arrayMessageApplicationData["MSGED_USR_UID"]; + $messageEventDefinitionCorrelation = $arrayMessageApplicationData["MSGED_CORRELATION"]; + + $arrayVariable = $messageApplication->mergeVariables($arrayMessageApplicationData["MSGED_VARIABLES"], $arrayMessageApplicationData["MSGAPP_VARIABLES"]); + + $flagCatched = false; + + switch ($arrayMessageApplicationData["EVN_TYPE"]) { + case "START": + if ($messageEventDefinitionCorrelation == $messageApplicationCorrelation && $messageEventDefinitionUserUid != "") { + //Start and derivate new Case + $result = $ws->newCase($processUid, $messageEventDefinitionUserUid, $taskUid, $arrayVariable); + + $arrayResult = json_decode(json_encode($result), true); + + if ($arrayResult["status_code"] == 0) { + $applicationUid = $arrayResult["caseId"]; + + $result = $ws->derivateCase($messageEventDefinitionUserUid, $applicationUid, 1); + + $flagCatched = true; + + //Counter + $counterStartMessageEvent++; + } + } + break; + case "INTERMEDIATE": + $criteria = new \Criteria("workflow"); + + $criteria->addSelectColumn(\AppDelegationPeer::APP_UID); + $criteria->addSelectColumn(\AppDelegationPeer::DEL_INDEX); + $criteria->addSelectColumn(\AppDelegationPeer::USR_UID); + + $criteria->add(\AppDelegationPeer::PRO_UID, $processUid, \Criteria::EQUAL); + $criteria->add(\AppDelegationPeer::TAS_UID, $taskUid, \Criteria::EQUAL); + $criteria->add(\AppDelegationPeer::DEL_THREAD_STATUS, "OPEN", \Criteria::EQUAL); + $criteria->add(\AppDelegationPeer::DEL_FINISH_DATE, null, \Criteria::ISNULL); + + $rsCriteria = \AppDelegationPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $applicationUid = $row["APP_UID"]; + $delIndex = $row["DEL_INDEX"]; + $userUid = $row["USR_UID"]; + + $arrayApplicationData = $case->loadCase($applicationUid); + + if (\G::replaceDataField($messageEventDefinitionCorrelation, $arrayApplicationData["APP_DATA"]) == $messageApplicationCorrelation) { + //"Unpause" and derivate Case + $arrayApplicationData["APP_DATA"] = array_merge($arrayApplicationData["APP_DATA"], $arrayVariable); + + $arrayResult = $case->updateCase($applicationUid, $arrayApplicationData); + + $result = $ws->derivateCase($userUid, $applicationUid, $delIndex); + + $flagCatched = true; + } + } + + //Counter + if ($flagCatched) { + $counterIntermediateCatchMessageEvent++; + } + break; + } + + //Message-Application catch + if ($flagCatched) { + $result = $messageApplication->update($messageApplicationUid, array("MSGAPP_STATUS" => "READ")); + } + + $counter++; + + //Progress bar + $messageApplication->frontEndShow("BAR", "Message-Events (unread): " . $counter . "/" . $totalMessageEvent . " " . $messageApplication->progressBar($totalMessageEvent, $counter)); + + $flagNextRecords = true; + } + } while ($flagNextRecords); + + $messageApplication->frontEndShow("TEXT", "Total Message-Events unread: " . $totalMessageEvent); + $messageApplication->frontEndShow("TEXT", "Total cases started: " . $counterStartMessageEvent); + $messageApplication->frontEndShow("TEXT", "Total cases continued: " . $counterIntermediateCatchMessageEvent); + $messageApplication->frontEndShow("TEXT", "Total Message-Events pending: " . ($totalMessageEvent - ($counterStartMessageEvent + $counterIntermediateCatchMessageEvent))); + + $messageApplication->frontEndShow("END"); } catch (\Exception $e) { throw $e; } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/MessageApplication.php b/workflow/engine/src/ProcessMaker/BusinessModel/MessageApplication.php index 154924754..a3681cb42 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/MessageApplication.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/MessageApplication.php @@ -8,6 +8,8 @@ class MessageApplication "limit" => "LIMIT" ); + private $frontEnd = false; + /** * Verify if exists the Message-Application * @@ -207,6 +209,102 @@ class MessageApplication } } + /** + * Set front end flag + * + * @param bool $flag Flag + * + * return void + */ + public function setFrontEnd($flag) + { + try { + $this->frontEnd = $flag; + } catch (Exception $e) { + throw $e; + } + } + + /** + * Progress bar + * + * @param int $total Total + * @param int $count Count + * + * return string Return a string that represent progress bar + */ + public function progressBar($total, $count) + { + try { + $p = (int)(($count * 100) / $total); + $n = (int)($p / 2); + + return "[" . str_repeat("|", $n) . str_repeat(" ", 50 - $n) . "] $p%"; + } catch (Exception $e) { + throw $e; + } + } + + /** + * Show front end + * + * @param string $option Option + * @param string $data Data string + * + * return void + */ + public function frontEndShow($option, $data = "") + { + try { + if (!$this->frontEnd) { + return; + } + + $numc = 100; + + switch ($option) { + case "BAR": + echo "\r" . "| " . $data . str_repeat(" ", $numc - 2 - strlen($data)); + break; + case "TEXT": + echo "\r" . "| " . $data . str_repeat(" ", $numc - 2 - strlen($data)) . "\n"; + break; + default: + //START, END + echo "\r" . "+" . str_repeat("-", $numc - 2) . "+" . "\n"; + break; + } + } catch (Exception $e) { + throw $e; + } + } + + /** + * Merge and get variables + * + * @param array $arrayVariableName Variables + * @param array $arrayVariableValue Values + * + * return array Return an array + */ + public function mergeVariables(array $arrayVariableName, array $arrayVariableValue) + { + try { + $arrayVariable = array(); + + foreach ($arrayVariableName as $key => $value) { + if (preg_match("/^@[@%#\?\x24\=]([A-Za-z_]\w*)$/", $value, $arrayMatch) && isset($arrayVariableValue[$key])) { + $arrayVariable[$arrayMatch[1]] = $arrayVariableValue[$key]; + } + } + + //Return + return $arrayVariable; + } catch (\Exception $e) { + throw $e; + } + } + /** * Get all Message-Applications * diff --git a/workflow/engine/src/ProcessMaker/Project/Bpmn.php b/workflow/engine/src/ProcessMaker/Project/Bpmn.php index dcaced7a0..8cb27df25 100755 --- a/workflow/engine/src/ProcessMaker/Project/Bpmn.php +++ b/workflow/engine/src/ProcessMaker/Project/Bpmn.php @@ -91,6 +91,19 @@ class Bpmn extends Handler } } + public function exists($projectUid) + { + try { + $obj = ProjectPeer::retrieveByPK($projectUid); + + return (!is_null($obj))? true : false; + } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + + throw $e; + } + } + public static function load($prjUid) { $me = new self(); @@ -588,6 +601,8 @@ class Bpmn extends Handler //Return return false; } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; } } @@ -661,6 +676,8 @@ class Bpmn extends Handler } } } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; } } @@ -1294,6 +1311,8 @@ class Bpmn extends Handler //Return return $this->getGateway2($gatewayUid); } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; } } @@ -1386,6 +1405,8 @@ class Bpmn extends Handler return array(); } } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; } } @@ -1427,6 +1448,8 @@ class Bpmn extends Handler //Return return $arrayEvent; } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; } }