Refactoring Bpmn/Workflow handling layer (1st commit)

This commit is contained in:
Erik Amaru Ortiz
2014-01-30 19:15:10 -04:00
parent 27f077838b
commit 70d61efda0
17 changed files with 359 additions and 42 deletions

View File

@@ -499,17 +499,21 @@ class Model
$result = self::updateDiagram($prjUid, $process->getProUid(), $diff);
self::log("Method: ".__METHOD__, 'Returns: ', $result);
return $result;
}
public static function updateDiagram($prjUid, $proUid, $diff)
{
self::log('executing: updateDiagram() with params -> ', $prjUid, $proUid, $diff);
self::log("Method: ".__METHOD__, 'Params: ', "\$prjUid: $prjUid", "\$proUid: $proUid", "\$diff:", $diff);
//return false;
$uids = array();
// Updating objects
/*
* Updating Records
*/
foreach ($diff['updated'] as $element => $items) {
foreach ($items as $data) {
$data = array_change_key_case((array) $data, CASE_UPPER);
@@ -550,7 +554,37 @@ class Model
}
}
// Creating new records
/*
* Deleting Records
*/
foreach ($diff['deleted'] as $element => $items) {
foreach ($items as $uid) {
$data = array_change_key_case((array) $data, CASE_UPPER);
switch ($element) {
case 'laneset':
break;
case 'lanes':
break;
case 'activities':
$activity = ActivityPeer::retrieveByPK($uid);
$activity->delete();
break;
case 'events':
break;
case 'gateways':
break;
case 'flows':
break;
case 'artifacts':
break;
}
}
}
/*
* Creating new records
*/
foreach ($diff['new'] as $element => $items) {
foreach ($items as $data) {
$data = array_change_key_case((array) $data, CASE_UPPER);
@@ -586,35 +620,6 @@ class Model
}
}
// Creating new records
foreach ($diff['deleted'] as $element => $items) {
foreach ($items as $uid) {
$data = array_change_key_case((array) $data, CASE_UPPER);
switch ($element) {
case 'laneset':
break;
case 'lanes':
break;
case 'activities':
$activity = ActivityPeer::retrieveByPK($uid);
$activity->delete();
$uidData['new_uid'] = $activity->getActUid();
$uids[] = $uidData;
break;
case 'events':
break;
case 'gateways':
break;
case 'flows':
break;
case 'artifacts':
break;
}
}
}
return $uids;
}
@@ -914,7 +919,7 @@ class Model
$me = Logger::getInstance();
$args = func_get_args();
array_unshift($args, 'Class '.__CLASS__.': ');
//array_unshift($args, 'Class '.__CLASS__.' ');
call_user_func_array(array($me, 'setLog'), $args);
}

View File

@@ -0,0 +1,9 @@
<?php
namespace ProcessMaker\Project\Adapter;
use ProcessMaker\Project\ProjectHandler;
class BpmnProject extends ProjectHandler
{
}

View File

@@ -0,0 +1,9 @@
<?php
namespace ProcessMaker\Project\Adapter;
use ProcessMaker\Project\Adapter\BpmnHandler;
class WorkflowBpmnProject extends BpmnHandler
{
}

View File

@@ -0,0 +1,56 @@
<?php
namespace ProcessMaker\Project\Adapter;
use \Process;
use \Task;
use ProcessMaker\Project\ProjectHandler;
class WorkflowProject extends ProjectHandler
{
public function create($data)
{
try {
// setting defaults
$data['TASKS'] = array_key_exists('TASKS', $data) ? $data['TASKS'] : array();
$data['ROUTES'] = array_key_exists('ROUTES', $data) ? $data['ROUTES'] : array();
// Create project
$process = new Process();
$proUid = $process->create($data, false);
// Create project's tasks
foreach ($data['TASKS'] as $taskData) {
$taskData['PRO_UID'] = $proUid;
$task = new Task();
$task->create($taskData, false);
}
// Create project's routes
foreach ($data['ROUTES'] as $route) {
}
} catch (Exception $e) {
//throw new \RuntimeException($e);
echo $e->getMessage() . PHP_EOL;
echo $e->getTraceAsString() . PHP_EOL;
die;
}
}
public function update($prjUid, $data)
{
// TODO: Implement update() method.
}
public function delete($prjUid)
{
// TODO: Implement delete() method.
}
public function load($prjUid)
{
// TODO: Implement load() method.
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace ProcessMaker\Project;
use ProcessMaker\Util\Logger;
abstract class ProjectHandler implements ProjectHandlerInterface
{
public abstract function create($data);
public abstract function update($prjUid, $data);
public abstract function delete($prjUid);
public abstract function load($prjUid);
/**
* Log in ProcessMaker Standard Output if debug mode is enabled.
*
* @author Erik Amaru Ortiz <aortiz.erik at icloud dot com>
* @internal param $args this method receives N-Arguments dynamically with any type, string, array, object, etc
* it means that you ca use it by example:
*
* self::log("Beginning transaction");
* self::log("Method: ", __METHOD__, 'Returns: ', $result);
*
*/
public static function log()
{
if (System::isDebugMode()) {
$me = Logger::getInstance();
$args = func_get_args();
//array_unshift($args, 'Class '.__CLASS__.' ');
call_user_func_array(array($me, 'setLog'), $args);
}
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace ProcessMaker\Project;
interface ProjectHandlerInterface
{
public function create($data);
public function update($prjUid, $data);
public function delete($prjUid);
public function load($prjUid);
}

View File

@@ -38,8 +38,10 @@ class Logger
$arg = print_r($arg, true);
}
$stat = fwrite($this->fp, "- " . date('Y-m-d H:i:s') . " " . $arg . PHP_EOL);
fwrite($this->fp, "- " . date('Y-m-d H:i:s') . " " . $arg . PHP_EOL);
}
if (count($args) > 1)
fwrite($this->fp, PHP_EOL);
}
public static function log()