Merge branch 'master' of bitbucket.org:colosa/processmaker

This commit is contained in:
Fernando Ontiveros
2014-02-25 20:39:02 -05:00
12 changed files with 431 additions and 104 deletions

View File

@@ -0,0 +1,96 @@
@ProcessMakerMichelangelo @RestAPI
Feature: Files Manager Resources
Background:
Given that I have a valid access_token
Scenario: Get a list of main process files manager
Given I request "project/1265557095225ff5c688f46031700471/file-manager"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "array"
Scenario: Get a list public folder of process files manager
Given I request "project/1265557095225ff5c688f46031700471/file-manager?path=public"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "array"
Scenario: Get a list templates folder of process files manager
Given I request "project/1265557095225ff5c688f46031700471/file-manager?path=templates"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "array"
Scenario Outline: Post files
Given POST this data:
"""
{
"prf_filename": "<file_name>",
"prf_path": "<path>",
"prf_content": "<content>"
}
"""
And I request "project/1265557095225ff5c688f46031700471/file-manager"
Then the response status code should be <http_code>
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "<type>"
And store "prf_uid" in session array as variable "prf_uid<i>"
Examples:
| test_description | file_name | path | content | http_code | type |
| into public folder | testbehat.txt | public/ | test | 200 | object |
| into maintemplates folder | testbehat.txt | templates/ | test | 200 | object |
| into public subfolder | testbehat.txt | public/test_folder | test | 200 | object |
| into public subfolder | testbehat.txt | templates/test_folder | test | 200 | object |
Scenario Outline: Post files
Given PUT this data:
"""
{
"prf_filename": "<file_name>",
"prf_content": "<content>"
}
"""
And I request "project/1265557095225ff5c688f46031700471/file-manager?path=<path>"
Then the response status code should be <http_code>
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "<type>"
Examples:
| test_description | file_name | path | content | http_code | type |
| put into public folder | testbehat.txt | public/ | put test | 200 | object |
| put into maintemplates folder | testbehat.txt | templates/ | put test | 200 | object |
| put into public subfolder | testbehat.txt | public/test_folder | put test | 200 | object |
| put into public subfolder | testbehat.txt | templates/test_folder | put test | 200 | object |
Scenario Outline: Delete file
Given that I want to delete a "<path>"
And I request "project/1265557095225ff5c688f46031700471/file-manager?path=<path>"
And the content type is "application/json"
Then the response status code should be 200
And the response charset is "UTF-8"
Examples:
| test_description | path |
| delete public folder | public/testbehat.txt |
| delete maintemplates folder | templates/testbehat.txt |
| delete public subfolder | public/test_folder/testbehat.txt |
| delete public subfolder | templates/test_folder/testbehat.txt |
#Para que funcione este test, debe existir el archivo que se quiere subir
Scenario: Post files
Given POST I want to upload the file "/home/daniel/test.txt" to path "public". Url to create prf_uid "project/1265557095225ff5c688f46031700471/file-manager" and updload "project/1265557095225ff5c688f46031700471/file-manager/upload"
Scenario: Delete file
Given that I want to delete a "public/test.txt"
And I request "project/1265557095225ff5c688f46031700471/file-manager?path=public/test.txt"
And the content type is "application/json"
Then the response status code should be 200
And the response charset is "UTF-8"

View File

@@ -94,7 +94,28 @@ Feature: User Main Tests
| Create user Inactive | 4 | daniela | perez | daniela | daniela@gmail.com | grenn #544 | 555-6565 | US | FL | MIA | 555-6655-555 | Gerencia | | 2016-02-15 | | INACTIVE | PROCESSMAKER_OPERATOR | sample | sample |
| Create user Vacation | 5 | micaela | sanchez | micaela | micaela@gmail.com | sancjh #544 | 555-6652 | US | FL | MIA | 555-6655-555 | Gerencia | | 2016-02-15 | | VACATION | PROCESSMAKER_OPERATOR | sample | sample |
#Para que funcione este test, debe existir el archivo que se quiere subir
#GET /api/1.0/{workspace}/user/{usr_uid}
# Upload a image
Scenario: Upload a image
Given POST I want to upload the image "/home/daniel/pic3.jpg" to user "00000000000000000000000000000001". Url "user/"
# Upload a image
Scenario Outline: Upload a image
Given POST I want to upload the image "<usr_photo>" to user with the key "usr_uid" stored in session array as variable "usr_uid_<usr_number>". Url "user/"
Examples:
| Test_description | usr_number | usr_photo |
| Create without replaced by, calendar | 1 | /home/wendy/photo/pic1.jpg |
| Create without calendar | 2 | /home/wendy/photo/pic2.jpg |
| Create with all fields | 3 | /home/wendy/photo/pic3.jpg |
| Create user Inactive | 4 | ~/userPhoto/abcd.jpg |
| Create user Vacation | 5 | ~/userPhoto/abcd.jpg |
Scenario: Get the users List when there are exactly 63 users
And I request "users"
And the content type is "application/json"

