adding flow -> task creation via BpmnWorkflow adapter
This commit is contained in:
@@ -33,7 +33,7 @@ class BpmnFlow extends BaseBpmnFlow
|
|||||||
while ($rs->next()) {
|
while ($rs->next()) {
|
||||||
$flow = $rs->getRow();
|
$flow = $rs->getRow();
|
||||||
$flow["FLO_STATE"] = @json_decode($flow["FLO_STATE"]);
|
$flow["FLO_STATE"] = @json_decode($flow["FLO_STATE"]);
|
||||||
$flow["FLO_IS_INMEDIATE"] = $flow["FLO_IS_INMEDIATE"] == 1 ? true : false;
|
//$flow["FLO_IS_INMEDIATE"] = $flow["FLO_IS_INMEDIATE"] == 1 ? true : false;
|
||||||
$flow = $changeCaseTo !== CASE_UPPER ? array_change_key_case($flow, CASE_LOWER) : $flow;
|
$flow = $changeCaseTo !== CASE_UPPER ? array_change_key_case($flow, CASE_LOWER) : $flow;
|
||||||
|
|
||||||
$flows[] = $flow;
|
$flows[] = $flow;
|
||||||
|
|||||||
@@ -392,8 +392,8 @@ class Model
|
|||||||
$lanes = self::getBpmnCollectionBy('Lane', LanePeer::PRJ_UID, $prjUid, true);
|
$lanes = self::getBpmnCollectionBy('Lane', LanePeer::PRJ_UID, $prjUid, true);
|
||||||
|
|
||||||
//$activities = self::getBpmnCollectionBy('Activity', ActivityPeer::PRJ_UID, $prjUid, true);
|
//$activities = self::getBpmnCollectionBy('Activity', ActivityPeer::PRJ_UID, $prjUid, true);
|
||||||
//$activities = Activity::getAll($prjUid, null, null, null, 'object', CASE_LOWER);
|
$activities = Activity::getAll($prjUid, null, null, null, 'object', CASE_LOWER);
|
||||||
$activities = Activity::getAll(array('prjUid' => $prjUid, 'changeCaseTo' => CASE_LOWER));
|
//$activities = Activity::getAll(array('prjUid' => $prjUid, 'changeCaseTo' => CASE_LOWER));
|
||||||
//print_r($activities); die;
|
//print_r($activities); die;
|
||||||
|
|
||||||
$events = self::getBpmnCollectionBy('Event', EventPeer::PRJ_UID, $prjUid, true);
|
$events = self::getBpmnCollectionBy('Event', EventPeer::PRJ_UID, $prjUid, true);
|
||||||
|
|||||||
@@ -141,4 +141,105 @@ class BpmnWorkflow extends Project\Bpmn
|
|||||||
parent::removeActivity($actUid);
|
parent::removeActivity($actUid);
|
||||||
$this->wp->removeTask($actUid);
|
$this->wp->removeTask($actUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addFlow($data)
|
||||||
|
{
|
||||||
|
parent::addFlow($data);
|
||||||
|
|
||||||
|
$fromUid = $data['FLO_ELEMENT_ORIGIN'];
|
||||||
|
|
||||||
|
if ($data['FLO_TYPE'] != 'SEQUENCE') {
|
||||||
|
throw new \LogicException(sprintf(
|
||||||
|
"Unsupported flow type: %s, ProcessMaker only support type '', Given: '%s'",
|
||||||
|
'SEQUENCE', $data['FLO_TYPE']
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($data['FLO_ELEMENT_DEST_TYPE']) {
|
||||||
|
case 'bpmnActivity':
|
||||||
|
// the most easy case, when the flow is connecting a activity with another activity
|
||||||
|
/*$data = array(
|
||||||
|
'ROU_UID' => $data['FLO_UID'], //Hash::generateUID(),
|
||||||
|
'PRO_UID' => $this->getUid(),
|
||||||
|
'TAS_UID' => $fromUid,
|
||||||
|
'ROU_NEXT_TASK' => $data['FLO_ELEMENT_DEST'],
|
||||||
|
'ROU_TYPE' => 'SEQUENTIAL'
|
||||||
|
);*/
|
||||||
|
$this->wp->addRoute($fromUid, $data['FLO_ELEMENT_DEST'], 'SEQUENTIAL');
|
||||||
|
break;
|
||||||
|
case 'bpmnGateway':
|
||||||
|
$gatUid = $data['FLO_ELEMENT_DEST'];
|
||||||
|
// if it is a gateway it can fork one or more routes
|
||||||
|
$gatFlows = BpmnModel::getBpmnCollectionBy('Flow', \BpmnFlowPeer::FLO_ELEMENT_ORIGIN, $gatUid);
|
||||||
|
|
||||||
|
foreach ($gatFlows as $gatFlow) {
|
||||||
|
switch ($gatFlow['FLO_ELEMENT_DEST_TYPE']) {
|
||||||
|
case 'bpmnActivity':
|
||||||
|
// getting gateway properties
|
||||||
|
$gateway = BpmnModel::getBpmnObjectBy('Gateway', \BpmnGatewayPeer::GAT_UID, $gatUid);
|
||||||
|
|
||||||
|
switch ($gateway['GAT_TYPE']) {
|
||||||
|
case 'SELECTION':
|
||||||
|
$routeType = 'SELECT';
|
||||||
|
break;
|
||||||
|
case 'EVALUATION':
|
||||||
|
$routeType = 'EVALUATE';
|
||||||
|
break;
|
||||||
|
case 'PARALLEL':
|
||||||
|
$routeType = 'PARALLEL';
|
||||||
|
break;
|
||||||
|
case 'PARALLEL_EVALUATION':
|
||||||
|
$routeType = 'PARALLEL-BY-EVALUATION';
|
||||||
|
break;
|
||||||
|
case 'PARALLEL_JOIN':
|
||||||
|
$routeType = 'SEC-JOIN';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new \LogicException(sprintf("Unsupported Gateway type: %s", $gateway['GAT_TYPE']));
|
||||||
|
}
|
||||||
|
|
||||||
|
$routes[] = array(
|
||||||
|
'ROU_UID' => $gatFlow['FLO_UID'], //Hash::generateUID(),
|
||||||
|
'PRO_UID' => $this->getUid(),
|
||||||
|
'TAS_UID' => $fromUid,
|
||||||
|
'ROU_NEXT_TASK' => $gatFlow['FLO_ELEMENT_DEST'],
|
||||||
|
'ROU_TYPE' => $routeType,
|
||||||
|
'_action' => 'CREATE'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// for processmaker is only allowed flows between "gateway -> activity"
|
||||||
|
// any another flow is considered invalid
|
||||||
|
throw new \LogicException(sprintf(
|
||||||
|
"For ProcessMaker is only allowed flows between \"gateway -> activity\" " . PHP_EOL .
|
||||||
|
"Given: bpmnGateway -> " . $gatFlow['FLO_ELEMENT_DEST_TYPE']
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'bpmnEvent':
|
||||||
|
$evnUid = $data['FLO_ELEMENT_DEST'];
|
||||||
|
$event = BpmnModel::getBpmnObjectBy('Event', \BpmnEventPeer::EVN_UID, $evnUid);
|
||||||
|
|
||||||
|
switch ($event['EVN_TYPE']) {
|
||||||
|
case 'END':
|
||||||
|
$routeType = 'SEQUENTIAL';
|
||||||
|
$routes[] = array(
|
||||||
|
'ROU_UID' => $data['FLO_UID'], //Hash::generateUID(),
|
||||||
|
'PRO_UID' => $this->getUid(),
|
||||||
|
'TAS_UID' => $fromUid,
|
||||||
|
'ROU_NEXT_TASK' => '-1',
|
||||||
|
'ROU_TYPE' => $routeType,
|
||||||
|
'_action' => 'CREATE'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new \LogicException("Invalid connection to Event object type");
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -225,7 +225,8 @@ class Workflow extends Handler
|
|||||||
|
|
||||||
public function addRoute($fromTasUid, $toTasUid, $type, $delete = null)
|
public function addRoute($fromTasUid, $toTasUid, $type, $delete = null)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
|
self::log("Add Route from task: $fromTasUid -> to task: $toTasUid ($type)");
|
||||||
/*switch ($type) {
|
/*switch ($type) {
|
||||||
case 0:
|
case 0:
|
||||||
$sType = 'SEQUENTIAL';
|
$sType = 'SEQUENTIAL';
|
||||||
@@ -274,7 +275,13 @@ class Workflow extends Handler
|
|||||||
$oTasks->deleteAllRoutesOfTask($this->proUid, $fromTasUid);
|
$oTasks->deleteAllRoutesOfTask($this->proUid, $fromTasUid);
|
||||||
//$oTasks->deleteAllGatewayOfTask($this->proUid, $fromTasUid);
|
//$oTasks->deleteAllGatewayOfTask($this->proUid, $fromTasUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $delete);
|
return $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $delete);
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateRoute($rouUid, $routeData)
|
public function updateRoute($rouUid, $routeData)
|
||||||
|
|||||||
@@ -35,15 +35,20 @@ class Project extends Api
|
|||||||
public function get($prjUid)
|
public function get($prjUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
//return \ProcessMaker\Adapter\Bpmn\Model::loadProject($prjUid);
|
||||||
|
|
||||||
$bwp = \ProcessMaker\Project\Adapter\BpmnWorkflow::load($prjUid);
|
$bwp = \ProcessMaker\Project\Adapter\BpmnWorkflow::load($prjUid);
|
||||||
|
|
||||||
$project = array_change_key_case($bwp->getProject(), CASE_LOWER);
|
$project = array_change_key_case($bwp->getProject(), CASE_LOWER);
|
||||||
$diagram = $bwp->getDiagram();
|
$diagram = $bwp->getDiagram();
|
||||||
|
$process = $bwp->getProcess();
|
||||||
|
$diagram["pro_uid"] = $process["PRO_UID"];
|
||||||
|
|
||||||
if (! is_null($diagram)) {
|
if (! is_null($diagram)) {
|
||||||
$diagram = array_change_key_case($diagram, CASE_LOWER);
|
$diagram = array_change_key_case($diagram, CASE_LOWER);
|
||||||
$diagram["activities"] = $bwp->getActivities(array("changeCaseTo" => CASE_LOWER));
|
$diagram["activities"] = $bwp->getActivities(array("changeCaseTo" => CASE_LOWER));
|
||||||
$diagram["events"] = $bwp->getEvents();
|
$diagram["events"] = $bwp->getEvents();
|
||||||
|
$diagram["gateways"] = $bwp->getGateways();
|
||||||
$diagram["flows"] = $bwp->getFlows();
|
$diagram["flows"] = $bwp->getFlows();
|
||||||
$diagram["artifacts"] = $bwp->getArtifacts();
|
$diagram["artifacts"] = $bwp->getArtifacts();
|
||||||
$diagram["laneset"] = $bwp->getLanesets();
|
$diagram["laneset"] = $bwp->getLanesets();
|
||||||
|
|||||||
Reference in New Issue
Block a user