This commit is contained in:
Paula V. Quispe
2016-11-25 13:06:25 -05:00
parent 26e9d3a687
commit 9b60fdb682
13 changed files with 236 additions and 12 deletions

View File

@@ -141,7 +141,7 @@ class Derivation
$arrayTaskData["NEXT_TASK"]["TAS_PARENT"] = "";
}
$regexpTaskTypeToExclude = "GATEWAYTOGATEWAY|END-MESSAGE-EVENT|SCRIPT-TASK|INTERMEDIATE-CATCH-TIMER-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|END-EMAIL-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT";
$regexpTaskTypeToExclude = "GATEWAYTOGATEWAY|END-MESSAGE-EVENT|SCRIPT-TASK|SERVICE-TASK|INTERMEDIATE-CATCH-TIMER-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|END-EMAIL-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT";
$arrayTaskData["NEXT_TASK"]["USER_ASSIGNED"] = (!preg_match("/^(?:" . $regexpTaskTypeToExclude . ")$/", $arrayTaskData["NEXT_TASK"]["TAS_TYPE"]))? $this->getNextAssignedUser($arrayTaskData) : array("USR_UID" => "", "USR_FULLNAME" => "");
}
@@ -1099,6 +1099,10 @@ class Derivation
}
break;
}
//Execute Service Task
if (function_exists('executeServiceTaskByActivityUid')) {
$appFields["APP_DATA"] = executeServiceTaskByActivityUid($nextDel["TAS_UID"], $appFields);
}
//Execute Script-Task
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
@@ -1106,7 +1110,7 @@ class Derivation
$appFields["APP_DATA"] = $scriptTask->execScriptByActivityUid($nextDel["TAS_UID"], $appFields);
//Create record in table APP_ASSIGN_SELF_SERVICE_VALUE
$regexpTaskTypeToExclude = "SCRIPT-TASK|INTERMEDIATE-THROW-EMAIL-EVENT";
$regexpTaskTypeToExclude = "SCRIPT-TASK|INTERMEDIATE-THROW-EMAIL-EVENT|SERVICE-TASK";
if (!is_null($taskNextDel) && !preg_match("/^(?:" . $regexpTaskTypeToExclude . ")$/", $taskNextDel->getTasType())) {
if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && trim($taskNextDel->getTasGroupVariable()) != "") {
@@ -1126,7 +1130,7 @@ class Derivation
}
//Check if $taskNextDel is Script-Task
if (!is_null($taskNextDel) && ($taskNextDel->getTasType() === "SCRIPT-TASK" || $taskNextDel->getTasType() === "INTERMEDIATE-THROW-EMAIL-EVENT" || $taskNextDel->getTasType() === "INTERMEDIATE-THROW-MESSAGE-EVENT")) {
if (!is_null($taskNextDel) && ($taskNextDel->getTasType() === "SCRIPT-TASK" || $taskNextDel->getTasType() === "INTERMEDIATE-THROW-EMAIL-EVENT" || $taskNextDel->getTasType() === "INTERMEDIATE-THROW-MESSAGE-EVENT" || $taskNextDel->getTasType() === "SERVICE-TASK")) {
//Get for $nextDel["TAS_UID"] your next Task
$currentDelegationAux = array_merge($currentDelegation, array("DEL_INDEX" => $iNewDelIndex, "TAS_UID" => $nextDel["TAS_UID"]));
$nextDelegationsAux = array();

View File

@@ -396,7 +396,7 @@ class PMPlugin
throw $e;
}
}
/**
* Changes the menu properties from the given processmaker section and menu id
*
@@ -415,7 +415,7 @@ class PMPlugin
throw $e;
}
}
/**
* callBack File after import process
*
@@ -449,6 +449,49 @@ class PMPlugin
throw $e;
}
}
/**
* Path registry to file js or css.
* @param type $pathFile
* @param string $scope
* @throws Exception
*/
public function registerDesignerSourcePath($pathFile, $scope = null)
{
if ($scope === null) {
$scope = '/plugin/' . $this->sNamespace . '/';
}
try {
$pluginRegistry = &PMPluginRegistry::getSingleton();
$pluginRegistry->registerDesignerSourcePath($this->sNamespace, $scope . $pathFile);
} catch (Exception $e) {
throw $e;
}
}
/**
* Enable build js or css into build.json paths.
* @param type $sourcePath
*/
public function enableExtensionSources($sourcePath = 'config/build.json')
{
$path = PATH_PLUGINS . $this->sPluginFolder . "/";
$buildFile = $path . $sourcePath;
if (is_file($buildFile)) {
$buildObjects = G::json_decode(file_get_contents($buildFile));
foreach ($buildObjects as $item) {
$item->path = $path . rtrim($item->path, "/\\");
$extensionPath = "extension-" . $item->name . "-" . G::browserCacheFilesGetUid() . "." . $item->extension;
$file = $path . "public_html/" . $extensionPath;
@file_put_contents($file, "", LOCK_EX);
foreach ($item->files as $name) {
@file_put_contents($file, file_get_contents($item->path . "/" . $name), FILE_APPEND | LOCK_EX);
}
$this->registerDesignerSourcePath($extensionPath);
}
}
}
}
class menuDetail

