Adding SubProcess support for Bpmn->Workflow adapter

This commit is contained in:
Erik Amaru Ortiz
2014-03-26 12:20:58 -04:00
parent 60496398aa
commit 16d861c225
13 changed files with 165 additions and 92 deletions

View File

@@ -10,8 +10,9 @@ use \Task;
use \Route;
use \RoutePeer;
use ProcessMaker\Util\Hash;
use ProcessMaker\Util\Common;
use ProcessMaker\Exception;
use ProcessMaker\Util;
/**
* Class Workflow
@@ -55,7 +56,7 @@ class Workflow extends Handler
public function create($data)
{
// setting defaults
$data['PRO_UID'] = array_key_exists('PRO_UID', $data) ? $data['PRO_UID'] : Hash::generateUID();
$data['PRO_UID'] = array_key_exists('PRO_UID', $data) ? $data['PRO_UID'] : Common::generateUID();
$data['USR_UID'] = array_key_exists('PRO_CREATE_USER', $data) ? $data['PRO_CREATE_USER'] : null;
$data['PRO_TITLE'] = array_key_exists('PRO_TITLE', $data) ? trim($data['PRO_TITLE']) : "";
$data['PRO_CATEGORY'] = array_key_exists('PRO_CATEGORY', $data) ? $data['PRO_CATEGORY'] : "";
@@ -165,7 +166,7 @@ class Workflow extends Handler
public function addTask($taskData)
{
// Setting defaults
$taskData['TAS_UID'] = array_key_exists('TAS_UID', $taskData) ? $taskData['TAS_UID'] : Hash::generateUID();
$taskData['TAS_UID'] = array_key_exists('TAS_UID', $taskData) ? $taskData['TAS_UID'] : Common::generateUID();
$taskData['PRO_UID'] = $this->proUid;
try {
@@ -173,6 +174,12 @@ class Workflow extends Handler
$task = new Task();
$tasUid = $task->create($taskData, false);
self::log("Add Task Success!");
// SubProcess Handling
if ($task->getTasType() == "SUBPROCESS") {
$this->addSubProcess($this->proUid, $tasUid);
}
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
@@ -201,9 +208,17 @@ class Workflow extends Handler
{
try {
self::log("Remove Task: $tasUid");
$task = \TaskPeer::retrieveByPK($tasUid);
$tasType = $task->getTasType();
$task = new Tasks();
$task->deleteTask($tasUid);
self::log("Remove Task Success!");
if ($tasType == "SUBPROCESS") {
$this->removeSupProcess($this->proUid, $tasUid);
}
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
@@ -237,6 +252,53 @@ class Workflow extends Handler
return $tasks->getAllTasks($this->proUid);
}
public function addSubProcess($proUid = '', $tasUid)//$iX = 0, $iY = 0)
{
try {
$subProcess = new \SubProcess();
$data = array(
'SP_UID' => Util\Common::generateUID(),
'PRO_UID' => 0,
'TAS_UID' => 0,
'PRO_PARENT' => $proUid,
'TAS_PARENT' => $tasUid,
'SP_TYPE' => 'SIMPLE',
'SP_SYNCHRONOUS' => 0,
'SP_SYNCHRONOUS_TYPE' => 'ALL',
'SP_SYNCHRONOUS_WAIT' => 0,
'SP_VARIABLES_OUT' => '',
'SP_VARIABLES_IN' => '',
'SP_GRID_IN' => ''
);
self::log("Adding SubProcess with data: ", $data);
$spUid = $subProcess->create($data);
self::log("Adding SubProcess success!, created sp_uid: ", $spUid);
return $spUid;
} catch (\Exception $oError) {
throw ($oError);
}
}
public function removeSupProcess($proUid, $tasUid)
{
try {
$subProcess = \SubProcess::findByParents($proUid, $tasUid);
self::log("Remove SupProcess: ".$subProcess->getSpUid());
$subProcess->delete();
self::log("Remove SupProcess Success!");
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
public function updateSubProcess()
{
}
/**
* @param string $tasUid
* @param bool $value