PM-939 "Support for Message-Event(Export, Import y Delete)"
> Se han implementado los metodos para: Export, Import y Delete (delete Process) de este nuevo "Objeto", asi tambien se ha agregado validaciones en el listados en el casesList.
This commit is contained in:
@@ -61,6 +61,7 @@ class Applications
|
||||
$confCasesList = $conf->getConfiguration("casesList", ($action == "search" || $action == "simple_search")? "search" : $action);
|
||||
$oAppCache->confCasesList = $confCasesList;
|
||||
}
|
||||
|
||||
// get the action based list
|
||||
switch ($action) {
|
||||
case "draft":
|
||||
@@ -118,7 +119,7 @@ class Applications
|
||||
case "COMPLETED":
|
||||
$Criteria = $oAppCache->getCompletedListCriteria($userUid);
|
||||
$CriteriaCount = $oAppCache->getCompletedCountCriteria($userUid);
|
||||
|
||||
|
||||
$Criteria->add (AppCacheViewPeer::DEL_LAST_INDEX,"1");
|
||||
$CriteriaCount->add (AppCacheViewPeer::DEL_LAST_INDEX,"1");
|
||||
break;
|
||||
@@ -161,6 +162,14 @@ class Applications
|
||||
break;
|
||||
}
|
||||
|
||||
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
|
||||
|
||||
$Criteria->addJoin(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||
$Criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
|
||||
|
||||
$CriteriaCount->addJoin(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||
$CriteriaCount->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
|
||||
|
||||
$Criteria->addAlias( 'CU', 'USERS' );
|
||||
$Criteria->addJoin( AppCacheViewPeer::USR_UID, 'CU.USR_UID', Criteria::LEFT_JOIN );
|
||||
$Criteria->addAsColumn( 'USR_UID', 'CU.USR_UID' );
|
||||
|
||||
@@ -249,6 +249,8 @@ class Cases
|
||||
$rows[] = array('uid' => 'char', 'value' => 'char');
|
||||
$tasks = array();
|
||||
|
||||
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
|
||||
|
||||
$c = new Criteria();
|
||||
$c->clearSelectColumns();
|
||||
$c->addSelectColumn(TaskPeer::TAS_UID);
|
||||
@@ -256,7 +258,7 @@ class Cases
|
||||
$c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
|
||||
$c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||
$c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
|
||||
$c->add(TaskPeer::TAS_TYPE, "WEBENTRYEVENT", Criteria::NOT_EQUAL);
|
||||
$c->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
|
||||
$c->add(TaskPeer::TAS_START, 'TRUE');
|
||||
$c->add(TaskUserPeer::USR_UID, $sUIDUser);
|
||||
|
||||
@@ -282,7 +284,7 @@ class Cases
|
||||
$c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
|
||||
$c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||
$c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
|
||||
$c->add(TaskPeer::TAS_TYPE, "WEBENTRYEVENT", Criteria::NOT_EQUAL);
|
||||
$c->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
|
||||
$c->add(TaskPeer::TAS_START, 'TRUE');
|
||||
$c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN);
|
||||
|
||||
|
||||
@@ -888,12 +888,18 @@ class Processes
|
||||
$oData->uid["TASK"] = $map;
|
||||
|
||||
if (isset( $oData->routes ) && is_array( $oData->routes )) {
|
||||
foreach ($oData->routes as $key => $val) {
|
||||
$newGuid = $map[$val['TAS_UID']];
|
||||
$oData->routes[$key]['TAS_UID'] = $newGuid;
|
||||
if (strlen( $val['ROU_NEXT_TASK'] ) > 0 && $val['ROU_NEXT_TASK'] > 0) {
|
||||
$newGuid = $map[$val['ROU_NEXT_TASK']];
|
||||
$oData->routes[$key]['ROU_NEXT_TASK'] = $newGuid;
|
||||
foreach ($oData->routes as $key => $value) {
|
||||
$record = $value;
|
||||
|
||||
if (isset($map[$record["TAS_UID"]])) {
|
||||
$newUid = $map[$record["TAS_UID"]];
|
||||
|
||||
$oData->routes[$key]["TAS_UID"] = $newUid;
|
||||
|
||||
if (strlen($record["ROU_NEXT_TASK"]) > 0 && $record["ROU_NEXT_TASK"] > 0) {
|
||||
$newUid = $map[$record["ROU_NEXT_TASK"]];
|
||||
$oData->routes[$key]["ROU_NEXT_TASK"] = $newUid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2297,6 +2303,19 @@ class Processes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Message-Envent-Definition
|
||||
if (isset($data->messageEventDefinition)) {
|
||||
foreach ($data->messageEventDefinition as $key => $value) {
|
||||
$record = $value;
|
||||
|
||||
if (isset($map[$record["MSGT_UID"]])) {
|
||||
$newUid = $map[$record["MSGT_UID"]];
|
||||
|
||||
$data->messageEventDefinition[$key]["MSGT_UID"] = $newUid;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
@@ -3077,6 +3096,39 @@ class Processes
|
||||
}
|
||||
}
|
||||
|
||||
public function getMessageEventDefinitions($processUid)
|
||||
{
|
||||
try {
|
||||
$arrayMessageEventDefinition = array();
|
||||
|
||||
$messageEventDefinition = new \ProcessMaker\BusinessModel\MessageEventDefinition();
|
||||
|
||||
//Get data
|
||||
$criteria = new Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(MessageEventDefinitionPeer::MSGED_UID);
|
||||
$criteria->add(MessageEventDefinitionPeer::PRJ_UID, $processUid, Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = MessageEventDefinitionPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayData = $messageEventDefinition->getMessageEventDefinition($row["MSGED_UID"], true);
|
||||
|
||||
$arrayData["MSGED_VARIABLES"] = serialize($arrayData["MSGED_VARIABLES"]);
|
||||
|
||||
$arrayMessageEventDefinition[] = $arrayData;
|
||||
}
|
||||
|
||||
//Return
|
||||
return $arrayMessageEventDefinition;
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Task User Rows from an array of data
|
||||
*
|
||||
@@ -3318,6 +3370,31 @@ class Processes
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Message-Event-Definition records
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
* @param array $arrayData Data
|
||||
*
|
||||
* return void
|
||||
*/
|
||||
public function createMessageEventDefinition($processUid, array $arrayData)
|
||||
{
|
||||
try {
|
||||
$messageEventDefinition = new \ProcessMaker\BusinessModel\MessageEventDefinition();
|
||||
|
||||
foreach ($arrayData as $value) {
|
||||
$record = $value;
|
||||
|
||||
$record["MSGED_VARIABLES"] = unserialize($record["MSGED_VARIABLES"]);
|
||||
|
||||
$arrayMessageEventDefinitionData = $messageEventDefinition->create($processUid, $record, false);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup Report Tables References from an array of data
|
||||
*
|
||||
@@ -3506,6 +3583,7 @@ class Processes
|
||||
$oData->webEntryEvent = $this->getWebEntryEvents($sProUid);
|
||||
$oData->messageType = $this->getMessageTypes($sProUid);
|
||||
$oData->messageTypeVariable = $this->getMessageTypeVariables($sProUid);
|
||||
$oData->messageEventDefinition = $this->getMessageEventDefinitions($sProUid);
|
||||
$oData->groupwfs = $this->groupwfsMerge($oData->groupwfs, $oData->processUser, "USR_UID");
|
||||
$oData->process["PRO_TYPE_PROCESS"] = "PUBLIC";
|
||||
|
||||
@@ -4552,6 +4630,7 @@ class Processes
|
||||
$this->createWebEntryEvent($arrayProcessData["PRO_UID"], $arrayProcessData["PRO_CREATE_USER"], (isset($oData->webEntryEvent))? $oData->webEntryEvent : array());
|
||||
$this->createMessageType((isset($oData->messageType))? $oData->messageType : array());
|
||||
$this->createMessageTypeVariable((isset($oData->messageTypeVariable))? $oData->messageTypeVariable : array());
|
||||
$this->createMessageEventDefinition($arrayProcessData["PRO_UID"], (isset($oData->messageEventDefinition))? $oData->messageEventDefinition : array());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ class MessageEventDefinition
|
||||
|
||||
"PRJ_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "projectUid"),
|
||||
"EVN_UID" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "eventUid"),
|
||||
"MSGT_UID" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "messageTypeUid"),
|
||||
"MSGT_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "messageTypeUid"),
|
||||
"MSGED_USR_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "messageEventDefinitionUserUid"),
|
||||
"MSGED_VARIABLES" => array("type" => "array", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "messageEventDefinitionVariables"),
|
||||
"MSGED_CORRELATION" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "messageEventDefinitionCorrelation")
|
||||
@@ -259,7 +259,7 @@ class MessageEventDefinition
|
||||
*
|
||||
* return array Return data of the new Message-Event-Definition created
|
||||
*/
|
||||
public function create($projectUid, array $arrayData)
|
||||
public function create($projectUid, array $arrayData, $flagValidateArrayData = true)
|
||||
{
|
||||
try {
|
||||
//Verify data
|
||||
@@ -278,7 +278,9 @@ class MessageEventDefinition
|
||||
//Verify data
|
||||
$process->throwExceptionIfNotExistsProcess($projectUid, $this->arrayFieldNameForException["projectUid"]);
|
||||
|
||||
$this->throwExceptionIfDataIsInvalid("", $projectUid, $arrayData);
|
||||
if ($flagValidateArrayData) {
|
||||
$this->throwExceptionIfDataIsInvalid("", $projectUid, $arrayData);
|
||||
}
|
||||
|
||||
//Create
|
||||
$cnn = \Propel::getConnection("workflow");
|
||||
@@ -295,6 +297,21 @@ class MessageEventDefinition
|
||||
$arrayData["MSGED_VARIABLES"] = array();
|
||||
}
|
||||
|
||||
if (isset($arrayData["MSGED_USR_UID"]) && $arrayData["MSGED_USR_UID"] != "") {
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\UsersPeer::USR_UID);
|
||||
$criteria->add(\UsersPeer::USR_UID, $arrayData["MSGED_USR_UID"], \Criteria::EQUAL);
|
||||
|
||||
//QUERY
|
||||
$rsCriteria = \UsersPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
if (!$rsCriteria->next()) {
|
||||
$arrayData["MSGED_USR_UID"] = "";
|
||||
}
|
||||
}
|
||||
|
||||
$messageEventDefinitionUid = \ProcessMaker\Util\Common::generateUID();
|
||||
|
||||
$messageEventDefinition->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME);
|
||||
@@ -314,7 +331,7 @@ class MessageEventDefinition
|
||||
$cnn->commit();
|
||||
|
||||
//Task - User
|
||||
if (isset($arrayData["MSGED_USR_UID"])) {
|
||||
if (isset($arrayData["MSGED_USR_UID"]) && $arrayData["MSGED_USR_UID"] != "") {
|
||||
$bpmnEvent = \BpmnEventPeer::retrieveByPK($arrayData["EVN_UID"]);
|
||||
|
||||
//Event - START-MESSAGE-EVENT
|
||||
|
||||
@@ -374,7 +374,7 @@ abstract class Importer
|
||||
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
|
||||
$arrayTaskData = $value;
|
||||
|
||||
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT"))) {
|
||||
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"))) {
|
||||
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -815,6 +815,33 @@ class Workflow extends Handler
|
||||
$messageType->delete($row["MSGT_UID"]);
|
||||
}
|
||||
|
||||
//Delete Message-Event-Relation
|
||||
$messageEventRelation = new \ProcessMaker\BusinessModel\MessageEventRelation();
|
||||
|
||||
$messageEventRelation->deleteWhere(array(\MessageEventRelationPeer::PRJ_UID => $sProcessUID));
|
||||
|
||||
//Delete Message-Event-Task-Relation
|
||||
$messageEventTaskRelation = new \ProcessMaker\BusinessModel\MessageEventTaskRelation();
|
||||
|
||||
$messageEventTaskRelation->deleteWhere(array(\MessageEventTaskRelationPeer::PRJ_UID => $sProcessUID));
|
||||
|
||||
//Delete Message-Event-Definition
|
||||
$messageEventDefinition = new \ProcessMaker\BusinessModel\MessageEventDefinition();
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\MessageEventDefinitionPeer::MSGED_UID);
|
||||
$criteria->add(\MessageEventDefinitionPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \MessageEventDefinitionPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$messageEventDefinition->delete($row["MSGED_UID"]);
|
||||
}
|
||||
|
||||
//Delete the process
|
||||
try {
|
||||
$oProcess->remove($sProcessUID);
|
||||
@@ -1184,6 +1211,23 @@ class Workflow extends Handler
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Update MESSAGE_EVENT_DEFINITION.EVN_UID
|
||||
if (isset($arrayWorkflowData["messageEventDefinition"])) {
|
||||
foreach ($arrayWorkflowData["messageEventDefinition"] as $key => $value) {
|
||||
$messageEventDefinitionEventUid = $arrayWorkflowData["messageEventDefinition"][$key]["EVN_UID"];
|
||||
|
||||
foreach ($arrayUid as $value2) {
|
||||
$arrayItem = $value2;
|
||||
|
||||
if ($arrayItem["old_uid"] == $messageEventDefinitionEventUid) {
|
||||
$arrayWorkflowData["messageEventDefinition"][$key]["EVN_UID"] = $arrayItem["new_uid"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Workflow tables
|
||||
$workflowData = (object)($arrayWorkflowData);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user