View File

@@ -105,6 +105,7 @@ class PMPluginRegistry
private $_aMenuOptionsToReplace = array ();
private $_aImportProcessCallbackFile = array ();
private $_aOpenReassignCallback = array ();
private $_arrayDesignerSourcePath = array();
/**
* Registry a plugin javascript to include with js core at same runtime
@@ -408,6 +409,12 @@ class PMPluginRegistry
unset($this->_arrayDesignerMenu[$key]);
}
}
foreach ($this->_arrayDesignerSourcePath as $key => $detail) {
if ($detail->pluginName == $sNamespace) {
unset($this->_arrayDesignerSourcePath[$key]);
}
}
if(sizeof( $this->_aMenuOptionsToReplace )){
unset( $this->_aMenuOptionsToReplace );
@@ -1849,4 +1856,50 @@ class PMPluginRegistry
}
return $enabledPlugins;
}
/**
* Registry in an array routes for js or css files.
* @param type $pluginName
* @param type $pathFile
* @throws Exception
*/
public function registerDesignerSourcePath($pluginName, $pathFile)
{
try {
$flagFound = false;
foreach ($this->_arrayDesignerSourcePath as $value) {
if ($value->pluginName == $pluginName && $value->pathFile == $pathFile) {
$flagFound = true;
break;
}
}
if (!$flagFound) {
$obj = new stdClass();
$obj->pluginName = $pluginName;
$obj->pathFile = $pathFile;
$this->_arrayDesignerSourcePath[] = $obj;
}
} catch (Exception $e) {
throw $e;
}
}
/**
* You obtain an array containing the routes recorded by the
* function registerDesignerSourcePath.
* @return type
* @throws Exception
*/
public function getDesignerSourcePath()
{
try {
return $this->_arrayDesignerSourcePath;
} catch (Exception $e) {
throw $e;
}
}
}

View File

@@ -195,7 +195,7 @@ class TaskMapBuilder
$tMap->addColumn('TAS_RECEIVE_MESSAGE', 'TasReceiveMessage', 'string', CreoleTypes::LONGVARCHAR, false, null);
$tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|SCRIPT-TASK|START-TIMER-EVENT|INTERMEDIATE-CATCH-TIMER-EVENT|END-EMAIL-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT', 'Please set a valid value for TAS_TYPE');
$tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|SCRIPT-TASK|START-TIMER-EVENT|INTERMEDIATE-CATCH-TIMER-EVENT|END-EMAIL-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT|SERVICE-TASK', 'Please set a valid value for TAS_TYPE');
$tMap->addValidator('TAS_TIMEUNIT', 'validValues', 'propel.validator.ValidValuesValidator', 'MINUTES|HOURS|DAYS|WEEKS|MONTHS', 'Please select a valid value for TAS_TIMEUNIT.');

View File

@@ -1333,7 +1333,7 @@
</index>
<validator column="TAS_TYPE">
<rule name="validValues" value="NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|SCRIPT-TASK|START-TIMER-EVENT|INTERMEDIATE-CATCH-TIMER-EVENT|END-EMAIL-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT" message="Please set a valid value for TAS_TYPE" />
<rule name="validValues" value="NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|SCRIPT-TASK|START-TIMER-EVENT|INTERMEDIATE-CATCH-TIMER-EVENT|END-EMAIL-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT|SERVICE-TASK" message="Please set a valid value for TAS_TYPE" />
</validator>
<validator column="TAS_TIMEUNIT">
<rule name="validValues" value="MINUTES|HOURS|DAYS|WEEKS|MONTHS" message="Please select a valid value for TAS_TIMEUNIT."/>

View File

@@ -24283,6 +24283,12 @@ msgstr "New BPMN Project"
msgid "The following case is a \"Script-Task\""
msgstr "The following case is a \"Script-Task\""
# TRANSLATION
# LABEL/ID_ROUTE_TO_TASK_SERVICE_TASK
#: LABEL/ID_ROUTE_TO_TASK_SERVICE_TASK
msgid "The following case is a \"Service-Task\""
msgstr "The following case is a \"Service-Task\""
# TRANSLATION
# LABEL/ID_MAFE_0d82790b0612935992bd564a17ce37d6
#: LABEL/ID_MAFE_0d82790b0612935992bd564a17ce37d6

View File

