Adding Flows handling to Project\Bpmn handler class

This commit is contained in:
Erik Amaru Ortiz
2014-02-06 20:30:27 -04:00
parent 5221c5ca94
commit e869df7ad5
3 changed files with 84 additions and 21 deletions

View File

@@ -14,6 +14,37 @@ require_once 'classes/model/om/BaseBpmnFlow.php';
*
* @package classes.model
*/
class BpmnFlow extends BaseBpmnFlow {
class BpmnFlow extends BaseBpmnFlow
{
public static function getAll($prjUid = null, $start = null, $limit = null, $filter = '', $changeCaseTo = CASE_UPPER)
{
//TODO implement $start, $limit and $filter
$c = new Criteria('workflow');
if (! is_null($prjUid)) {
$c->add(BpmnFlowPeer::PRJ_UID, $prjUid, Criteria::EQUAL);
}
$rs = BpmnFlowPeer::doSelectRS($c);
$rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$flows = array();
while ($rs->next()) {
$flow = $rs->getRow();
$flow["FLO_STATE"] = @json_decode($flow["FLO_STATE"]);
$flow["FLO_IS_INMEDIATE"] = $flow["FLO_IS_INMEDIATE"] == 1 ? true : false;
$flow = $changeCaseTo !== CASE_UPPER ? array_change_key_case($flow, CASE_LOWER) : $flow;
$flows[] = $flow;
}
return $flows;
}
public function toArray($type = BasePeer::TYPE_FIELDNAME)
{
return parent::toArray($type);
}
} // BpmnFlow

View File

@@ -290,7 +290,7 @@ class Bpmn extends Handler
public function addEvent($data)
{
// setting defaults
$data['EVN_UID'] = array_key_exists('EVN_UID', $data) ? $data['EVN_UID'] : Hash::generateUID();;
$data['EVN_UID'] = array_key_exists('EVN_UID', $data) ? $data['EVN_UID'] : Hash::generateUID();
$event = new Event();
$event->fromArray($data);
@@ -325,7 +325,7 @@ class Bpmn extends Handler
public function addGateway($data)
{
// setting defaults
$data['GAT_UID'] = array_key_exists('GAT_UID', $data) ? $data['GAT_UID'] : Hash::generateUID();;
$data['GAT_UID'] = array_key_exists('GAT_UID', $data) ? $data['GAT_UID'] : Hash::generateUID();
$gateway = new Gateway();
$gateway->fromArray($data);
@@ -360,35 +360,39 @@ class Bpmn extends Handler
public function addFlow($data)
{
// setting defaults
$data['GAT_UID'] = array_key_exists('GAT_UID', $data) ? $data['GAT_UID'] : Hash::generateUID();;
$data['FLO_STATE'] = json_encode($data['FLO_STATE']);
$data['FLO_UID'] = array_key_exists('FLO_UID', $data) ? $data['FLO_UID'] : Hash::generateUID();
$data['FLO_STATE'] = is_array($data['FLO_STATE']) ? json_encode($data['FLO_STATE']) : $data['FLO_STATE'];
$flow = new Flow();
$flow->fromArray($data, BasePeer::TYPE_FIELDNAME);
$flow->setPrjUid($this->project->getPrjUid());
$flow->setDiaUid($this->getDiagram("object")->getDiaUid());
$flow->save();
try {
self::log("Add Flow with data: ", $data);
$flow = new Flow();
$flow->fromArray($data, BasePeer::TYPE_FIELDNAME);
$flow->setPrjUid($this->getUid());
$flow->setDiaUid($this->getDiagram("object")->getDiaUid());
$flow->save();
self::log("Add Flow Success!");
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
public function getFlow($floUid)
public function getFlow($floUid, $retType = 'array')
{
if (empty($this->flows) || ! array_key_exists($floUid, $this->flows)) {
$flow = GatewayPeer::retrieveByPK($floUid);
$flow = FlowPeer::retrieveByPK($floUid);
if (! is_object($flow)) {
return null;
}
$this->flows[$floUid] = $flow;
if ($retType != "object" && ! empty($activity)) {
$flow = $flow->toArray();
}
return $this->flows[$floUid];
return $flow;
}
public function getFlows($retType = 'array')
{
//return Activity::getAll($this->project->getPrjUid(), null, null, '', $retType);
return array();
return Flow::getAll($this->getUid(), null, null, '', $retType);
}
public function addArtifact($data)

View File

@@ -114,6 +114,9 @@ class Project extends Api
'lanes' => 'lan_uid'
);
/*
* Diagram's Activities Handling
*/
$whiteList = array();
foreach ($diagram["activities"] as $activityData) {
$activityData = array_change_key_case($activityData, CASE_UPPER);
@@ -146,6 +149,31 @@ class Project extends Api
}
}
/*
* Diagram's Flows Handling
*/
$whiteList = array();
foreach ($diagram["flows"] as $flowData) {
$flowData = array_change_key_case($flowData, CASE_UPPER);
// activity exists ?
if ($activity = $bwp->getFlow($flowData["FLO_UID"])) {
// then update activity
//$bwp->updateFlow($activityData["FLO_UID"], $flowData);
//$whiteList[] = $activityData["FLO_UID"];
} else {
// if not exists then create it
$oldFloUid = $flowData["FLO_UID"];
$flowData["FLO_UID"] = Hash::generateUID();
$bwp->addFlow($flowData);
$result[] = array("object" => "flow", "new_uid" => $flowData["FLO_UID"], "old_uid" => $oldFloUid);
$whiteList[] = $flowData["FLO_UID"];
}
}
return $result;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());