View File

@@ -0,0 +1,52 @@
http://brayan.pmos.colosa.net/api/1.0/cochalo/project/444446641528a7318e16744023753627/activity/1077328655304fcfecdf879070119988
/step/609531574530b7a20dcb7c1053135698/trigger/899405570530ba201363cf9010087072
@ProcessMakerMichelangelo @RestAPI
Feature: Step update position
Scenario: List all the Sub Processs (result 0 Sub Processs)
Given that I have a valid access_token
And I request "project/106912358530c9b14ac15d3001790900/activity/467397212530c9b18435b87094293840/step/693874302530c9ba1734ad0026525748/trigger/659748303530c9b85af4d26007619346/before"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "step_position" is set to "3"
Scenario: Change order the step
Given that I have a valid access_token
And PUT this data:
"""
{
"st_type": "BEFORE",
"st_position": "1"
}
"""
And I request "project/106912358530c9b14ac15d3001790900/activity/467397212530c9b18435b87094293840/step/693874302530c9ba1734ad0026525748/trigger/659748303530c9b85af4d26007619346"
Then the response status code should be 200
Scenario: List all the Sub Processs (result 0 Sub Processs)
Given that I have a valid access_token
And I request "project/106912358530c9b14ac15d3001790900/activity/467397212530c9b18435b87094293840/step/693874302530c9ba1734ad0026525748/trigger/659748303530c9b85af4d26007619346/before"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "step_position" is set to "1"
Scenario: Change order the step
Given that I have a valid access_token
And PUT this data:
"""
{
"st_type": "BEFORE",
"st_position": "3"
}
"""
And I request "project/106912358530c9b14ac15d3001790900/activity/467397212530c9b18435b87094293840/step/693874302530c9ba1734ad0026525748/trigger/659748303530c9b85af4d26007619346"
Then the response status code should be 200
Scenario: List all the Sub Processs (result 0 Sub Processs)
Given that I have a valid access_token
And I request "project/106912358530c9b14ac15d3001790900/activity/467397212530c9b18435b87094293840/step/693874302530c9ba1734ad0026525748/trigger/659748303530c9b85af4d26007619346/before"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "step_position" is set to "3"

View File

@@ -1329,7 +1329,7 @@ class RestContext extends BehatContext
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$postUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('prf_filename'=>$sfile, "prf_path" => $path, "prf_content" => NULL));
curl_setopt($ch, CURLOPT_POSTFIELDS, array('prf_filename'=>$sfile, "prf_path" => $path, "prf_content" => null));
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch);
@@ -1359,6 +1359,7 @@ class RestContext extends BehatContext
{
$baseUrl = $this->getParameter('base_url');
$url = $baseUrl.$url.$usrUid."/image-upload";
$accesstoken = $this->getParameter('access_token');
$headr = array();
$headr[] = 'Authorization: Bearer '.$accesstoken;
@@ -1369,8 +1370,36 @@ class RestContext extends BehatContext
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch);
if( $postResult === false)
{
//trigger_error(curl_error($ch));
throw new Exception("Image upload failed ($imageFile):\n\n"
. curl_error($ch));
}
curl_close($ch);
echo $postResult;
echo $postResult;
}
}
/**
* @Given /^POST I want to upload the image "([^"]*)" to user with the key "([^"]*)" stored in session array as variable "([^"]*)"\. Url "([^"]*)"$/
*/
public function postIWantToUploadTheImageToUserWithTheKeyStoredInSessionArrayAsVariableUsrUidUrl($imageFile, $varName, $sessionVarName, $url)
{
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = array();
}
if (!isset($sessionData->$sessionVarName) ) {
$varValue = '';
} else {
$varValue = $sessionData->$sessionVarName;
}
$usrUid = $varValue;
$this->postIWantToUploadTheImageToUser($imageFile, $usrUid, $url);
}
}

View File