@@ -154,6 +154,26 @@ class Designer extends Controller
}
}
//plugin set source path
$sourceCss = array();
$sourceJs = array();
$pluginRegistry = &PMPluginRegistry::getSingleton();
$srcPath = $pluginRegistry->getDesignerSourcePath();
foreach ($srcPath as $key => $value) {
$ext = pathinfo($value->pathFile, PATHINFO_EXTENSION);
if ($ext === "css") {
$sourceCss[] = $value->pathFile;
}
if ($ext === "js") {
$sourceJs[] = $value->pathFile;
}
}
$this->setVar('sourceCss', $sourceCss);
$this->setVar('sourceJs', $sourceJs);
$this->render();
}

View File

@@ -5580,6 +5580,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_NEW_PROJECT','en','New Project','2015-08-18') ,
( 'LABEL','ID_NEW_BPMN_PROJECT','en','New BPMN Project','2015-08-18') ,
( 'LABEL','ID_ROUTE_TO_TASK_SCRIPT_TASK','en','The following case is a "Script-Task"','2015-08-18') ,
( 'LABEL','ID_ROUTE_TO_TASK_SERVICE_TASK','en','The following case is a "Service-Task"','2016-11-25') ,
( 'LABEL','ID_MAFE_0d82790b0612935992bd564a17ce37d6','en','Quit','2016-08-12') ,
( 'LABEL','ID_MAFE_16f49c0f891dce505db0ffe478aff96f','en','Next &#8594;','2016-08-12') ,
( 'LABEL','ID_MAFE_064626e308f7d6587778df2924ea847c','en','&#8592; Back','2016-08-12') ,

View File

