ProcessMaker-MA "2170 Project Properties - Step resources"
- 1ra parte
- Se ha implementado los siguientes Endpoints:
GET /api/1.0/{workspace}/project/{prj_uid}/activity/{act_uid}/steps
GET /api/1.0/{workspace}/project/{prj_uid}/activity/{act_uid}/available-steps
GET /api/1.0/{workspace}/project/{prj_uid}/activity/{act_uid}/step/{step_uid}
POST /api/1.0/{workspace}/project/{prj_uid}/activity/{act_uid}/step
PUT /api/1.0/{workspace}/project/{prj_uid}/activity/{act_uid}/step/{step_uid}
DELETE /api/1.0/{workspace}/project/{prj_uid}/activity/{act_uid}/step/{step_uid}
This commit is contained in:
201
workflow/engine/src/BusinessModel/Step.php
Normal file
201
workflow/engine/src/BusinessModel/Step.php
Normal file
@@ -0,0 +1,201 @@
|
||||
<?php
|
||||
namespace BusinessModel;
|
||||
|
||||
class Step
|
||||
{
|
||||
/**
|
||||
* Create Step of an Task
|
||||
*
|
||||
* @param string $taskUid
|
||||
* @param string $processUid
|
||||
* @param array $arrayData
|
||||
*
|
||||
* return string Unique id of the new Step
|
||||
*/
|
||||
public function create($taskUid, $processUid, $arrayData)
|
||||
{
|
||||
try {
|
||||
$step = new \Step();
|
||||
|
||||
$stepUid = $step->create(array("PRO_UID" => $processUid, "TAS_UID" => $taskUid));
|
||||
|
||||
if (!isset($arrayData["step_position"]) || $arrayData["step_position"] == "") {
|
||||
$arrayData["step_position"] = $step->getNextPosition($taskUid) - 1;
|
||||
}
|
||||
|
||||
$this->update($stepUid, $arrayData);
|
||||
|
||||
return $stepUid;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Step of an Task
|
||||
*
|
||||
* @param string $stepUid
|
||||
* @param array $arrayData
|
||||
*
|
||||
* return void
|
||||
*/
|
||||
public function update($stepUid, $arrayData)
|
||||
{
|
||||
try {
|
||||
$step = new \Step();
|
||||
|
||||
$arrayUpdateData = array();
|
||||
|
||||
$arrayUpdateData["STEP_UID"] = $stepUid;
|
||||
|
||||
if (isset($arrayData["step_type_obj"]) && $arrayData["step_type_obj"] != "") {
|
||||
$arrayUpdateData["STEP_TYPE_OBJ"] = $arrayData["step_type_obj"];
|
||||
}
|
||||
|
||||
if (isset($arrayData["step_uid_obj"]) && $arrayData["step_uid_obj"] != "") {
|
||||
$arrayUpdateData["STEP_UID_OBJ"] = $arrayData["step_uid_obj"];
|
||||
}
|
||||
|
||||
if (isset($arrayData["step_condition"])) {
|
||||
$arrayUpdateData["STEP_CONDITION"] = $arrayData["step_condition"];
|
||||
}
|
||||
|
||||
if (isset($arrayData["step_position"]) && $arrayData["step_position"] != "") {
|
||||
$arrayUpdateData["STEP_POSITION"] = (int)($arrayData["step_position"]);
|
||||
}
|
||||
|
||||
if (isset($arrayData["step_mode"]) && $arrayData["step_mode"] != "") {
|
||||
$arrayUpdateData["STEP_MODE"] = $arrayData["step_mode"];
|
||||
}
|
||||
|
||||
$step->update($arrayUpdateData);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Step of an Task
|
||||
*
|
||||
* @param string $stepUid
|
||||
*
|
||||
* return void
|
||||
*/
|
||||
public function delete($stepUid)
|
||||
{
|
||||
try {
|
||||
//Get position
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\StepPeer::STEP_UID, $stepUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \StepPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
$rsCriteria->next();
|
||||
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$position = (int)($row["STEP_POSITION"]);
|
||||
|
||||
//Delete
|
||||
$step = new \Step();
|
||||
|
||||
$step->reOrder($stepUid, $position);
|
||||
$step->remove($stepUid);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data of an Step
|
||||
*
|
||||
* @param string $stepUid Unique id of the Step
|
||||
*
|
||||
* return array
|
||||
*/
|
||||
public function getStep($stepUid)
|
||||
{
|
||||
try {
|
||||
$arrayStep = array();
|
||||
|
||||
//Call plugin
|
||||
$pluginRegistry = &\PMPluginRegistry::getSingleton();
|
||||
$externalSteps = $pluginRegistry->getSteps();
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\StepPeer::STEP_UID, $stepUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \StepPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
$rsCriteria->next();
|
||||
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$titleObj = "";
|
||||
$descriptionObj = "";
|
||||
|
||||
switch ($row["STEP_TYPE_OBJ"]) {
|
||||
case "DYNAFORM":
|
||||
$dynaform = new \Dynaform();
|
||||
$arrayData = $dynaform->load($row["STEP_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["DYN_TITLE"];
|
||||
$descriptionObj = $arrayData["DYN_DESCRIPTION"];
|
||||
break;
|
||||
case "INPUT_DOCUMENT":
|
||||
$inputDocument = new \InputDocument();
|
||||
$arrayData = $inputDocument->getByUid($row["STEP_UID_OBJ"]);
|
||||
|
||||
if ($arrayData === false) {
|
||||
return $arrayStep;
|
||||
}
|
||||
|
||||
$titleObj = $arrayData["INP_DOC_TITLE"];
|
||||
$descriptionObj = $arrayData["INP_DOC_DESCRIPTION"];
|
||||
break;
|
||||
case "OUTPUT_DOCUMENT":
|
||||
$outputDocument = new \OutputDocument();
|
||||
$arrayData = $outputDocument->getByUid($row["STEP_UID_OBJ"]);
|
||||
|
||||
if ($arrayData === false) {
|
||||
return $arrayStep;
|
||||
}
|
||||
|
||||
$titleObj = $arrayData["OUT_DOC_TITLE"];
|
||||
$descriptionObj = $arrayData["OUT_DOC_DESCRIPTION"];
|
||||
break;
|
||||
case "EXTERNAL":
|
||||
$titleObj = "unknown " . $row["STEP_UID"];
|
||||
|
||||
if (is_array($externalSteps) && count($externalSteps) > 0) {
|
||||
foreach ($externalSteps as $key => $value) {
|
||||
if ($value->sStepId == $row["STEP_UID_OBJ"]) {
|
||||
$titleObj = $value->sStepTitle;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$arrayStep = array(
|
||||
"step_uid" => $stepUid,
|
||||
"step_type_obj" => $row["STEP_TYPE_OBJ"],
|
||||
"step_uid_obj" => $row["STEP_UID_OBJ"],
|
||||
"step_condition" => $row["STEP_CONDITION"],
|
||||
"step_position" => $row["STEP_POSITION"],
|
||||
"step_mode" => $row["STEP_MODE"],
|
||||
"obj_title" => $titleObj,
|
||||
"obj_description" => $descriptionObj
|
||||
);
|
||||
|
||||
return $arrayStep;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ class Task
|
||||
//Copy of processmaker/workflow/engine/methods/tasks/tasks_Ajax.php //case "saveTaskData":
|
||||
try {
|
||||
if (isset($arrayProperty['properties'])) {
|
||||
$arrayProperty = array_change_key_case($arrayProperty['properties'], CASE_UPPER);
|
||||
$arrayProperty = array_change_key_case($arrayProperty['properties'], CASE_UPPER);
|
||||
}
|
||||
$arrayProperty["TAS_UID"] = $taskUid;
|
||||
$arrayProperty["PRO_UID"] = $processUid;
|
||||
@@ -208,7 +208,7 @@ class Task
|
||||
$arrayProperty["TAS_ASSIGN_TYPE"] = "SELF_SERVICE";
|
||||
|
||||
if (trim($arrayProperty["TAS_GROUP_VARIABLE"]) == "") {
|
||||
$arrayProperty["TAS_GROUP_VARIABLE"] = "@@SYS_GROUP_TO_BE_ASSIGNED";
|
||||
$arrayProperty["TAS_GROUP_VARIABLE"] = "@@SYS_GROUP_TO_BE_ASSIGNED";
|
||||
}
|
||||
} else {
|
||||
$arrayProperty["TAS_GROUP_VARIABLE"] = "";
|
||||
@@ -252,197 +252,248 @@ class Task
|
||||
*
|
||||
* @param string $taskUid
|
||||
* @param string $processUid
|
||||
* @param bool $keyCaseToLower
|
||||
* @param int $start
|
||||
* @param int $limit
|
||||
*
|
||||
* return array
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function getStepsList($taskUid, $processUid, $keyCaseToLower = false, $start = 0, $limit = 25)
|
||||
public function getAvailableSteps($taskUid, $processUid)
|
||||
{
|
||||
try {
|
||||
//G::LoadClass("BasePeer");
|
||||
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php");
|
||||
$arrayAvailableStep = array();
|
||||
|
||||
$arrayData = array();
|
||||
$keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER;
|
||||
//Get Uids
|
||||
$arrayUid = array();
|
||||
|
||||
//Criteria
|
||||
$processMap = new \ProcessMap();
|
||||
$tasks = new \Tasks();
|
||||
$arrayStep = $tasks->getStepsOfTask($taskUid);
|
||||
|
||||
$criteria = $processMap->getAvailableBBCriteria($processUid, $taskUid);
|
||||
|
||||
if ($criteria->getDbName() == "dbarray") {
|
||||
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
||||
} else {
|
||||
$rsCriteria = \GulliverBasePeer::doSelectRS($criteria);
|
||||
foreach ($arrayStep as $step) {
|
||||
$arrayUid[] = $step["STEP_UID_OBJ"];
|
||||
}
|
||||
|
||||
//Array DB
|
||||
$arraydbStep = array();
|
||||
|
||||
$arraydbStep[] = array(
|
||||
"obj_uid" => "char",
|
||||
"obj_title" => "char",
|
||||
"obj_description" => "char",
|
||||
"obj_type" => "char"
|
||||
);
|
||||
|
||||
$delimiter = \DBAdapter::getStringDelimiter();
|
||||
|
||||
//DynaForms
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\DynaformPeer::DYN_UID);
|
||||
$criteria->addAsColumn("DYN_TITLE", "CT.CON_VALUE");
|
||||
$criteria->addAsColumn("DYN_DESCRIPTION", "CD.CON_VALUE");
|
||||
|
||||
$criteria->addAlias("CT", "CONTENT");
|
||||
$criteria->addAlias("CD", "CONTENT");
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\DynaformPeer::DYN_UID, "CT.CON_ID", \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "DYN_TITLE" . $delimiter, \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\DynaformPeer::DYN_UID, "CD.CON_ID", \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "DYN_DESCRIPTION" . $delimiter, \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
$criteria->add(\DynaformPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
$criteria->add(\DynaformPeer::DYN_UID, $arrayUid, \Criteria::NOT_IN);
|
||||
$criteria->add(\DynaformPeer::DYN_TYPE, "xmlform", \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \DynaformPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayData[] = array_change_key_case($row, $keyCase);
|
||||
}
|
||||
|
||||
return array_change_key_case(
|
||||
array("NUM_RECORDS" => count($arrayData), "DATA" => array_slice($arrayData, $start, $limit)),
|
||||
$keyCase
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all steps of the Task
|
||||
*
|
||||
* @param string $taskUid
|
||||
* @param bool $keyCaseToLower
|
||||
*
|
||||
* return array
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function getSteps($taskUid, $keyCaseToLower = false)
|
||||
{
|
||||
try {
|
||||
//G::LoadClass("BasePeer");
|
||||
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php");
|
||||
|
||||
$arrayData = array();
|
||||
$keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER;
|
||||
|
||||
//Criteria
|
||||
$processMap = new \ProcessMap();
|
||||
|
||||
$criteria = $processMap->getStepsCriteria($taskUid);
|
||||
|
||||
if ($criteria->getDbName() == "dbarray") {
|
||||
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
||||
} else {
|
||||
$rsCriteria = \GulliverBasePeer::doSelectRS($criteria);
|
||||
}
|
||||
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayData[] = array_change_key_case($row, $keyCase);
|
||||
}
|
||||
|
||||
return $arrayData;
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all triggers of the Task
|
||||
*
|
||||
* @param string $taskUid
|
||||
* @param bool $keyCaseToLower
|
||||
*
|
||||
* return array
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function getTriggers($taskUid, $keyCaseToLower = false)
|
||||
{
|
||||
try {
|
||||
//G::LoadClass("BasePeer");
|
||||
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php");
|
||||
|
||||
$arrayData = array();
|
||||
$keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER;
|
||||
|
||||
$arrayTriggerType1 = array(
|
||||
"BEFORE" => "BEFORE",
|
||||
"AFTER" => "AFTER"
|
||||
);
|
||||
$arrayTriggerType2 = array(
|
||||
"BEFORE_ASSIGNMENT" => "BEFORE",
|
||||
"BEFORE_ROUTING" => "BEFORE",
|
||||
"AFTER_ROUTING" => "AFTER"
|
||||
);
|
||||
|
||||
$processMap = new \ProcessMap();
|
||||
$stepTgr = new \StepTrigger();
|
||||
|
||||
$arraySteps = $this->getSteps($taskUid);
|
||||
$n = count($arraySteps) + 1;
|
||||
|
||||
$arraySteps[] = array(
|
||||
"STEP_UID" => "",
|
||||
//"STEP_TITLE" => G::LoadTranslation("ID_ASSIGN_TASK"),
|
||||
"STEP_TITLE" => "Assign Task",
|
||||
"STEP_TYPE_OBJ" => "",
|
||||
"STEP_MODE" => "",
|
||||
"STEP_CONDITION" => "",
|
||||
"STEP_POSITION" => $n
|
||||
);
|
||||
|
||||
foreach ($arraySteps as $index1 => $value1) {
|
||||
$step = $value1;
|
||||
|
||||
$stepUid = $step["STEP_UID"];
|
||||
|
||||
//Set data
|
||||
$arrayDataAux1 = array();
|
||||
|
||||
$arrayDataAux1["STEP_UID"] = $stepUid;
|
||||
|
||||
$arrayTriggerType = ($stepUid != "")? $arrayTriggerType1 : $arrayTriggerType2;
|
||||
|
||||
foreach ($arrayTriggerType as $index2 => $value2) {
|
||||
$triggerType = $index2;
|
||||
$type = $value2;
|
||||
|
||||
switch ($triggerType) {
|
||||
case "BEFORE_ASSIGNMENT":
|
||||
$stepUid = "-1";
|
||||
break;
|
||||
case "BEFORE_ROUTING":
|
||||
$stepUid = "-2";
|
||||
break;
|
||||
case "AFTER_ROUTING":
|
||||
$stepUid = "-2";
|
||||
break;
|
||||
}
|
||||
|
||||
$stepTgr->orderPosition($stepUid, $taskUid, $type);
|
||||
|
||||
$arrayDataAux2 = array();
|
||||
|
||||
//Criteria
|
||||
$criteria = $processMap->getStepTriggersCriteria($stepUid, $taskUid, $type);
|
||||
|
||||
if ($criteria->getDbName() == "dbarray") {
|
||||
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
||||
} else {
|
||||
$rsCriteria = \GulliverBasePeer::doSelectRS($criteria);
|
||||
}
|
||||
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayDataAux2[] = array_change_key_case($row, $keyCase);
|
||||
}
|
||||
|
||||
$arrayDataAux1[$triggerType] = $arrayDataAux2;
|
||||
if ($row["DYN_TITLE"] . "" == "") {
|
||||
//There is no transaltion for this Document name, try to get/regenerate the label
|
||||
$row["DYN_TITLE"] = \Content::Load("DYN_TITLE", "", $row["DYN_UID"], SYS_LANG);
|
||||
}
|
||||
|
||||
$arrayData[] = array_change_key_case($arrayDataAux1, $keyCase);
|
||||
$arraydbStep[] = array(
|
||||
"obj_uid" => $row["DYN_UID"],
|
||||
"obj_title" => $row["DYN_TITLE"],
|
||||
"obj_description" => $row["DYN_DESCRIPTION"],
|
||||
"obj_type" => "DYNAFORM"
|
||||
);
|
||||
}
|
||||
|
||||
return $arrayData;
|
||||
} catch (Exception $e) {
|
||||
//InputDocuments
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_UID);
|
||||
$criteria->addAsColumn("INP_DOC_TITLE", "CT.CON_VALUE");
|
||||
$criteria->addAsColumn("INP_DOC_DESCRIPTION", "CD.CON_VALUE");
|
||||
|
||||
$criteria->addAlias("CT", "CONTENT");
|
||||
$criteria->addAlias("CD", "CONTENT");
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CT.CON_ID", \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "INP_DOC_TITLE" . $delimiter, \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CD.CON_ID", \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "INP_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
$criteria->add(\InputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
$criteria->add(\InputDocumentPeer::INP_DOC_UID, $arrayUid, \Criteria::NOT_IN);
|
||||
|
||||
$rsCriteria = \InputDocumentPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
if ($row["INP_DOC_TITLE"] . "" == "") {
|
||||
//There is no transaltion for this Document name, try to get/regenerate the label
|
||||
$row["INP_DOC_TITLE"] = \Content::Load("INP_DOC_TITLE", "", $row["INP_DOC_UID"], SYS_LANG);
|
||||
}
|
||||
|
||||
$arraydbStep[] = array(
|
||||
"obj_uid" => $row["INP_DOC_UID"],
|
||||
"obj_title" => $row["INP_DOC_TITLE"],
|
||||
"obj_description" => $row["INP_DOC_DESCRIPTION"],
|
||||
"obj_type" => "INPUT_DOCUMENT"
|
||||
);
|
||||
}
|
||||
|
||||
//OutputDocuments
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID);
|
||||
$criteria->addAsColumn("OUT_DOC_TITLE", "CT.CON_VALUE");
|
||||
$criteria->addAsColumn("OUT_DOC_DESCRIPTION", "CD.CON_VALUE");
|
||||
|
||||
$criteria->addAlias("CT", "CONTENT");
|
||||
$criteria->addAlias("CD", "CONTENT");
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CT.CON_ID", \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "OUT_DOC_TITLE" . $delimiter, \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CD.CON_ID", \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "OUT_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL);
|
||||
$arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
$criteria->add(\OutputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
$criteria->add(\OutputDocumentPeer::OUT_DOC_UID, $arrayUid, \Criteria::NOT_IN);
|
||||
|
||||
$rsCriteria = \OutputDocumentPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
if ($row["OUT_DOC_TITLE"] . "" == "") {
|
||||
//There is no transaltion for this Document name, try to get/regenerate the label
|
||||
$row["OUT_DOC_TITLE"] = \Content::Load("OUT_DOC_TITLE", "", $row["OUT_DOC_UID"], SYS_LANG);
|
||||
}
|
||||
|
||||
$arraydbStep[] = array(
|
||||
"obj_uid" => $row["OUT_DOC_UID"],
|
||||
"obj_title" => $row["OUT_DOC_TITLE"],
|
||||
"obj_description" => $row["OUT_DOC_DESCRIPTION"],
|
||||
"obj_type" => "OUTPUT_DOCUMENT"
|
||||
);
|
||||
}
|
||||
|
||||
//Call plugin
|
||||
$pluginRegistry = &\PMPluginRegistry::getSingleton();
|
||||
$externalSteps = $pluginRegistry->getSteps();
|
||||
|
||||
if (is_array($externalSteps) && count($externalSteps) > 0) {
|
||||
foreach ($externalSteps as $key => $value) {
|
||||
$arraydbStep[] = array(
|
||||
"obj_uid" => $value->sStepId,
|
||||
"obj_title" => $value->sStepTitle,
|
||||
"obj_description" => "",
|
||||
"obj_type" => "EXTERNAL"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
\G::LoadClass("ArrayPeer");
|
||||
|
||||
global $_DBArray;
|
||||
|
||||
$_DBArray = (isset($_SESSION["_DBArray"]))? $_SESSION["_DBArray"] : "";
|
||||
$_DBArray["STEP"] = $arraydbStep;
|
||||
|
||||
$_SESSION["_DBArray"] = $_DBArray;
|
||||
|
||||
$criteria = new \Criteria("dbarray");
|
||||
|
||||
$criteria->setDBArrayTable("STEP");
|
||||
$criteria->addAscendingOrderByColumn("obj_type");
|
||||
$criteria->addAscendingOrderByColumn("obj_title");
|
||||
|
||||
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayAvailableStep[] = $row;
|
||||
}
|
||||
|
||||
return $arrayAvailableStep;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all steps of an Task
|
||||
*
|
||||
* @param string $taskUid Unique id of the Task
|
||||
*
|
||||
* return array
|
||||
*/
|
||||
public function getSteps($taskUid)
|
||||
{
|
||||
try {
|
||||
$arrayStep = array();
|
||||
|
||||
$step = new \BusinessModel\Step();
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\StepPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
|
||||
$criteria->addAscendingOrderByColumn(\StepPeer::STEP_POSITION);
|
||||
|
||||
$rsCriteria = \StepPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayData = $step->getStep($row["STEP_UID"]);
|
||||
|
||||
if (count($arrayData) > 0) {
|
||||
$arrayStep[] = $arrayData;
|
||||
}
|
||||
}
|
||||
|
||||
return $arrayStep;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ use \Luracast\Restler\RestException;
|
||||
*/
|
||||
class Activity extends Api
|
||||
{
|
||||
/**
|
||||
/**
|
||||
* @url GET /:projectUid/activity/:activityUid
|
||||
*/
|
||||
public function doGetProjectActivity($projectUid, $activityUid, $filter = '')
|
||||
@@ -54,7 +54,7 @@ class Activity extends Api
|
||||
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* @url PUT /:projectUid/activity/:activityUid
|
||||
*/
|
||||
public function doPutProjectActivity($projectUid, $activityUid, $request_data = array())
|
||||
@@ -69,7 +69,7 @@ class Activity extends Api
|
||||
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* @url DELETE /:projectUid/activity/:activityUid
|
||||
*/
|
||||
public function doDeleteProjectActivity($projectUid, $activityUid)
|
||||
@@ -81,5 +81,37 @@ class Activity extends Api
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url GET /:projectUid/activity/:activityUid/steps
|
||||
*/
|
||||
public function doGetActivitySteps($activityUid, $projectUid)
|
||||
{
|
||||
try {
|
||||
$task = new \BusinessModel\Task();
|
||||
|
||||
$response = $task->getSteps($activityUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url GET /:projectUid/activity/:activityUid/available-steps
|
||||
*/
|
||||
public function doGetActivityAvailableSteps($activityUid, $projectUid)
|
||||
{
|
||||
try {
|
||||
$task = new \BusinessModel\Task();
|
||||
|
||||
$response = $task->getAvailableSteps($activityUid, $projectUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
namespace Services\Api\ProcessMaker\Project\Activity;
|
||||
|
||||
use \ProcessMaker\Api;
|
||||
use \Luracast\Restler\RestException;
|
||||
|
||||
/**
|
||||
* Project\Activity\Step Api Controller
|
||||
*
|
||||
* @protected
|
||||
*/
|
||||
class Step extends Api
|
||||
{
|
||||
/**
|
||||
* @url GET /:projectUid/activity/:activityUid/step/:stepUid
|
||||
*/
|
||||
public function doGetActivityStep($stepUid, $activityUid, $projectUid)
|
||||
{
|
||||
try {
|
||||
$step = new \BusinessModel\Step();
|
||||
|
||||
$response = $step->getStep($stepUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url POST /:projectUid/activity/:activityUid/step
|
||||
*/
|
||||
public function doPostActivityStep($activityUid, $projectUid, $request_data = array())
|
||||
{
|
||||
try {
|
||||
$step = new \BusinessModel\Step();
|
||||
|
||||
$stepUid = $step->create($activityUid, $projectUid, $request_data);
|
||||
|
||||
$response = array("old_uid" => $request_data["step_uid"], "new_uid" => $stepUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url PUT /:projectUid/activity/:activityUid/step/:stepUid
|
||||
*/
|
||||
public function doPutActivityStep($stepUid, $activityUid, $projectUid, $request_data = array())
|
||||
{
|
||||
try {
|
||||
$step = new \BusinessModel\Step();
|
||||
|
||||
$step->update($stepUid, $request_data);
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url DELETE /:projectUid/activity/:activityUid/step/:stepUid
|
||||
*/
|
||||
public function doDeleteActivityStep($stepUid, $activityUid, $projectUid)
|
||||
{
|
||||
try {
|
||||
$step = new \BusinessModel\Step();
|
||||
|
||||
$step->delete($stepUid);
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user