Merge branch 'master' of bitbucket.org:colosa/processmaker

This commit is contained in:
Brayan Osmar Pereyra Suxo
2014-02-21 09:26:23 -04:00
13 changed files with 126 additions and 111 deletions

View File

@@ -226,11 +226,6 @@ class BpmnWorkflow extends Project\Bpmn
parent::addEvent($data);
}
public function updateEvent($evnUid, $data)
{
parent::updateEvent($evnUid, $data);
}
public function removeEvent($evnUid)
{
// $event = \BpmnEventPeer::retrieveByPK($evnUid);
@@ -332,8 +327,6 @@ class BpmnWorkflow extends Project\Bpmn
break;
case 'bpmnEvent':
$evnUid = $flow['FLO_ELEMENT_DEST'];
self::log('=======++++++++=========>', $evnUid, "EVN_UID", $events);
$events = self::findInArray($evnUid, "EVN_UID", $events);

View File

@@ -64,6 +64,9 @@ class Bpmn extends Handler
"PRJ_UID", "PRO_UID", "BOU_ELEMENT", "BOU_ELEMENT_TYPE", "BOU_REL_POSITION",
"BOU_SIZE_IDENTICAL", "DIA_UID", "BOU_UID", "ELEMENT_UID", "EVN_ATTACHED_TO", "EVN_CONDITION"
),
"gateway" => array("BOU_ELEMENT", "BOU_ELEMENT_TYPE", "BOU_REL_POSITION", "BOU_SIZE_IDENTICAL", "BOU_UID",
"DIA_UID", "ELEMENT_UID", "PRJ_UID", "PRO_UID"
),
"flow" => array("PRJ_UID", "DIA_UID", "FLO_ELEMENT_DEST_PORT", "FLO_ELEMENT_ORIGIN_PORT")
);
@@ -386,13 +389,13 @@ class Bpmn extends Handler
public function updateEvent($evnUid, $data)
{
if (array_key_exists("EVN_CANCEL_ACTIVITY", $data)) {
/*if (array_key_exists("EVN_CANCEL_ACTIVITY", $data)) {
$data["EVN_CANCEL_ACTIVITY"] = $data["EVN_CANCEL_ACTIVITY"] ? 1 : 0;
}
if (array_key_exists("EVN_WAIT_FOR_COMPLETION", $data)) {
$data["EVN_WAIT_FOR_COMPLETION"] = $data["EVN_WAIT_FOR_COMPLETION"] ? 1 : 0;
}
}*/
try {
self::log("Update Event: $evnUid", "With data: ", $data);
@@ -468,6 +471,7 @@ class Bpmn extends Handler
if ($retType != "object" && ! empty($gateway)) {
$gateway = $gateway->toArray();
$gateway = self::filterArrayKeys($gateway, self::$excludeFields["gateway"]);
}
return $gateway;
@@ -479,7 +483,13 @@ class Bpmn extends Handler
extract($start);
}
return Gateway::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo);
//return Gateway::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo);
$filter = $changeCaseTo != CASE_UPPER ? array_map("strtolower", self::$excludeFields["gateway"]) : self::$excludeFields["gateway"];
return self::filterCollectionArrayKeys(
Gateway::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo),
$filter
);
}
public function removeGateway($gatUid)

View File

@@ -92,11 +92,8 @@ abstract class Handler
public static function isEquals($array, $arrayCompare)
{
ksort($array);
ksort($arrayCompare);
self::log($array, $arrayCompare);
//$ret = array_diff_assoc($array, $arrayCompare);
//self::log("ONE: ", $array, "TWO: ", $arrayCompare);
//$ret = array_diff_assoc("ONE: ", $array, "TWO: ", $arrayCompare);
return (self::getChecksum($array) === self::getChecksum($arrayCompare));
}

View File

@@ -0,0 +1,16 @@
<?php
namespace ProcessMaker\Util;
class ArrayUtil
{
public static function boolToIntValues($array)
{
array_walk($array, function (&$v) {
if ($v === false) $v = 0;
elseif ($v === true) $v = 1;
elseif ($v === null) $v = 0;
});
return $array;
}
}

View File

@@ -4,8 +4,8 @@ namespace Services\Api\ProcessMaker;
use Luracast\Restler\RestException;
use ProcessMaker\Services\Api;
use ProcessMaker\Adapter\Bpmn\Model as BpmnModel;
use ProcessMaker\Util\Hash;
use ProcessMaker\Util\Logger;
use \ProcessMaker\Project\Adapter;
use \ProcessMaker\Util;
/**
* Class Project
@@ -24,10 +24,9 @@ class Project extends Api
$limit = null;
$filter = "";
$projects = \ProcessMaker\Project\Adapter\BpmnWorkflow::getList($start, $limit, $filter, CASE_LOWER);
$projects = Adapter\BpmnWorkflow::getList($start, $limit, $filter, CASE_LOWER);
return $projects;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
@@ -36,9 +35,7 @@ class Project extends Api
public function get($prjUid)
{
try {
//return \ProcessMaker\Adapter\Bpmn\Model::loadProject($prjUid);
$bwp = \ProcessMaker\Project\Adapter\BpmnWorkflow::load($prjUid);
$bwp = Adapter\BpmnWorkflow::load($prjUid);
$project = array_change_key_case($bwp->getProject(), CASE_LOWER);
$diagram = $bwp->getDiagram();
@@ -106,12 +103,9 @@ class Project extends Api
{
try {
$projectData = $request_data;
$prjUid = $projectData["prj_uid"];
$diagram = isset($request_data["diagrams"]) && isset($request_data["diagrams"][0]) ? $request_data["diagrams"][0] : array();
$bwp = \ProcessMaker\Project\Adapter\BpmnWorkflow::load($prjUid);
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
$result = array();
$bwp = Adapter\BpmnWorkflow::load($prjUid);
/*
* Diagram's Activities Handling
@@ -119,19 +113,19 @@ class Project extends Api
$whiteList = array();
foreach ($diagram["activities"] as $i => $activityData) {
$activityData = array_change_key_case($activityData, CASE_UPPER);
unset($activityData["_EXTENDED"]);
unset($activityData["BOU_ELEMENT_ID"]);
unset($activityData["_EXTENDED"], $activityData["BOU_ELEMENT_ID"]);
$activityData = Util\ArrayUtil::boolToIntValues($activityData);
$activity = $bwp->getActivity($activityData["ACT_UID"]);
if (is_null($activity)) {
$oldActUid = $activityData["ACT_UID"];
$activityData["ACT_UID"] = Hash::generateUID();
$activityData["ACT_UID"] = Util\Hash::generateUID();
$bwp->addActivity($activityData);
$result[] = array("object" => "activity", "new_uid" => $activityData["ACT_UID"], "old_uid" => $oldActUid);
} elseif (! $bwp->isEquals($activity, $activityData)) {
$bwp->updateActivity($activityData["ACT_UID"], $activityData);
} else {
Logger::log("Update Activity ({$activityData["ACT_UID"]}) Skipped - No changes required");
Util\Logger::log("Update Activity ({$activityData["ACT_UID"]}) Skipped - No changes required");
}
$diagram["activities"][$i] = $activityData;
@@ -143,7 +137,6 @@ class Project extends Api
// looking for removed elements
foreach ($activities as $activityData) {
if (! in_array($activityData["ACT_UID"], $whiteList)) {
// If it is not in the white list so, then remove them
$bwp->removeActivity($activityData["ACT_UID"]);
}
}
@@ -155,19 +148,18 @@ class Project extends Api
$whiteList = array();
foreach ($diagram["gateways"] as $i => $gatewayData) {
$gatewayData = array_change_key_case($gatewayData, CASE_UPPER);
unset($gatewayData["_EXTENDED"]);
// gateway exists ?
if ($gateway = $bwp->getGateway($gatewayData["GAT_UID"])) {
// then update activity
$gateway = $bwp->getGateway($gatewayData["GAT_UID"]);
if (is_null($gateway)) {
$oldActUid = $gatewayData["GAT_UID"];
$gatewayData["GAT_UID"] = Util\Hash::generateUID();
$bwp->addGateway($gatewayData);
$result[] = array("object" => "gateway", "new_uid" => $gatewayData["GAT_UID"], "old_uid" => $oldActUid);
} elseif (! $bwp->isEquals($gateway, $gatewayData)) {
$bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData);
} else {
// if not exists then create it
$oldActUid = $gatewayData["GAT_UID"];
$gatewayData["GAT_UID"] = Hash::generateUID();
$bwp->addGateway($gatewayData);
$result[] = array("object" => "gateway", "new_uid" => $gatewayData["GAT_UID"], "old_uid" => $oldActUid);
Util\Logger::log("Update Gateway ({$gatewayData["GAT_UID"]}) Skipped - No changes required");
}
$diagram["gateways"][$i] = $gatewayData;
@@ -179,7 +171,6 @@ class Project extends Api
// looking for removed elements
foreach ($gateways as $gatewayData) {
if (! in_array($gatewayData["GAT_UID"], $whiteList)) {
// If it is not in the white list so, then remove them
$bwp->removeGateway($gatewayData["GAT_UID"]);
}
}
@@ -191,25 +182,23 @@ class Project extends Api
foreach ($diagram["events"] as $i => $eventData) {
$eventData = array_change_key_case($eventData, CASE_UPPER);
unset($eventData["_EXTENDED"]);
if (array_key_exists("EVN_CANCEL_ACTIVITY", $eventData)) {
$eventData["EVN_CANCEL_ACTIVITY"] = $eventData["EVN_CANCEL_ACTIVITY"] ? 1 : 0;
}
if (array_key_exists("EVN_WAIT_FOR_COMPLETION", $eventData)) {
$eventData["EVN_WAIT_FOR_COMPLETION"] = $eventData["EVN_WAIT_FOR_COMPLETION"] ? 1 : 0;
}
// gateway exists ?
$event = $bwp->getEvent($eventData["EVN_UID"]);
if (is_null($event)) {
$oldActUid = $eventData["EVN_UID"];
$eventData["EVN_UID"] = Hash::generateUID();
$eventData["EVN_UID"] = Util\Hash::generateUID();
$bwp->addEvent($eventData);
$result[] = array("object" => "event", "new_uid" => $eventData["EVN_UID"], "old_uid" => $oldActUid);
} elseif (! $bwp->isEquals($event, $eventData)) {
if (array_key_exists("EVN_CANCEL_ACTIVITY", $eventData)) {
$eventData["EVN_CANCEL_ACTIVITY"] = $eventData["EVN_CANCEL_ACTIVITY"] ? 1 : 0;
}
if (array_key_exists("EVN_WAIT_FOR_COMPLETION", $eventData)) {
$eventData["EVN_WAIT_FOR_COMPLETION"] = $eventData["EVN_WAIT_FOR_COMPLETION"] ? 1 : 0;
}
$bwp->updateEvent($eventData["EVN_UID"], $eventData);
} else {
Logger::log("Update Event ({$eventData["EVN_UID"]}) Skipped - No changes required");
Util\Logger::log("Update Event ({$eventData["EVN_UID"]}) Skipped - No changes required");
}
$diagram["events"][$i] = $eventData;
@@ -238,7 +227,7 @@ class Project extends Api
// if it is a new flow record
if (! \BpmnFlow::exists($flowData["FLO_UID"])) {
$oldFloUid = $flowData["FLO_UID"];
$flowData["FLO_UID"] = Hash::generateUID();
$flowData["FLO_UID"] = Util\Hash::generateUID();
$mappedUid = self::mapUid($flowData["FLO_ELEMENT_ORIGIN"], $result);
if ($mappedUid !== false) {
@@ -258,13 +247,13 @@ class Project extends Api
}
foreach ($diagram["flows"] as $flowData) {
// flow exists ?
if ($bwp->flowExists($flowData["FLO_UID"])) {
// then update activity
$flow = $bwp->getFlow($flowData["FLO_UID"]);
if (is_null($flow)) {
$bwp->addFlow($flowData, $diagram["flows"], $diagram["gateways"], $diagram["events"]);
} elseif (! $bwp->isEquals($flow, $flowData)) {
$bwp->updateFlow($flowData["FLO_UID"], $flowData);
} else {
// if not exists then create it
$bwp->addFlow($flowData, $diagram["flows"], $diagram["gateways"], $diagram["events"]);
Util\Logger::log("Update Flow ({$flowData["FLO_UID"]}) Skipped - No changes required");
}
}
@@ -273,12 +262,10 @@ class Project extends Api
// looking for removed elements
foreach ($flows as $flowData) {
if (! in_array($flowData["FLO_UID"], $whiteList)) {
// If it is not in the white list so, then remove them
$bwp->removeFlow($flowData["FLO_UID"]);
}
}
return $result;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());