Merge branch 'master' of bitbucket.org:colosa/processmaker
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
16
workflow/engine/src/ProcessMaker/Util/ArrayUtil.php
Normal file
16
workflow/engine/src/ProcessMaker/Util/ArrayUtil.php
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user