@@ -978,6 +978,9 @@ try {
$optionTaskType = (isset($aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"]))? $aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"] : "";
switch ($optionTaskType) {
case "SERVICE-TASK":
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = G::LoadTranslation("ID_ROUTE_TO_TASK_SERVICE_TASK");
break;
case "SCRIPT-TASK":
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = G::LoadTranslation("ID_ROUTE_TO_TASK_SCRIPT_TASK");
break;

View File

@@ -205,9 +205,22 @@ class BpmnWorkflow extends Project\Bpmn
$activityCurrent = \BpmnActivityPeer::retrieveByPK($actUid);
if ($activityCurrent->getActType() == "TASK" && $activityCurrent->getActTaskType() == "SCRIPTTASK") {
$taskData["TAS_TYPE"] = "SCRIPT-TASK";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
if ($activityCurrent->getActType() == "TASK") {
switch ($activityCurrent->getActTaskType()) {
case 'SCRIPTTASK':
$taskData["TAS_TYPE"] = "SCRIPT-TASK";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
break;
case 'SERVICETASK':
$registry = \PMPluginRegistry::getSingleton();
$taskData["TAS_TYPE"] = "NORMAL";
//The plugin pmConnectors will be moved to the core in pm.3.3
if ($registry->getStatusPlugin('pmConnectors') === 'enabled') {
$taskData["TAS_TYPE"] = "SERVICE-TASK";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
}
break;
}
}
$this->wp->addTask($taskData);
@@ -254,6 +267,8 @@ class BpmnWorkflow extends Project\Bpmn
));
}
$taskData = self::__updateServiceTask($activityBefore, $activityCurrent, $taskData);
if($activityCurrent->getActLoopType() == "PARALLEL"){
$task = \TaskPeer::retrieveByPK($actUid);
if($task->getTasAssignType() == "BALANCED" || $task->getTasAssignType() == "MANUAL" || $task->getTasAssignType() == "EVALUATE" || $task->getTasAssignType() == "REPORT_TO" || $task->getTasAssignType() == "SELF_SERVICE"){
@@ -271,6 +286,62 @@ class BpmnWorkflow extends Project\Bpmn
$this->wp->updateTask($actUid, $taskData);
}
/**
* @param $actUid
* @param $data
*/
public function sincronizeActivityData($actUid, $data)
{
$registry = \PMPluginRegistry::getSingleton();
$taskData = \TaskPeer::retrieveByPK($actUid);
//The plugin pmConnectors will be moved to the core in pm.3.3
if ($taskData->getTasType() == 'SERVICE-TASK' && $registry->getStatusPlugin('pmConnectors') !== 'enabled') {
$taskData = array();
$taskData["TAS_TYPE"] = "NORMAL";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
$this->wp->updateTask($actUid, $taskData);
}
}
/**
* @param null $activityBefore
* @param null $activityCurrent
* @param $taskData
* @return mixed
*/
static function __updateServiceTask($activityBefore, $activityCurrent, $taskData)
{
$registry = \PMPluginRegistry::getSingleton();
if ($activityBefore->getActTaskType() != "SERVICETASK" && $activityCurrent->getActTaskType() == "SERVICETASK") {
//The plugin pmConnectors will be moved to the core in pm.3.3
if ($registry->getStatusPlugin('pmConnectors') === 'enabled') {
$taskData["TAS_TYPE"] = "SERVICE-TASK";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
} else {
$taskData["TAS_TYPE"] = "NORMAL";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
}
}
if ($activityBefore->getActTaskType() == "SERVICETASK" && $activityCurrent->getActTaskType() != "SERVICETASK") {
$taskData["TAS_TYPE"] = "NORMAL";
$taskData["TAS_ASSIGN_TYPE"] = "BALANCED";
if($activityCurrent->getActTaskType() == "SCRIPTTASK"){
$taskData["TAS_TYPE"] = "SCRIPT-TASK";
}
//The plugin pmConnectors will be moved to the core in pm.3.3
if ($registry->getStatusPlugin('pmConnectors') === 'enabled') {
$pathFile = PATH_PLUGINS . 'pmConnectors' . PATH_SEP . 'src' . PATH_SEP . 'Services' . PATH_SEP . 'BusinessModel' . PATH_SEP . 'PmConnectors' . PATH_SEP . 'ServiceTaskBM.php';
if (is_file($pathFile)) {
require_once $pathFile;
$serviceTask = new \Services\BusinessModel\PmConnectors\ServiceTaskBM();
$serviceTask->deleteByActivityUid($activityCurrent->getPrjUid(), $activityCurrent->getActUid());
}
}
}
return $taskData;
}
public function removeActivity($actUid)
{
$activity = \BpmnActivityPeer::retrieveByPK($actUid);
@@ -1530,7 +1601,6 @@ class BpmnWorkflow extends Project\Bpmn
$activityData = Util\ArrayUtil::boolToIntValues($activityData);
$activity = $bwp->getActivity($activityData["ACT_UID"]);
if ($forceInsert || is_null($activity)) {
if ($generateUid) {
//Generate and update UID
@@ -1552,7 +1622,7 @@ class BpmnWorkflow extends Project\Bpmn
} else {
Util\Logger::log("Update Activity ({$activityData["ACT_UID"]}) Skipped - No changes required");
}
$bwp->sincronizeActivityData($activityData["ACT_UID"], $activityData);
$diagram["activities"][$i] = $activityData;
$whiteList[] = $activityData["ACT_UID"];

View File

@@ -230,6 +230,19 @@ class Workflow extends Handler
$this->removeSupProcess($this->proUid, $tasUid);
}
if ($tasType == "SERVICE-TASK") {
$registry = \PMPluginRegistry::getSingleton();
//The plugin pmConnectors will be moved to the core in pm.3.3
if ($registry->getStatusPlugin('pmConnectors') === 'enabled') {
$pathFile = PATH_PLUGINS . 'pmConnectors' . PATH_SEP . 'src' . PATH_SEP . 'Services' . PATH_SEP . 'BusinessModel' . PATH_SEP . 'PmConnectors' . PATH_SEP . 'ServiceTaskBM.php';
if (is_file($pathFile)) {
require_once $pathFile;
$serviceTask = new \Services\BusinessModel\PmConnectors\ServiceTaskBM();
$serviceTask->deleteByActivityUid($this->proUid, $tasUid);
}
}
}
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;

View File

@@ -98,6 +98,11 @@
<td class="FormLabel" width="100"></td>
<td class="FormFieldContent">{$data.NEXT_TASK.USR_UID}{$data.NEXT_TASK.USR_HIDDEN_FIELD}</td>
</tr>
{elseif ($data.NEXT_TASK.TAS_TYPE == "SERVICE-TASK")}
<tr>
<td class="FormLabel" width="100"></td>
<td class="FormFieldContent">{$data.NEXT_TASK.USR_UID}{$data.NEXT_TASK.USR_HIDDEN_FIELD}</td>
</tr>
{elseif ($data.NEXT_TASK.TAS_TYPE == "INTERMEDIATE-CATCH-TIMER-EVENT")}
<tr>
<td class="FormLabel" width="100">{$NEXT_TASK_LABEL}:</td>

View File

@@ -71,6 +71,9 @@
<link rel="stylesheet" type="text/css" href="/lib/css/mafe-{$buildhash}.css" />
<link rel="stylesheet" type="text/css" href="/css/{$sys_skin}-pm3.css" />
{foreach from=$sourceCss item=pathFile}
<link rel="stylesheet" type="text/css" href="{$pathFile}" />
{/foreach}
<script type="text/javascript">
var prj_uid = "{$prj_uid}";
var app_uid = "{$app_uid}";
@@ -85,6 +88,9 @@
var HTTP_SERVER_HOSTNAME = "{$HTTP_SERVER_HOSTNAME}";
</script>
<script type="text/javascript" src="/lib/js/mafe-{$buildhash}.js"></script>
{foreach from=$sourceJs item=pathFile}
<script type="text/javascript" src="{$pathFile}"></script>
{/foreach}
{/if}