Adding Flows handling to Project\Bpmn handler class
This commit is contained in:
@@ -14,6 +14,37 @@ require_once 'classes/model/om/BaseBpmnFlow.php';
|
|||||||
*
|
*
|
||||||
* @package classes.model
|
* @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
|
} // BpmnFlow
|
||||||
|
|||||||
@@ -290,7 +290,7 @@ class Bpmn extends Handler
|
|||||||
public function addEvent($data)
|
public function addEvent($data)
|
||||||
{
|
{
|
||||||
// setting defaults
|
// 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 = new Event();
|
||||||
$event->fromArray($data);
|
$event->fromArray($data);
|
||||||
@@ -325,7 +325,7 @@ class Bpmn extends Handler
|
|||||||
public function addGateway($data)
|
public function addGateway($data)
|
||||||
{
|
{
|
||||||
// setting defaults
|
// 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 = new Gateway();
|
||||||
$gateway->fromArray($data);
|
$gateway->fromArray($data);
|
||||||
@@ -360,35 +360,39 @@ class Bpmn extends Handler
|
|||||||
public function addFlow($data)
|
public function addFlow($data)
|
||||||
{
|
{
|
||||||
// setting defaults
|
// setting defaults
|
||||||
$data['GAT_UID'] = array_key_exists('GAT_UID', $data) ? $data['GAT_UID'] : Hash::generateUID();;
|
$data['FLO_UID'] = array_key_exists('FLO_UID', $data) ? $data['FLO_UID'] : Hash::generateUID();
|
||||||
$data['FLO_STATE'] = json_encode($data['FLO_STATE']);
|
$data['FLO_STATE'] = is_array($data['FLO_STATE']) ? json_encode($data['FLO_STATE']) : $data['FLO_STATE'];
|
||||||
|
|
||||||
$flow = new Flow();
|
try {
|
||||||
$flow->fromArray($data, BasePeer::TYPE_FIELDNAME);
|
self::log("Add Flow with data: ", $data);
|
||||||
$flow->setPrjUid($this->project->getPrjUid());
|
|
||||||
$flow->setDiaUid($this->getDiagram("object")->getDiaUid());
|
$flow = new Flow();
|
||||||
$flow->save();
|
$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 = FlowPeer::retrieveByPK($floUid);
|
||||||
$flow = GatewayPeer::retrieveByPK($floUid);
|
|
||||||
|
|
||||||
if (! is_object($flow)) {
|
if ($retType != "object" && ! empty($activity)) {
|
||||||
return null;
|
$flow = $flow->toArray();
|
||||||
}
|
|
||||||
|
|
||||||
$this->flows[$floUid] = $flow;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->flows[$floUid];
|
return $flow;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFlows($retType = 'array')
|
public function getFlows($retType = 'array')
|
||||||
{
|
{
|
||||||
//return Activity::getAll($this->project->getPrjUid(), null, null, '', $retType);
|
return Flow::getAll($this->getUid(), null, null, '', $retType);
|
||||||
return array();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addArtifact($data)
|
public function addArtifact($data)
|
||||||
|
|||||||
@@ -114,6 +114,9 @@ class Project extends Api
|
|||||||
'lanes' => 'lan_uid'
|
'lanes' => 'lan_uid'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Diagram's Activities Handling
|
||||||
|
*/
|
||||||
$whiteList = array();
|
$whiteList = array();
|
||||||
foreach ($diagram["activities"] as $activityData) {
|
foreach ($diagram["activities"] as $activityData) {
|
||||||
$activityData = array_change_key_case($activityData, CASE_UPPER);
|
$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;
|
return $result;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||||
|
|||||||
Reference in New Issue
Block a user