Merged in victorsl/processmaker (pull request #4)

ProcessMaker-MA "Refactorizacion de Paths y adicion del controlador REST"
This commit is contained in:
erik ao
2013-11-05 12:24:14 -04:00
3 changed files with 343 additions and 58 deletions

View File

@@ -0,0 +1,275 @@
<?php
namespace Services\Api\ProcessMaker;
class Process extends \ProcessMaker\Api
{
public function index($proTitle = "", $proCategory = "", $start = 0, $limit = 25)
{
$response = array();
try {
$arrayFilterData = array();
if ($proTitle != "") {
$arrayFilterData["processName"] = $proTitle;
}
if ($proCategory != "") {
$arrayFilterData["category"] = $proCategory;
}
$process = new \BusinessModel\Process();
$data = $process->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;
}
}

View File

@@ -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);

View File

@@ -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();