diff --git a/workflow/engine/services/api/processmaker/Process.php b/workflow/engine/services/api/processmaker/Process.php new file mode 100644 index 000000000..d51f2869d --- /dev/null +++ b/workflow/engine/services/api/processmaker/Process.php @@ -0,0 +1,275 @@ +loadAllProcess($arrayFilterData, $start, $limit); + + //Response + $response["success"] = true; + $response["message"] = "Processes loaded successfully"; + $response["data"] = $data; + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + public function post($request_data = null) + { + define("SYS_LANG", $request_data["lang"]); + + $response = array(); + + try { + $userUid = "00000000000000000000000000000001"; //$this->getUserId() + + $process = new \BusinessModel\Process(); + + $data = $process->createProcess($userUid, $request_data); + + //Response + $response["success"] = true; + $response["message"] = "Process saved successfully"; + $response["data"] = $data; + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + public function get($processUid) + { + $response = array(); + + try { + $process = new \BusinessModel\Process(); + + $data = $process->loadProcess($processUid); + + //Response + $response["success"] = true; + $response["message"] = "Process load successfully"; + $response["data"] = $data; + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + public function put($processUid, $request_data = null) + { + $response = array(); + + try { + $userUid = "00000000000000000000000000000001"; + + $process = new \BusinessModel\Process(); + + $data = $process->updateProcess($processUid, $userUid, $request_data); + + //Response + $response["success"] = true; + $response["message"] = "Process updated successfully"; + $response["data"] = $data; + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + public function delete($processUid, $checkCases = 1) + { + $response = array(); + + try { + $process = new \BusinessModel\Process(); + + $result = $process->deleteProcess($processUid, (($checkCases && $checkCases == 1)? true : false)); + + //Response + $response["success"] = true; + $response["message"] = "Process was deleted successfully"; + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + + + + + /** + * @url GET /:processUid/activity/:activityUid + */ + public function getActivity($activityUid, $processUid) + { + $response = array(); + + try { + $task1 = new \Task(); + $task2 = new \BusinessModel\Task(); + + $arrayData = $task1->load($activityUid); + + $arrayData = array( + //"tas_uid" => $activityUid, + "tas_title" => $arrayData["TAS_TITLE"], + "tas_description" => $arrayData["TAS_DESCRIPTION"], + "tas_posx" => $arrayData["TAS_POSX"], + "tas_posy" => $arrayData["TAS_POSY"], + "tas_start" => $arrayData["TAS_START"], + "_extended" => array( + "properties" => $task2->getProperties($activityUid, true), + "steps" => array( + "steps" => $task2->getSteps($activityUid, true), + "conditions" => "...", //lo mismo que steps //$task->getSteps() + "triggers" => $task2->getTriggers($activityUid, true), + "users" => $task2->getUsers($activityUid, 1, true), + "users_adhoc" => $task2->getUsers($activityUid, 2, true) + ) + ) + ); + + //Response + $response["success"] = true; + $response["message"] = "Properties loaded successfully"; + $response["data"] = array("activity" => $arrayData); + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + /** + * @url GET /:processUid/activity/:activityUid/properties + */ + public function getActivityProperties($activityUid, $processUid) + { + $response = array(); + + try { + $task1 = new \Task(); + + $arrayData = $task1->load($activityUid); + + $arrayData = array( + //"tas_uid" => $activityUid, + "tas_title" => $arrayData["TAS_TITLE"], + "tas_description" => $arrayData["TAS_DESCRIPTION"], + "tas_posx" => $arrayData["TAS_POSX"], + "tas_posy" => $arrayData["TAS_POSY"], + "tas_start" => $arrayData["TAS_START"] + ); + + //Response + $response["success"] = true; + $response["message"] = "Properties loaded successfully"; + $response["data"] = array("activity" => $arrayData); + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + /** + * @url GET /:processUid/activity/:activityUid/extended + */ + public function getActivityExtended($activityUid, $processUid) + { + $response = array(); + + try { + $task2 = new \BusinessModel\Task(); + + $arrayData = array( + "_extended" => array( + "properties" => $task2->getProperties($activityUid, true), + "steps" => array( + "steps" => $task2->getSteps($activityUid, true), + "conditions" => "...", //lo mismo que steps //$task->getSteps() + "triggers" => $task2->getTriggers($activityUid, true), + "users" => $task2->getUsers($activityUid, 1, true), + "users_adhoc" => $task2->getUsers($activityUid, 2, true) + ) + ) + ); + + //Response + $response["success"] = true; + $response["message"] = "Extended loaded successfully"; + $response["data"] = array("activity" => $arrayData); + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } + + /** + * @url GET /:processUid/activity/:activityUid/steps/list + */ + public function getActivityStepsList($activityUid, $processUid, $start = 0, $limit = 10) + { + $response = array(); + + try { + $task = new \BusinessModel\Task(); + + $data = $task->getStepsList($activityUid, $processUid, false, $start, $limit); + + //Response + $response["success"] = true; + $response["message"] = "Steps loaded successfully"; + $response["data"] = $data; + } catch (Exception $e) { + //Response + $response["success"] = false; + $response["message"] = $e->getMessage(); + } + + return $response; + } +} + diff --git a/workflow/engine/src/BusinessModel/Process.php b/workflow/engine/src/BusinessModel/Process.php index 93f7d4e81..335c9f9d2 100644 --- a/workflow/engine/src/BusinessModel/Process.php +++ b/workflow/engine/src/BusinessModel/Process.php @@ -20,7 +20,7 @@ class Process { //Copy of processmaker/workflow/engine/methods/processes/processes_Ajax.php //case 'saveNewPattern': - $processMap = new processMap(); + $processMap = new \processMap(); if ($type != "SEQUENTIAL" && $type != "SEC-JOIN" && $type != "DISCRIMINATOR") { if ($processMap->getNumberOfRoutes($processUid, $taskUid, $nextTaskUid, $type) > 0) { @@ -34,7 +34,7 @@ class Process if ($delete || $type == "SEQUENTIAL" || $type == "SEC-JOIN" || $type == "DISCRIMINATOR") { //G::LoadClass("tasks"); - $tasks = new Tasks(); + $tasks = new \Tasks(); $tasks->deleteAllRoutesOfTask($processUid, $taskUid); $tasks->deleteAllGatewayOfTask($processUid, $taskUid); @@ -60,7 +60,7 @@ class Process } //Process - $process = new Process(); + $process = new \Process(); $arrayProcessData = $arrayDefineProcessData["process"]; @@ -129,7 +129,7 @@ class Process //Process - Save Calendar ID for this process if (isset($arrayProcessData["PRO_CALENDAR"]) && $arrayProcessData["PRO_CALENDAR"] != "") { - $calendar = new Calendar(); + $calendar = new \Calendar(); $calendar->assignCalendarTo($processUid, $arrayProcessData["PRO_CALENDAR"], "PROCESS"); } @@ -164,7 +164,7 @@ class Process "TAS_START" => $arrayData["TAS_START"] ); - $task = new Task(); + $task = new \Task(); $taskUid = $task->create($arrayDataAux); @@ -173,7 +173,7 @@ class Process $arrayDefineProcessData["process"]["tasks"][$index]["TAS_UID_OLD"] = $uidAux; //Update task properties - $task2 = new Task(); + $task2 = new \BusinessModel\Task(); $arrayResult = $task2->updateProperties($taskUid, $processUid, $arrayData); @@ -184,17 +184,17 @@ class Process break; case "UPDATE": //Update task - $task = new Task(); + $task = new \Task(); $result = $task->update($arrayData); //Update task properties - $task2 = new Task(); + $task2 = new \BusinessModel\Task(); $arrayResult = $task2->updateProperties($arrayData["TAS_UID"], $processUid, $arrayData); break; case "DELETE": - $tasks = new Tasks(); + $tasks = new \Tasks(); $tasks->deleteTask($arrayData["TAS_UID"]); break; @@ -286,9 +286,9 @@ class Process { //Copy of processmaker/workflow/engine/methods/processes/processesList.php - $process = new Process(); + $process = new \Process(); - $memcache = &PMmemcached::getSingleton(SYS_SYS); + $memcache = &\PMmemcached::getSingleton(SYS_SYS); $memkey = "no memcache"; $memcacheUsed = "not used"; @@ -307,7 +307,7 @@ class Process if (($proData = $memcache->get($memkey)) === false) { $proData = $process->getAllProcesses($start, $limit, null, $arrayFilterData["processName"]); - $memcache->set($memkey, $proData, PMmemcached::ONE_HOUR); + $memcache->set($memkey, $proData, \PMmemcached::ONE_HOUR); $memcacheUsed = "no"; } } else { @@ -318,8 +318,8 @@ class Process if (($proData = $memcache->get($memkey)) === false || ($totalCount = $memcache->get($memkeyTotal)) === false) { $proData = $process->getAllProcesses($start, $limit); $totalCount = $process->getAllProcessesCount(); - $memcache->set($memkey, $proData, PMmemcached::ONE_HOUR); - $memcache->set($memkeyTotal, $totalCount, PMmemcached::ONE_HOUR); + $memcache->set($memkey, $proData, \PMmemcached::ONE_HOUR); + $memcache->set($memkeyTotal, $totalCount, \PMmemcached::ONE_HOUR); $memcacheUsed = "no"; } } @@ -349,7 +349,7 @@ class Process $arrayDefineProcessData = array(); //Process - $process = new Process(); + $process = new \Process(); $arrayProcessData = $process->load($processUid); @@ -361,9 +361,9 @@ class Process ); //Load data - $processMap = new processMap(); + $processMap = new \processMap(); - $arrayData = (array)(Bootstrap::json_decode($processMap->load($processUid))); + $arrayData = (array)(\Bootstrap::json_decode($processMap->load($processUid))); //Tasks & Routes $arrayDefineProcessData["process"]["tasks"] = array(); @@ -376,7 +376,7 @@ class Process $taskUid = $t["uid"]; //Load task data - $task = new Task(); + $task = new \Task(); $arrayTaskData = $task->load($taskUid); @@ -424,15 +424,15 @@ class Process $r = (array)($valuer); //Criteria - $criteria = new Criteria("workflow"); + $criteria = new \Criteria("workflow"); - $criteria->addSelectColumn(RoutePeer::ROU_UID); - $criteria->add(RoutePeer::PRO_UID, $processUid, Criteria::EQUAL); - $criteria->add(RoutePeer::TAS_UID, $taskUid, Criteria::EQUAL); - $criteria->add(RoutePeer::ROU_NEXT_TASK, $r["task"], Criteria::EQUAL); + $criteria->addSelectColumn(\RoutePeer::ROU_UID); + $criteria->add(\RoutePeer::PRO_UID, $processUid, \Criteria::EQUAL); + $criteria->add(\RoutePeer::TAS_UID, $taskUid, \Criteria::EQUAL); + $criteria->add(\RoutePeer::ROU_NEXT_TASK, $r["task"], \Criteria::EQUAL); - $rsCriteria = RoutePeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria = \RoutePeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); @@ -487,13 +487,16 @@ class Process public function deleteProcess($processUid, $checkCases = true) { if ($checkCases) { - $process = new Process(); + $process = new \Process(); $arrayCases = $process->getCasesCountInAllProcesses($processUid); + $sum = 0; - foreach ($arrayCases[$processUid] as $value) { - $sum = $sum + $value; + if (isset($arrayCases[$processUid]) && count($arrayCases[$processUid]) > 0) { + foreach ($arrayCases[$processUid] as $value) { + $sum = $sum + $value; + } } if ($sum > 0) { @@ -501,7 +504,7 @@ class Process } } - $processMap = new processMap(); + $processMap = new \processMap(); return $processMap->deleteProcess($processUid); diff --git a/workflow/engine/src/BusinessModel/Task.php b/workflow/engine/src/BusinessModel/Task.php index 9070b2c55..bddaf5cf9 100644 --- a/workflow/engine/src/BusinessModel/Task.php +++ b/workflow/engine/src/BusinessModel/Task.php @@ -16,9 +16,10 @@ class Task public function getProperties($taskUid, $keyCaseToLower = false) { try { - G::LoadClass("configuration"); + //G::LoadClass("configuration"); + require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.configuration.php"); - $task = new Task(); + $task = new \Task(); $arrayDataAux = $task->load($taskUid); @@ -35,7 +36,7 @@ class Task //Timing control //Load Calendar Information - $calendar = new Calendar(); + $calendar = new \Calendar(); $calendarInfo = $calendar->getCalendarFor("", "", $taskUid); @@ -43,7 +44,7 @@ class Task $arrayDataAux["TAS_CALENDAR"] = ($calendarInfo["CALENDAR_APPLIED"] != "DEFAULT")? $calendarInfo["CALENDAR_UID"] : ""; //Notifications - $conf = new Configurations(); + $conf = new \Configurations(); $conf->loadConfig($x, "TAS_EXTRA_PROPERTIES", $taskUid, "", ""); if (isset($conf->aConfig["TAS_DEF_MESSAGE_TYPE"]) && isset($conf->aConfig["TAS_DEF_MESSAGE_TYPE"])) { @@ -146,7 +147,7 @@ class Task $arrayProperty["TAS_UID"] = $taskUid; $arrayProperty["PRO_UID"] = $processUid; - $task = new Task(); + $task = new \Task(); $aTaskInfo = $task->load($arrayProperty["TAS_UID"]); $arrayResult = array(); @@ -170,9 +171,10 @@ class Task //Additional configuration if (isset($arrayProperty["TAS_DEF_MESSAGE_TYPE"]) && isset($arrayProperty["TAS_DEF_MESSAGE_TEMPLATE"])) { - G::LoadClass("configuration"); + //G::LoadClass("configuration"); + require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.configuration.php"); - $oConf = new Configurations(); + $oConf = new \Configurations(); $oConf->aConfig = array("TAS_DEF_MESSAGE_TYPE" => $arrayProperty["TAS_DEF_MESSAGE_TYPE"], "TAS_DEF_MESSAGE_TEMPLATE" => $arrayProperty["TAS_DEF_MESSAGE_TEMPLATE"]); $oConf->saveConfig("TAS_EXTRA_PROPERTIES", $arrayProperty["TAS_UID"], "", ""); @@ -233,23 +235,24 @@ class Task public function getStepsList($taskUid, $processUid, $keyCaseToLower = false, $start = 0, $limit = 25) { try { - G::LoadClass("BasePeer"); + //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(); + $processMap = new \ProcessMap(); $criteria = $processMap->getAvailableBBCriteria($processUid, $taskUid); if ($criteria->getDbName() == "dbarray") { - $rsCriteria = ArrayBasePeer::doSelectRS($criteria); + $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); } else { - $rsCriteria = GulliverBasePeer::doSelectRS($criteria); + $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); } - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -279,23 +282,24 @@ class Task public function getSteps($taskUid, $keyCaseToLower = false) { try { - G::LoadClass("BasePeer"); + //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(); + $processMap = new \ProcessMap(); $criteria = $processMap->getStepsCriteria($taskUid); if ($criteria->getDbName() == "dbarray") { - $rsCriteria = ArrayBasePeer::doSelectRS($criteria); + $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); } else { - $rsCriteria = GulliverBasePeer::doSelectRS($criteria); + $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); } - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -322,7 +326,8 @@ class Task public function getTriggers($taskUid, $keyCaseToLower = false) { try { - G::LoadClass("BasePeer"); + //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; @@ -337,15 +342,16 @@ class Task "AFTER_ROUTING" => "AFTER" ); - $processMap = new ProcessMap(); - $stepTgr = new StepTrigger(); + $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" => G::LoadTranslation("ID_ASSIGN_TASK"), + "STEP_TITLE" => "Assign Task", "STEP_TYPE_OBJ" => "", "STEP_MODE" => "", "STEP_CONDITION" => "", @@ -388,12 +394,12 @@ class Task $criteria = $processMap->getStepTriggersCriteria($stepUid, $taskUid, $type); if ($criteria->getDbName() == "dbarray") { - $rsCriteria = ArrayBasePeer::doSelectRS($criteria); + $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); } else { - $rsCriteria = GulliverBasePeer::doSelectRS($criteria); + $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); } - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -427,23 +433,24 @@ class Task public function getUsers($taskUid, $taskUserType, $keyCaseToLower = false) { try { - G::LoadClass("BasePeer"); + //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(); + $processMap = new \ProcessMap(); $criteria = $processMap->getTaskUsersCriteria($taskUid, $taskUserType); if ($criteria->getDbName() == "dbarray") { - $rsCriteria = ArrayBasePeer::doSelectRS($criteria); + $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); } else { - $rsCriteria = GulliverBasePeer::doSelectRS($criteria); + $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); } - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow();