From a9746497bc2da5cb15893fa4f089af92b8eebf2f Mon Sep 17 00:00:00 2001 From: erik Date: Thu, 5 Dec 2013 23:01:02 -0400 Subject: [PATCH] adding 'GET /projects' endpoint --- .../src/ProcessMaker/Adapter/Bpmn/Model.php | 61 +++++++++++++------ .../src/Services/Api/ProcessMaker/Project.php | 12 +++- 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/Adapter/Bpmn/Model.php b/workflow/engine/src/ProcessMaker/Adapter/Bpmn/Model.php index b8e8b74b2..194982e72 100644 --- a/workflow/engine/src/ProcessMaker/Adapter/Bpmn/Model.php +++ b/workflow/engine/src/ProcessMaker/Adapter/Bpmn/Model.php @@ -45,7 +45,6 @@ class Model unset($data['PRJ_UID']); - /* * 1. Create a project record * 2. Create a default diagram record @@ -61,7 +60,7 @@ class Model $prjName = $project->getPrjName(); $uids[] = array('old_uid' => $oldPrjUid, 'new_uid' => $prjUid, 'object' => 'project'); - // By now, is thought create a only one diagram for a project/process (1:1) + // By now, is thought create only one diagram for each project (1:1) $diagramData = (array) $diagrams[0]; $oldDiaUid = $diagramData['dia_uid']; @@ -73,7 +72,6 @@ class Model $diaUid = $diagram->getDiaUid(); $uids[] = array('old_uid' => $oldDiaUid, 'new_uid' => $diaUid, 'object' => 'diagram'); - $process = new Process(); $process->setProUid(Hash::generateUID()); $process->setPrjUid($prjUid); @@ -92,8 +90,8 @@ class Model $uids = array(); /* - * 1. ensure that all related object data is defined, if not define it as empty - * 2. create all related object + * 1. ensure that all related data of objects are defined, if not we define them as empty + * 2. create all related objects */ $lanesets = array_key_exists('laneset', $diagramData) ? $diagramData['laneset'] : array(); @@ -104,7 +102,6 @@ class Model $flows = array_key_exists('flows', $diagramData) ? $diagramData['flows'] : array(); $artifacts = array_key_exists('artifacts', $diagramData) ? $diagramData['artifacts'] : array(); - foreach($lanesets as $lanesetData) { $lanesetData = array_change_key_case((array) $lanesetData, CASE_UPPER); @@ -134,13 +131,15 @@ class Model $uids[] = array('old_uid' => $oldLanUid, 'new_uid' => $lanUid, 'object' => 'lane'); } + /* + * 1. crate project related object + * 2. crate bound record for each object created previously + */ + foreach($activities as $activityData) { $activityData = array_change_key_case((array) $activityData, CASE_UPPER); - /* - * 1. crate activity record - * 2. crate bound record for activity created in previous step - */ + $activity = new Activity(); $activity->fromArray($activityData, BasePeer::TYPE_FIELDNAME); $activity->setActUid(Hash::generateUID()); @@ -168,12 +167,7 @@ class Model foreach($events as $eventData) { $eventData = array_change_key_case((array) $eventData, CASE_UPPER); - /* - * 1. crate activity record - * 2. crate bound record for activity created in previous step - */ $event = new Event(); - $event->fromArray($eventData, BasePeer::TYPE_FIELDNAME); $event->setEvnUid(Hash::generateUID()); $event->setPrjUid($prjUid); @@ -199,10 +193,6 @@ class Model foreach($gateways as $gatewayData) { $gatewayData = array_change_key_case((array) $gatewayData, CASE_UPPER); - /* - * 1. crate activity record - * 2. crate bound record for activity created in previous step - */ $gateway = new Gateway(); $gateway->fromArray($gatewayData, BasePeer::TYPE_FIELDNAME); $gateway->setGatUid(Hash::generateUID()); @@ -303,6 +293,39 @@ class Model return $project; } + public static function loadProjects() + { + $projectsList = self::getAllBpmnCollectionFrom('Project', true); + $projects = array(); + + foreach ($projectsList as $project) { + $projects[] = self::loadProject($project['prj_uid']); + } + + return $projects; + } + + /*** Private Functions ***/ + + private static function getAllBpmnCollectionFrom($class, $changeCase = false) + { + $data = array(); + + $c = new \Criteria('workflow'); + //$c->add($field, $value); + + $classPeer = 'Bpmn' . $class . 'Peer'; + $rs = $classPeer::doSelectRS($c); + + $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rs->next()) { + $data[] = $changeCase ? array_change_key_case($rs->getRow(), CASE_LOWER) : $rs->getRow(); + } + + return $data; + } + private static function getBpmnCollectionBy($class, $field, $value, $changeCase = false) { $data = array(); diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project.php b/workflow/engine/src/Services/Api/ProcessMaker/Project.php index 717a915a0..71bf847f7 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project.php @@ -15,6 +15,16 @@ use ProcessMaker\Adapter\Bpmn\Model as BpmnModel; */ class Project extends Api { + function index() + { + try { + $projects = BpmnModel::loadProjects(); + + return $projects; + } catch (\Exception $e) { + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + } function post($request_data) { @@ -37,4 +47,4 @@ class Project extends Api throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } -} \ No newline at end of file +}