@@ -88,7 +88,7 @@ $r = 0;
foreach ($dependentFields as $d) {
$sendContent[$r] = new stdclass();
$sendContent[$r]->name = $d;
$sendContent[$r]->content = null;
$sendContent[$r]->content = new stdclass();
foreach ($G_FORM->fields[$d] as $attribute => $value) {
switch ($attribute) {
case 'type':
@@ -108,7 +108,7 @@ function toJSArray ($array)
{
$result = array ();
foreach ($array as $k => $v) {
$o = null;
$o = new stdclass();
$o->key = $k;
$o->value = $v;
$result[] = $o;

View File

@@ -92,7 +92,8 @@ class FilesManager
} else {
$editable = 'false';
}
$aTheFiles[] = array( 'prf_filename' => $aFile['FILE'],
$aTheFiles[] = array( 'prf_uid' => $oProcessFiles->getPrfUid(),
'prf_filename' => $aFile['FILE'],
'usr_uid' => $oProcessFiles->getUsrUid(),
'prf_update_usr_uid' => $oProcessFiles->getPrfUpdateUsrUid(),
'prf_path' => $sMainDirectory. PATH_SEP .$sSubDirectory,
@@ -103,7 +104,8 @@ class FilesManager
'prf_content' => $fcontent);
} else {
$aTheFiles[] = array('prf_filename' => $aFile['FILE'],
$aTheFiles[] = array('prf_uid' => $oProcessFiles->getPrfUid(),
'prf_filename' => $aFile['FILE'],
'usr_uid' => '',
'prf_update_usr_uid' => '',
'prf_path' => $sMainDirectory. PATH_SEP .$sSubDirectory,
@@ -403,44 +405,41 @@ class FilesManager
/**
*
* @param string $sProcessUID {@min 32} {@max 32}
* @param string $path
* @param string $prfUid {@min 32} {@max 32}
*
*
* @access public
*/
public function downloadProcessFilesManager($sProcessUID, $path)
public function downloadProcessFilesManager($sProcessUID, $prfUid)
{
try {
$sMainDirectory = current(explode("/", $path));
if ($sMainDirectory != 'public' && $sMainDirectory != 'templates') {
throw (new \Exception( 'invalid value specified for `prf_path`. Expecting `templates/` or `public/`'));
$path = '';
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_PATH);
$criteria->add(\ProcessFilesPeer::PRF_UID, $prfUid, \Criteria::EQUAL);
$rsCriteria = \ProcessFilesPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
while ($aRow = $rsCriteria->getRow()) {
$path = $aRow['PRF_PATH'];
$rsCriteria->next();
}
if ($sMainDirectory == 'templates') {
$sMainDirectory = 'mailTemplates';
if ($path == ''){
throw new \Exception('invalid value specified for `prf_uid`.');
}
$sfile = end(explode("/",$path));
$sSubDirectorytemp = substr($path, strpos($path, "/")+1);
if (strstr($sSubDirectorytemp,'/')) {
$sSubDirectory = str_replace('/'.$sfile,"",$sSubDirectorytemp);
$sSubDirectoryCheck = str_replace($sfile,"",$sSubDirectorytemp);
$sFile = end(explode("/",$path));
$sPath = str_replace($sFile,'',$path);
$sSubDirectory = str_replace('/','',str_replace($sProcessUID,'',substr($sPath,(strpos($sPath, $sProcessUID)))));
$sMainDirectory = str_replace(substr($sPath, strpos($sPath, $sProcessUID)),'', $sPath);
if ($sMainDirectory == PATH_DATA_MAILTEMPLATES){
$sMainDirectory = 'mainTemplates';
} else {
$sSubDirectory = '';
$sSubDirectoryCheck = '';
$sMainDirectory = 'public';
}
switch ($sMainDirectory) {
case 'mailTemplates':
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectoryCheck . $sfile;
break;
case 'public':
$sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . $sSubDirectoryCheck . $sfile;
break;
default:
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sfile;
break;
}
if (file_exists(PATH_SEP.$sDirectory)) {
if (file_exists($path)) {
$oProcessMap = new \processMap(new \DBConnection());
$oProcessMap->downloadFile($sProcessUID,$sMainDirectory,$sSubDirectory,$sfile);
$oProcessMap->downloadFile($sProcessUID,$sMainDirectory,$sSubDirectory,$sFile);
die();
} else {
throw (new \Exception( 'invalid value specified for `path`.'));
}

View File

@@ -115,18 +115,17 @@ class Trigger
throw (new \Exception(str_replace(array("{0}", "{1}"), array($stepUid . ", " . $type . ", " . $taskUid . ", " . $triggerUid, "STEP_TRIGGER"), "The record \"{0}\", exists in table {1}")));
}
if (isset($arrayData["st_position"]) && $this->existsRecord($stepUid, $type, $taskUid, "", $arrayData["st_position"])) {
throw (new \Exception(str_replace(array("{0}", "{1}", "{2}"), array($arrayData["st_position"], $stepUid . ", " . $type . ", " . $taskUid . ", " . $arrayData["st_position"], "STEP_TRIGGER"), "The \"{0}\" position for the record \"{1}\", exists in table {2}")));
}
//Create
$stepTrigger = new \StepTrigger();
$stepTrigger->create(array("STEP_UID" => $stepUid, "TAS_UID" => $taskUid, "TRI_UID" => $triggerUid, "ST_TYPE" => $type));
if (!isset($arrayData["st_position"]) || $arrayData["st_position"] == "") {
$arrayData["st_position"] = $stepTrigger->getNextPosition($stepUid, $type, $taskUid) - 1;
}
$posIni = $stepTrigger->getNextPosition($stepUid, $type, $taskUid);
$stepTrigger->createRow(array(
"STEP_UID" => $stepUid,
"TAS_UID" => $taskUid,
"TRI_UID" => $triggerUid,
"ST_TYPE" => $type,
"ST_CONDITION" => (isset($arrayData['st_condition'])) ? $arrayData['st_condition'] : '',
"ST_POSITION" => $posIni
));
$arrayData = $this->update($stepUidIni, $typeIni, $taskUid, $triggerUid, $arrayData);

View File

@@ -150,26 +150,26 @@ class BpmnWorkflow extends Project\Bpmn
public function removeGateway($gatUid)
{
$gatewayData = $this->getGateway($gatUid);
$flowsDest = \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_DEST, $gatUid);
// $gatewayData = $this->getGateway($gatUid);
// $flowsDest = \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_DEST, $gatUid);
foreach ($flowsDest as $flowDest) {
switch ($flowDest->getFloElementOriginType()) {
case "bpmnActivity":
$actUid = $flowDest->getFloElementOrigin();
$flowsOrigin = \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN, $gatUid);
foreach ($flowsOrigin as $flowOrigin) {
switch ($flowOrigin->getFloElementDestType()) {
case "bpmnActivity":
$toActUid = $flowOrigin->getFloElementDest();
$this->wp->removeRouteFromTo($actUid, $toActUid);
break;
}
}
break;
}
}
// foreach ($flowsDest as $flowDest) {
// switch ($flowDest->getFloElementOriginType()) {
// case "bpmnActivity":
// $actUid = $flowDest->getFloElementOrigin();
// $flowsOrigin = \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN, $gatUid);
//
// foreach ($flowsOrigin as $flowOrigin) {
// switch ($flowOrigin->getFloElementDestType()) {
// case "bpmnActivity":
// $toActUid = $flowOrigin->getFloElementDest();
// $this->wp->removeRouteFromTo($actUid, $toActUid);
// break;
// }
// }
// break;
// }
// }
parent::removeGateway($gatUid);
}
@@ -298,6 +298,10 @@ class BpmnWorkflow extends Project\Bpmn
\BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE => "bpmnGateway"
));
if ($gatewayFlows > 0) {
$this->wp->resetTaskRoutes($activity["ACT_UID"]);
}
foreach ($gatewayFlows as $gatewayFlow) {
$gatewayFlow = $gatewayFlow->toArray();
@@ -475,19 +479,6 @@ class BpmnWorkflow extends Project\Bpmn
return empty($result) ? null : $result;
}
protected static function findInArray($value, $key, $list)
{
$result = array();
foreach ($list as $item) {
if (array_key_exists($key, $item) && $item[$key] == $value) {
$result[] = $item;
}
}
return $result;
}
public function remove()
{
parent::remove();

View File

@@ -195,8 +195,8 @@ class Workflow extends Handler
{
try {
self::log("Remove Task: $tasUid");
$task = new Task();
$task->remove($tasUid);
$task = new Tasks();
$task->deleteTask($tasUid);
self::log("Remove Task Success!");
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
@@ -275,18 +275,18 @@ class Workflow extends Handler
}
if ($type != 'SEQUENTIAL' && $type != 'SEC-JOIN' && $type != 'DISCRIMINATOR') {
if ($this->getNumberOfRoutes($this->proUid, $fromTasUid, $toTasUid, $type) > 0) {
throw new \LogicException("Unexpected behaviour");
}
//if ($this->getNumberOfRoutes($this->proUid, $fromTasUid, $toTasUid, $type) > 0) {
//throw new \LogicException("Unexpected behaviour");
//}
}
//if ($delete || $type == 'SEQUENTIAL' || $type == 'SEC-JOIN' || $type == 'DISCRIMINATOR') {
$oTasks = new Tasks();
$oTasks->deleteAllRoutesOfTask($this->proUid, $fromTasUid);
//$oTasks = new Tasks();
//$oTasks->deleteAllRoutesOfTask($this->proUid, $fromTasUid);
//}
$result = $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $delete);
self::log("Add Route Success! -> ", $result);
self::log("Add Route Success! - ROU_UID: ", $result);
return $result;
} catch (\Exception $e) {
@@ -295,6 +295,12 @@ class Workflow extends Handler
}
}
public function resetTaskRoutes($actUid)
{
$oTasks = new Tasks();
$oTasks->deleteAllRoutesOfTask($this->proUid, $actUid);
}
public function updateRoute($rouUid, $routeData)
{
$routeData['ROU_UID'] = $rouUid;

View File

@@ -116,15 +116,15 @@ class FilesManager extends Api
/**
* @param string $prjUid {@min 32} {@max 32}
* @param string $path
* @param string $prfUid {@min 32} {@max 32}
*
* @url GET /:prjUid/file-manager/download
* @url GET /:prjUid/file-manager/:prfUid/download
*/
public function doGetProcessFilesManagerDownload($prjUid, $path)
public function doGetProcessFilesManagerDownload($prjUid, $prfUid)
{
try {
$filesManager = new \BusinessModel\FilesManager();
$filesManager->downloadProcessFilesManager($prjUid, $path);
$filesManager->downloadProcessFilesManager($prjUid, $prfUid);
} catch (\Exception $e) {
//response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());

View File

@@ -346,37 +346,46 @@ class BpmnWorkflowTest extends \PHPUnit_Framework_TestCase
*/
function testActivityToInclusiveGatewayToActivityFlowsMultiple($bwap)
{
/*$actUid1 = $bwap->addActivity(array(
$actUid1 = $bwap->addActivity(array(
"ACT_NAME" => "Activity #1",
"BOU_X" => 198,
"BOU_Y" => 56
"BOU_X" => 311,
"BOU_Y" => 26
));
$actUid2 = $bwap->addActivity(array(
"ACT_NAME" => "Activity #2",
"BOU_X" => 198,
"BOU_Y" => 250
"BOU_X" => 99,
"BOU_Y" => 200
));
$actUid3 = $bwap->addActivity(array(
"ACT_NAME" => "Activity #3",
"BOU_X" => 310,
"BOU_Y" => 200
));
$actUid4 = $bwap->addActivity(array(
"ACT_NAME" => "Activity #4",
"BOU_X" => 542,
"BOU_Y" => 200
));
$gatUid = $bwap->addGateway(array(
"GAT_NAME" => "Gateway #1",
"GAT_TYPE" => "INCLUSIVE",
"GAT_DIRECTION" => "DIVERGING",
"BOU_X" => 256,
"BOU_Y" => 163
"BOU_X" => 369,
"BOU_Y" => 123
));
$flowUid1 = $bwap->addFlow(array(
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $actUid1,
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnActivity',
'FLO_ELEMENT_DEST' => $gatUid,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnGateway',
'FLO_X1' => 273,
'FLO_Y1' => 273,
'FLO_X2' => 163,
'FLO_Y2' => 163,
'FLO_X1' => 386,
'FLO_Y1' => 174,
'FLO_X2' => 206,
'FLO_Y2' => 206,
));
$flowUid1 = $bwap->addFlow(array(
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $gatUid,
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnGateway',
@@ -387,8 +396,133 @@ class BpmnWorkflowTest extends \PHPUnit_Framework_TestCase
'FLO_X2' => 249,
'FLO_Y2' => 249,
));
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $gatUid,
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnGateway',
'FLO_ELEMENT_DEST' => $actUid3,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnActivity',
'FLO_X1' => 386,
'FLO_Y1' => 174,
'FLO_X2' => 206,
'FLO_Y2' => 206,
));
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $gatUid,
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnGateway',
'FLO_ELEMENT_DEST' => $actUid4,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnActivity',
'FLO_X1' => 386,
'FLO_Y1' => 617,
'FLO_X2' => 207,
'FLO_Y2' => 207,
));
$bwap->mapBpmnFlowsToWorkflowRoutes();
$this->assertCount(4, $bwap->getActivities());
$this->assertCount(1, $bwap->getGateways());
$this->assertCount(4, $bwap->getFlows());
$this->assertCount(1, \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_DEST, $gatUid));
$this->assertCount(3, \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN, $gatUid));
$wp = Project\Workflow::load($bwap->getUid());
$this->assertCount(4, $wp->getTasks());
$this->assertCount(3, $wp->getRoutes());
$this->assertCount(3, \Route::findAllBy(\RoutePeer::TAS_UID, $actUid1));
$this->assertCount(1, \Route::findAllBy(\RoutePeer::ROU_NEXT_TASK, $actUid2));
$this->assertCount(1, \Route::findAllBy(\RoutePeer::ROU_NEXT_TASK, $actUid3));
$this->assertCount(1, \Route::findAllBy(\RoutePeer::ROU_NEXT_TASK, $actUid4));
return array($actUid2, $actUid3, $actUid4);
}
/**
* @depends testNew
* @depends testActivityToInclusiveGatewayToActivityFlowsMultiple
* @param \ProcessMaker\Project\Adapter\BpmnWorkflow $bwap
* @param array $activitiesUid
*/
function testActivityToInclusiveGatewayToActivityFlowsMultipleJoin($bwap, $activitiesUid)
{
$gatUid = $bwap->addGateway(array(
"GAT_NAME" => "Gateway #2",
"GAT_TYPE" => "INCLUSIVE",
"GAT_DIRECTION" => "CONVERGING",
"BOU_X" => 369,
"BOU_Y" => 338
));
$actUid5 = $bwap->addActivity(array(
"ACT_NAME" => "Activity #5",
"BOU_X" => 312,
"BOU_Y" => 464
));
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $activitiesUid[0],
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnActivity',
'FLO_ELEMENT_DEST' => $gatUid,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnGateway',
'FLO_X1' => 174,
'FLO_Y1' => 365,
'FLO_X2' => 355,
'FLO_Y2' => 355,
));
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $activitiesUid[1],
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnActivity',
'FLO_ELEMENT_DEST' => $gatUid,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnGateway',
'FLO_X1' => 385,
'FLO_Y1' => 382,
'FLO_X2' => 338,
'FLO_Y2' => 338,
));
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $activitiesUid[2],
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnActivity',
'FLO_ELEMENT_DEST' => $gatUid,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnGateway',
'FLO_X1' => 617,
'FLO_Y1' => 398,
'FLO_X2' => 355,
'FLO_Y2' => 355,
));
$bwap->addFlow(array(
'FLO_TYPE' => 'SEQUENCE',
'FLO_ELEMENT_ORIGIN' => $gatUid,
'FLO_ELEMENT_ORIGIN_TYPE' => 'bpmnGateway',
'FLO_ELEMENT_DEST' => $actUid5,
'FLO_ELEMENT_DEST_TYPE' => 'bpmnActivity',
'FLO_X1' => 382,
'FLO_Y1' => 387,
'FLO_X2' => 463,
'FLO_Y2' => 463,
));
$bwap->mapBpmnFlowsToWorkflowRoutes();
$this->assertCount(8, $bwap->getFlows());
$this->assertCount(5, $bwap->getActivities());
$this->assertCount(2, $bwap->getGateways());
$this->assertCount(3, \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_DEST, $gatUid));
$this->assertCount(1, \BpmnFlow::findAllBy(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN, $gatUid));
$wp = Project\Workflow::load($bwap->getUid());
$this->assertCount(5, $wp->getTasks());
$this->assertCount(6, $wp->getRoutes());
$this->assertCount(1, \Route::findAllBy(\RoutePeer::TAS_UID, $activitiesUid[0]));
$this->assertCount(1, \Route::findAllBy(\RoutePeer::TAS_UID, $activitiesUid[1]));
$this->assertCount(1, \Route::findAllBy(\RoutePeer::TAS_UID, $activitiesUid[2]));
$this->assertCount(3, \Route::findAllBy(\RoutePeer::ROU_NEXT_TASK, $actUid5));
$bwap->mapBpmnFlowsToWorkflowRoutes();*/
}
}