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:
Luis Fernando Saisa Lopez
2015-02-20 17:12:49 -04:00
parent f3d90ae3db
commit f0bebb5fe5
6 changed files with 165 additions and 14 deletions

View File

@@ -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' );

View File

@@ -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);

View File

@@ -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());
}

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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);