first commit from pmos9a
1.)methods/bpmn 2.)templates/bpmn
This commit is contained in:
301
workflow/engine/methods/bpmn/cases_Scheduler_Save.php
Executable file
301
workflow/engine/methods/bpmn/cases_Scheduler_Save.php
Executable file
File diff suppressed because it is too large
Load Diff
249
workflow/engine/methods/bpmn/eventsEditAction.php
Executable file
249
workflow/engine/methods/bpmn/eventsEditAction.php
Executable file
@@ -0,0 +1,249 @@
|
||||
<?php
|
||||
/**
|
||||
* events_EditAction.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*
|
||||
*/
|
||||
global $RBAC;
|
||||
global $_DBArray;
|
||||
|
||||
if ($RBAC->userCanAccess('PM_SETUP') != 1) {
|
||||
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
|
||||
G::header('location: ../login/login');
|
||||
die;
|
||||
}
|
||||
if ( isset ($_SESSION['EVN_UID']) ) {
|
||||
$evnUid = $_SESSION['EVN_UID'];
|
||||
unset ( $_SESSION['EVN_UID'] );
|
||||
}
|
||||
else
|
||||
$evnUid = $_GET['EVN_UID'];
|
||||
|
||||
require_once 'classes/model/Event.php';
|
||||
require_once 'classes/model/Triggers.php';
|
||||
$oEvent = new Event();
|
||||
$oTrigger = new Triggers();
|
||||
$aFields = $oEvent->load( $evnUid );
|
||||
$parameters = unserialize ( $oEvent->getEvnActionParameters() );
|
||||
//g::pr($parameters); die;
|
||||
$aTrigger = $oTrigger->load($aFields['TRI_UID']);
|
||||
|
||||
$hash = md5 ( $oTrigger->getTriWebbot() );
|
||||
//var_dump($hash,$parameters->hash);die;
|
||||
//if the hash is different, the script was edited , so we will show the trigger editor.
|
||||
if ( ( isset($parameters->hash) && $hash <> $parameters->hash ) || $aFields['EVN_ACTION'] == 'EXECUTE_TRIGGER' || $aFields['EVN_ACTION'] == 'EXECUTE_CONDITIONAL_TRIGGER' ) {
|
||||
$oTriggerParams = unserialize($aTrigger['TRI_PARAM']);
|
||||
// check again a hash, this time to check the trigger itself integrity
|
||||
if ($oTriggerParams['hash']!=$hash){
|
||||
// if has changed edit manually
|
||||
G::LoadClass('xmlfield_InputPM');
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'triggers/triggersNarrowEdit', '', $aTrigger, '../events/triggersSave');
|
||||
G::RenderPage('publish', 'raw');
|
||||
die;
|
||||
} else {
|
||||
// if not launch the wizard view.
|
||||
$triUid = $aFields['TRI_UID'];
|
||||
$_GET = $oTriggerParams['params'];
|
||||
$_GET['TRI_UID'] = $triUid;
|
||||
require_once(PATH_METHODS.'triggers/triggers_EditWizard.php');
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
$aFields['EVN_MESSAGE_SUBJECT'] = (isset($parameters->SUBJECT) ? $parameters->SUBJECT : '');
|
||||
|
||||
if(isset($parameters->TO)){
|
||||
$paramTO[] = Array('id'=>'char', 'name'=>'char');
|
||||
|
||||
//echo '<pre>';print_r($parameters->TO);
|
||||
foreach($parameters->TO as $item){
|
||||
$row = explode('|', $item);
|
||||
switch($row[0]){
|
||||
case 'usr':
|
||||
require_once('classes/model/Users.php');
|
||||
$user = new Users();
|
||||
|
||||
if($row[1] == '-1'){
|
||||
$value = '(Current Task User)';
|
||||
} else {
|
||||
$rec = $user->load($row[1]);
|
||||
$value = $rec['USR_FIRSTNAME'].' '.$rec['USR_LASTNAME'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'grp':
|
||||
G::LoadClass('groups');
|
||||
$group = new Groups();
|
||||
$rec = $group->load($row[1]);
|
||||
|
||||
$value = strip_tags($rec->getGrpTitle());
|
||||
break;
|
||||
|
||||
case 'ext':
|
||||
$value = htmlentities($row[1]);
|
||||
break;
|
||||
|
||||
case 'dyn':
|
||||
$value = htmlentities('@#'.$row[1]);
|
||||
break;
|
||||
|
||||
default:
|
||||
echo '->'.$row[0];
|
||||
}
|
||||
$paramTO[] = Array('id'=>replaceQuotes($item), 'name'=>$value);
|
||||
}
|
||||
} else {
|
||||
$paramTO[] = Array('id'=>'char', 'name'=>'char');
|
||||
$paramTO[] = Array('id'=>'usr|-1', 'name'=>'(Current Task User)');
|
||||
}
|
||||
$_DBArray['eventomsgto'] = $paramTO;
|
||||
|
||||
if(isset($parameters->CC)){
|
||||
$paramCC[] = Array('id'=>'char', 'name'=>'char');
|
||||
foreach($parameters->CC as $item){
|
||||
$row = explode('|', $item);
|
||||
switch($row[0]){
|
||||
case 'usr':
|
||||
require_once('classes/model/Users.php');
|
||||
$user = new Users();
|
||||
|
||||
if($row[1] == '-1'){
|
||||
$value = '(Current Task User)';
|
||||
} else {
|
||||
$rec = $user->load($row[1]);
|
||||
$value = $rec['USR_FIRSTNAME'].' '.$rec['USR_LASTNAME'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'grp':
|
||||
G::LoadClass('groups');
|
||||
$group = new Groups();
|
||||
$rec = $group->load($row[1]);
|
||||
|
||||
$value = strip_tags($rec->getGrpTitle());
|
||||
break;
|
||||
|
||||
case 'ext':
|
||||
$value = htmlentities($row[1]);
|
||||
break;
|
||||
|
||||
case 'dyn':
|
||||
$value = htmlentities('@#'.$row[1]);
|
||||
break;
|
||||
}
|
||||
$paramCC[] = Array('id'=>replaceQuotes($item), 'name'=>$value);
|
||||
}
|
||||
|
||||
$_DBArray['eventomsgcc'] = $paramCC;
|
||||
|
||||
} else {
|
||||
$_DBArray['eventomsgcc'] = Array();
|
||||
}
|
||||
|
||||
if(isset($parameters->BCC)){
|
||||
$paramBCC[] = Array('id'=>'char', 'name'=>'char');
|
||||
foreach($parameters->BCC as $item){
|
||||
$row = explode('|', $item);
|
||||
switch($row[0]){
|
||||
case 'usr':
|
||||
require_once('classes/model/Users.php');
|
||||
$user = new Users();
|
||||
|
||||
if($row[1] == '-1'){
|
||||
$value = '(Current Task User)';
|
||||
} else {
|
||||
$rec = $user->load($row[1]);
|
||||
$value = $rec['USR_FIRSTNAME'].' '.$rec['USR_LASTNAME'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'grp':
|
||||
G::LoadClass('groups');
|
||||
$group = new Groups();
|
||||
$rec = $group->load($row[1]);
|
||||
|
||||
$value = strip_tags($rec->getGrpTitle());
|
||||
break;
|
||||
|
||||
case 'ext':
|
||||
$value = htmlentities($row[1]);
|
||||
break;
|
||||
|
||||
case 'dyn':
|
||||
$value = htmlentities('@#'.$row[1]);
|
||||
break;
|
||||
}
|
||||
$paramBCC[] = Array('id'=>replaceQuotes($item), 'name'=>$value);
|
||||
}
|
||||
|
||||
$_DBArray['eventomsgbcc'] = $paramBCC;
|
||||
|
||||
} else {
|
||||
$_DBArray['eventomsgbcc'] = Array();
|
||||
}
|
||||
$aFields['EVN_MESSAGE_TO_TO'] = $paramTO;
|
||||
$aFields['EVN_MESSAGE_TO_CC'] = (isset($parameters->CC) ? $paramCC : '');
|
||||
$aFields['EVN_MESSAGE_TO_BCC'] = (isset($parameters->BCC) ? $paramBCC : '');
|
||||
$aFields['EVN_MESSAGE_TEMPLATE'] = (isset($parameters->TEMPLATE) ? $parameters->TEMPLATE : '');
|
||||
|
||||
|
||||
$aTemplates = array();
|
||||
$aTemplates[] = array('TEMPLATE1' => 'char',
|
||||
'TEMPLATE2' => 'char');
|
||||
$sDirectory = PATH_DATA_MAILTEMPLATES . $aFields['PRO_UID'] . PATH_SEP;
|
||||
G::verifyPath($sDirectory, true);
|
||||
if (!file_exists($sDirectory . 'alert_message.html')) {
|
||||
@copy(PATH_TPL . 'mails' . PATH_SEP . 'alert_message.html', $sDirectory . 'alert_message.html');
|
||||
}
|
||||
$oDirectory = dir($sDirectory);
|
||||
while ($sObject = $oDirectory->read()) {
|
||||
if (($sObject !== '.') && ($sObject !== '..') && ($sObject !== 'alert_message.html')) {
|
||||
$aTemplates[] = array('TEMPLATE1' => $sObject,
|
||||
'TEMPLATE2' => $sObject);
|
||||
}
|
||||
}
|
||||
$_DBArray['templates'] = $aTemplates;
|
||||
|
||||
$aTriggers[] = array('TRI_UID' => 'char',
|
||||
'TRI_TITLE' => 'char');
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new ProcessMap();
|
||||
$oDataset = TriggersPeer::doSelectRS($oProcessMap->getTriggersCriteria($aFields['PRO_UID']));
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$oDataset->next();
|
||||
while ($aRow = $oDataset->getRow()) {
|
||||
$aTriggers[] = array('TRI_UID' => $aRow['TRI_UID'],
|
||||
'TRI_TITLE' => $aRow['TRI_TITLE']);
|
||||
$oDataset->next();
|
||||
}
|
||||
$_DBArray['triggers'] = $aTriggers;
|
||||
|
||||
$_SESSION['_DBArray'] = $_DBArray;
|
||||
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'events/eventsEditAction', '', $aFields, '../events/eventsSave');
|
||||
//$G_PUBLISH->AddContent('xmlform', 'xmlform', 'events/eventsEditAction', '', $aFields, '../events/eventsSave');
|
||||
G::RenderPage('publish', 'raw');
|
||||
|
||||
function replaceQuotes($aData){
|
||||
return str_replace('"', '"e;', $aData);
|
||||
}
|
||||
56
workflow/engine/methods/bpmn/eventsSave.php
Executable file
56
workflow/engine/methods/bpmn/eventsSave.php
Executable file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* cases_Events_Save.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2010 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*
|
||||
*/
|
||||
try {
|
||||
$oJSON = new Services_JSON();
|
||||
if ( isset ($_POST['sData']) ) {
|
||||
$oData = $oJSON->decode($_POST['sData']);
|
||||
}
|
||||
|
||||
//Convert Object into Array
|
||||
foreach($oData as $key=>$value)
|
||||
{
|
||||
$aData[$key] = $value;
|
||||
}
|
||||
|
||||
require_once 'classes/model/Event.php';
|
||||
|
||||
$oEvent = new Event();
|
||||
if (!isset($aData['EVN_UID']) && $aData['EVN_UID'] == '' ) {
|
||||
$sEventUid = $oEvent->create($aData);
|
||||
}
|
||||
else
|
||||
$sEventUid = $oEvent->update($aData);
|
||||
|
||||
|
||||
|
||||
$_SESSION['EVN_UID'] = $sEventUid;
|
||||
echo "{success: true,data:'.$sEventUid.'}";
|
||||
//G::header('location: cases_Scheduler_List');
|
||||
}
|
||||
catch (Exception $oException) {
|
||||
die($oException->getMessage());
|
||||
}
|
||||
|
||||
?>
|
||||
170
workflow/engine/methods/bpmn/get-tree.php
Executable file
170
workflow/engine/methods/bpmn/get-tree.php
Executable file
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['tid'] ) )
|
||||
{
|
||||
$rows = $oProcessMap->getExtStepsCriteria($_GET['tid']); //Getting all assigned steps on a task
|
||||
array_shift($rows);
|
||||
}
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
$steps = array();
|
||||
|
||||
//@@stepsChildren is an array that stores before and after triggers tree data for a step
|
||||
$stepsChildren = array();
|
||||
$assignChildren = array();
|
||||
|
||||
//@@assignTaskChildren is an array that stores Before Assignment,Before Derivation and After Derivation triggers tree data for assigned task
|
||||
$assignTaskChildren = array();
|
||||
|
||||
|
||||
|
||||
//Creating steps array for populating tree depending on count of assigned steps to a task
|
||||
for($i=0;$i<count($rows);$i++)
|
||||
{
|
||||
//Getting beforeTriggersCount for a step
|
||||
$beforeTriggers = $oProcessMap->getStepTriggersCriteria($rows[$i]['STEP_UID'], $_GET['tid'], 'BEFORE');
|
||||
$beforeTriggersCount = StepTriggerPeer::doCount($beforeTriggers);
|
||||
|
||||
//Getting afterTriggersCount for a step
|
||||
$afterTriggers = $oProcessMap->getStepTriggersCriteria($rows[$i]['STEP_UID'], $_GET['tid'], 'AFTER');
|
||||
$afterTriggersCount = StepTriggerPeer::doCount($afterTriggers);
|
||||
|
||||
$iTotal = $beforeTriggersCount + $afterTriggersCount;
|
||||
|
||||
//Tree level 3 nodes i.e. final nodes (Leaf Nodes)
|
||||
$beforeTriggerChildren[0] = array(
|
||||
'text' => 'Assign / Show Before Triggers',
|
||||
'id' => $rows[$i]['STEP_UID'].'|BEFORE',
|
||||
'leaf' => true,
|
||||
);
|
||||
$afterTriggerChildren[0] = array(
|
||||
'text' => 'Assign / Show After Triggers',
|
||||
'id' => $rows[$i]['STEP_UID'].'|AFTER',
|
||||
'leaf' => true,
|
||||
);
|
||||
|
||||
//Tree level 2 nodes i.e. Before and After Triggers for level 1 nodes
|
||||
$stepsChildren[0] = array(
|
||||
'text' => 'Before - Triggers ('.$beforeTriggersCount.')',
|
||||
//'id' => $rows[$i]['STEP_UID'].'-BEFORE',
|
||||
'children' => $beforeTriggerChildren
|
||||
);
|
||||
$stepsChildren[1] = array(
|
||||
'text' => 'After - Triggers ('.$afterTriggersCount.')',
|
||||
//'id' => $rows[$i]['STEP_UID'].'-AFTER',
|
||||
'children' => $afterTriggerChildren
|
||||
);
|
||||
|
||||
//Tree level 1 nodes (Main steps)
|
||||
$steps[] = array(
|
||||
'text' => $rows[$i]['STEP_TITLE'].' - Triggers ('.$iTotal.')',
|
||||
//'id' => 'ssaas',
|
||||
'children' => $stepsChildren
|
||||
);
|
||||
}
|
||||
|
||||
//Creating tree for Assign Task Step
|
||||
$beforeAssignmentChildren[] = array(
|
||||
'text' => 'Assign / Show Triggers',
|
||||
'id' => '-1|BEFORE',
|
||||
'leaf' => true,
|
||||
);
|
||||
$beforeDerivationChildren[] = array(
|
||||
'text' => 'Assign / Show Triggers',
|
||||
'id' => '-2|BEFORE',
|
||||
'leaf' => true,
|
||||
);
|
||||
$afterDerivationChildren[] = array(
|
||||
'text' => 'Assign / Show Triggers',
|
||||
'id' => '-2|AFTER',
|
||||
'leaf' => true,
|
||||
);
|
||||
|
||||
//Getting counts for Before Assignment,Before Derivation and After Derivation triggers for a step
|
||||
$beforeAssignmentTriggers = $oProcessMap->getStepTriggersCriteria('-1', $_GET['tid'], 'BEFORE');
|
||||
$beforeAssignmentTriggersCount = StepTriggerPeer::doCount($beforeAssignmentTriggers);
|
||||
|
||||
$beforeDerivationTriggers = $oProcessMap->getStepTriggersCriteria('-2', $_GET['tid'], 'BEFORE');
|
||||
$beforeDerivationTriggersCount = StepTriggerPeer::doCount($beforeDerivationTriggers);
|
||||
|
||||
$afterDerivationTriggers = $oProcessMap->getStepTriggersCriteria('-2', $_GET['tid'], 'AFTER');
|
||||
$afterDerivationTriggersCount = StepTriggerPeer::doCount($afterDerivationTriggers);
|
||||
|
||||
$iTotal = $beforeAssignmentTriggersCount + $beforeDerivationTriggersCount + $afterDerivationTriggersCount;
|
||||
$assignTaskChildren[] = array(
|
||||
'text' => 'Before Assignment - Triggers ('.$beforeAssignmentTriggersCount.')',
|
||||
'children' => $beforeAssignmentChildren
|
||||
);
|
||||
$assignTaskChildren[] = array(
|
||||
'text' => 'Before Derivation - Triggers ('.$beforeDerivationTriggersCount.')',
|
||||
'children' => $beforeDerivationChildren
|
||||
);
|
||||
$assignTaskChildren[] = array(
|
||||
'text' => 'After Derivation - Triggers ('.$afterDerivationTriggersCount.')',
|
||||
'children' => $afterDerivationChildren
|
||||
);
|
||||
|
||||
//Adding last value in an array for "Assign Task"
|
||||
$steps[] = array(
|
||||
'text' => '[ Assign Task ] - Triggers ('.$iTotal.')',
|
||||
//'id' => $rows[$i]['STEP_UID'],
|
||||
'children' => $assignTaskChildren
|
||||
);
|
||||
|
||||
/* $nodes = "[{
|
||||
text: 'Step 1 - Triggers (0)',
|
||||
cls: 'blank',
|
||||
iconCls: 'blank',
|
||||
children: [{
|
||||
text: 'Before - Triggers (0)',
|
||||
cls: 'blank',
|
||||
iconCls: 'blank',
|
||||
children: [{
|
||||
text: 'Assign Before Trigger',
|
||||
leaf: true,
|
||||
}]
|
||||
},{
|
||||
text: 'After - Triggers (0)',
|
||||
leaf: true,
|
||||
cls: 'blank',
|
||||
iconCls: 'blank',
|
||||
}]
|
||||
},{
|
||||
text: 'Step 2 - Triggers (0)',
|
||||
|
||||
children: [{
|
||||
text: 'Before - Triggers (0)',
|
||||
leaf: true,
|
||||
|
||||
},{
|
||||
text: 'After - Triggers (0)',
|
||||
leaf: true,
|
||||
|
||||
}]
|
||||
},{
|
||||
text: 'Assign Task - Triggers(0)',
|
||||
|
||||
children: [{
|
||||
text: 'Before Assigment - Triggers(0)',
|
||||
leaf: true,
|
||||
|
||||
},{
|
||||
text: 'Before Derivation - Triggers(0)',
|
||||
leaf: true,
|
||||
|
||||
},{
|
||||
text: 'After Derivation - Triggers(0)',
|
||||
leaf: true,
|
||||
|
||||
}]
|
||||
}]";*/
|
||||
//echo $nodes;
|
||||
echo json_encode($steps);
|
||||
108
workflow/engine/methods/bpmn/openProcess.php
Executable file
108
workflow/engine/methods/bpmn/openProcess.php
Executable file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* openProcess.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*
|
||||
*/
|
||||
|
||||
G::LoadClass('xpdl');
|
||||
$processUID = $_REQUEST['PRO_UID'];
|
||||
$oProcess = new Xpdl();
|
||||
$fields = $oProcess->serializeProcess($processUID);
|
||||
$oData = unserialize($fields);
|
||||
$arrayTasks = array();
|
||||
$countTasks = 0;
|
||||
$countSubProcess= 0;
|
||||
$arrayEvents = array();
|
||||
$arraySubProcess= array();
|
||||
$count = 0;
|
||||
$countRoutes = 0;
|
||||
$arrayRoutes = array();
|
||||
$process = array();
|
||||
$process = $oProcess->createProcessPM($oData->process);
|
||||
foreach($oData->tasks as $id => $value)
|
||||
{
|
||||
if($value['TAS_TYPE'] == 'SUBPROCESS')
|
||||
{
|
||||
$arraySubProcess[$countSubProcess]['0'] = $value['TAS_UID'];
|
||||
$arraySubProcess[$countSubProcess]['1'] = $value['TAS_TITLE'];
|
||||
$arraySubProcess[$countSubProcess]['2'] = $value['TAS_POSX'];
|
||||
$arraySubProcess[$countSubProcess]['3'] = $value['TAS_POSY'];
|
||||
$countSubProcess = $countSubProcess + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$arrayTasks[$countTasks]['0'] = $value['TAS_UID'];
|
||||
$arrayTasks[$countTasks]['1'] = $value['TAS_TITLE'];
|
||||
$arrayTasks[$countTasks]['2'] = $value['TAS_POSX'];
|
||||
$arrayTasks[$countTasks]['3'] = $value['TAS_POSY'];
|
||||
$arrayTasks[$countTasks]['4'] = $value['TAS_WIDTH'];
|
||||
$arrayTasks[$countTasks]['5'] = $value['TAS_HEIGHT'];
|
||||
$arrayTasks[$countTasks]['6'] = $value['TAS_BOUNDARY'];
|
||||
if($value['TAS_START'] == 'TRUE'){
|
||||
$arrayEvents[$count]['0'] = G::generateUniqueID();
|
||||
if($value['TAS_EVN_UID'] == '')
|
||||
{
|
||||
$arrayEvents[$count]['1'] = 'bpmnEventEmptyStart';
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($oData->event as $eventid => $val){
|
||||
if($val['EVN_UID'] == $value['TAS_EVN_UID'])
|
||||
{
|
||||
$arrayEvents[$count]['0'] = $val['EVN_UID'];
|
||||
$arrayEvents[$count]['1'] = $val['EVN_TYPE'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$arrayEvents[$count]['2'] = $value['TAS_POSX']+68;
|
||||
$arrayEvents[$count]['3'] = $value['TAS_POSY']-50;
|
||||
$arrayRoutes[$countRoutes]['0']= G::generateUniqueID();
|
||||
$arrayRoutes[$countRoutes]['1']= $arrayEvents[$count]['0'];
|
||||
$arrayRoutes[$countRoutes]['2']= $value['TAS_UID'];
|
||||
$arrayRoutes[$countRoutes]['3']= '1';
|
||||
$arrayRoutes[$countRoutes]['4']= '2';
|
||||
$count = $count+ 1;
|
||||
$countRoutes = $countRoutes+ 1;
|
||||
}
|
||||
$countTasks = $countTasks + 1;
|
||||
}
|
||||
}
|
||||
$lanes = $oProcess->createLanesNewPM($oData->lanes);
|
||||
$fields = $oProcess->createTransitionsPM($oData->tasks,$oData->routes,$arrayEvents,$count,$arrayRoutes,$countRoutes);
|
||||
//$subProcess = $oProcess->createSubProcessesPM($oData->subProcess);
|
||||
$arrayEvents = $fields['EVENTS'];
|
||||
$arrayGateways = $fields['GATEWAYS'];
|
||||
$arrayRoutes = $fields['TRANSITION'];
|
||||
$result['TASKS'] = $arrayTasks;
|
||||
$result['ROUTES'] = $arrayRoutes;
|
||||
$result['EVENTS'] = $arrayEvents;
|
||||
$result['GATEWAYS'] = $arrayGateways;
|
||||
$aTasks = json_encode($arrayTasks);
|
||||
$aSubProcess = json_encode($arraySubProcess);
|
||||
$aRoutes = json_encode($arrayRoutes);
|
||||
$aEvents = json_encode($arrayEvents);
|
||||
$aGateways = json_encode($arrayGateways);
|
||||
$aProcess = json_encode($process);
|
||||
$aLanes = json_encode($lanes);
|
||||
echo "tasks:$aTasks|gateways:$aGateways|events:$aEvents|annotations:$aLanes|process:$aProcess|subprocess:$aSubProcess|routes:$aRoutes";
|
||||
?>
|
||||
182
workflow/engine/methods/bpmn/patterns_Ajax.php
Executable file
182
workflow/engine/methods/bpmn/patterns_Ajax.php
Executable file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/**
|
||||
* patterns_Ajax.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*
|
||||
*/
|
||||
G::LoadInclude('ajax');
|
||||
$oJSON = new Services_JSON();
|
||||
if(isset($_POST['mode']) && $_POST['mode'] != '')
|
||||
{
|
||||
$aData = $_POST;
|
||||
$aData['TASK'] = $oJSON->decode($_POST['TASK']);
|
||||
$aData['ROU_NEXT_TASK'] = $oJSON->decode($_POST['ROU_NEXT_TASK']);
|
||||
}
|
||||
|
||||
|
||||
G::LoadClass('tasks');
|
||||
$oTasks = new Tasks();
|
||||
$rou_id = 0;
|
||||
switch ($aData['action']) {
|
||||
case 'savePattern':
|
||||
//if ($aData['ROU_TYPE'] != $aData['ROU_TYPE_OLD'])
|
||||
//{
|
||||
foreach ($aData['TASK'] as $iKey => $aRow)
|
||||
{
|
||||
$oTasks->deleteAllRoutesOfTask($aData['PROCESS'], $aRow);
|
||||
}
|
||||
//}
|
||||
require_once 'classes/model/Route.php';
|
||||
$oRoute = new Route();
|
||||
switch ($aData['ROU_TYPE']) {
|
||||
case 'SEQUENTIAL':
|
||||
case 'SEC-JOIN':
|
||||
/*if ($aData['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aData['ROU_UID'];
|
||||
}*/
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'][0];
|
||||
$aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0];
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['ROU_EVN_UID']))
|
||||
$aFields['ROU_EVN_UID'] = $aData['ROU_EVN_UID'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
//$aFields['ROU_TO_LAST_USER'] = $aData['ROU_TO_LAST_USER'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
break;
|
||||
case 'SELECT':
|
||||
foreach ($aData['GRID_SELECT_TYPE'] as $iKey => $aRow)
|
||||
{
|
||||
/*if ($aRow['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aRow['ROU_UID'];
|
||||
}*/
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
// $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
//$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'EVALUATE':
|
||||
foreach ($aData['ROU_NEXT_TASK'] as $iKey => $aRow)
|
||||
{
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
$aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
//$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'PARALLEL':
|
||||
foreach ($aData['ROU_NEXT_TASK'] as $iKey => $aRow)
|
||||
{
|
||||
/*if ($aRow['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aRow['ROU_UID'];
|
||||
}*/
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'][0];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT']= $aData['PORT_NUMBER_OP'];
|
||||
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'PARALLEL-BY-EVALUATION':
|
||||
foreach ($aData['ROU_NEXT_TASK'] as $iKey => $aRow)
|
||||
{
|
||||
/*if ($aRow['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aRow['ROU_UID'];
|
||||
}*/
|
||||
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'][0];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT']= $aData['PORT_NUMBER_OP'];
|
||||
// $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
// $aFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'DISCRIMINATOR': //Girish ->Added to save changes, while editing the route
|
||||
foreach ($aData['TASK'] as $iKey => $aRow)
|
||||
{
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aRow;
|
||||
$aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0];
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
// $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
// $aFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL'];
|
||||
$routeData = $oTasks->getRouteByType($aData['PROCESS'], $aData['ROU_NEXT_TASK'][0], $aData['ROU_TYPE']);
|
||||
foreach($routeData as $route)
|
||||
{
|
||||
$sFields['ROU_UID'] = $route['ROU_UID'];
|
||||
// $sFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
// $sFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL'];
|
||||
$rou_id = $oRoute->update($sFields);
|
||||
}
|
||||
$rou_id =$oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
}
|
||||
echo $rou_id;
|
||||
}
|
||||
?>
|
||||
314
workflow/engine/methods/bpmn/processes_Ajax.php
Executable file
314
workflow/engine/methods/bpmn/processes_Ajax.php
Executable file
File diff suppressed because it is too large
Load Diff
179
workflow/engine/methods/bpmn/processes_doUpload.php
Executable file
179
workflow/engine/methods/bpmn/processes_doUpload.php
Executable file
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2010, Andrew Rymarczyk
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and minified, compiled or otherwise obfuscated
|
||||
form, with or without modification, are permitted provided that the following
|
||||
conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in minified, compiled or otherwise obfuscated form must
|
||||
reproduce the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//$save_path = PATH_DATA_MAILTEMPLATES . '4601910684c597eab4810e6037370402' . PATH_SEP ;
|
||||
$save_path = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
|
||||
$valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-'; // Characters allowed in the file name (in a Regular Expression format)
|
||||
//$extension_whitelist = array('csv', 'gif', 'png','tif'); // Allowed file extensions
|
||||
$MAX_FILENAME_LENGTH = 260;
|
||||
|
||||
$max_file_size_in_bytes = 2147483647; // 2GB in bytes
|
||||
$upload_name = 'Filedata';
|
||||
|
||||
/*
|
||||
This is an upload script for SWFUpload that attempts to properly handle uploaded files
|
||||
in a secure way.
|
||||
|
||||
Notes:
|
||||
|
||||
SWFUpload doesn't send a MIME-TYPE. In my opinion this is ok since MIME-TYPE is no better than
|
||||
file extension and is probably worse because it can vary from OS to OS and browser to browser (for the same file).
|
||||
The best thing to do is content sniff the file but this can be resource intensive, is difficult, and can still be fooled or inaccurate.
|
||||
Accepting uploads can never be 100% secure.
|
||||
|
||||
You can't guarantee that SWFUpload is really the source of the upload. A malicious user
|
||||
will probably be uploading from a tool that sends invalid or false metadata about the file.
|
||||
The script should properly handle this.
|
||||
|
||||
The script should not over-write existing files.
|
||||
|
||||
The script should strip away invalid characters from the file name or reject the file.
|
||||
|
||||
The script should not allow files to be saved that could then be executed on the webserver (such as .php files).
|
||||
To keep things simple we will use an extension whitelist for allowed file extensions. Which files should be allowed
|
||||
depends on your server configuration. The extension white-list is _not_ tied your SWFUpload file_types setting
|
||||
|
||||
For better security uploaded files should be stored outside the webserver's document root. Downloaded files
|
||||
should be accessed via a download script that proxies from the file system to the webserver. This prevents
|
||||
users from executing malicious uploaded files. It also gives the developer control over the outgoing mime-type,
|
||||
access restrictions, etc. This, however, is outside the scope of this script.
|
||||
|
||||
SWFUpload sends each file as a separate POST rather than several files in a single post. This is a better
|
||||
method in my opinions since it better handles file size limits, e.g., if post_max_size is 100 MB and I post two 60 MB files then
|
||||
the post would fail (2x60MB = 120MB). In SWFupload each 60 MB is posted as separate post and we stay within the limits. This
|
||||
also simplifies the upload script since we only have to handle a single file.
|
||||
|
||||
The script should properly handle situations where the post was too large or the posted file is larger than
|
||||
our defined max. These values are not tied to your SWFUpload file_size_limit setting.
|
||||
|
||||
*/
|
||||
|
||||
// Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
|
||||
$POST_MAX_SIZE = ini_get('post_max_size');
|
||||
$unit = strtoupper(substr($POST_MAX_SIZE, -1));
|
||||
$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
|
||||
|
||||
if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
|
||||
//header("HTTP/1.1 500 Internal Server Error"); // This will trigger an uploadError event in SWFUpload
|
||||
//echo "POST exceeded maximum allowed size.";
|
||||
HandleError('POST exceeded maximum allowed size.');
|
||||
}
|
||||
|
||||
// Other variables
|
||||
$file_name = '';
|
||||
$file_extension = '';
|
||||
$uploadErrors = array(
|
||||
0=>'There is no error, the file uploaded with success',
|
||||
1=>'The uploaded file exceeds the upload_max_filesize directive in php.ini',
|
||||
2=>'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
|
||||
3=>'The uploaded file was only partially uploaded',
|
||||
4=>'No file was uploaded',
|
||||
6=>'Missing a temporary folder'
|
||||
);
|
||||
|
||||
// Validate the upload
|
||||
if (!isset($_FILES[$upload_name])) {
|
||||
HandleError('No upload found in \$_FILES for ' . $upload_name);
|
||||
} else if (isset($_FILES[$upload_name]["error"]) && $_FILES[$upload_name]["error"] != 0) {
|
||||
HandleError($uploadErrors[$_FILES[$upload_name]["error"]]);
|
||||
} else if (!isset($_FILES[$upload_name]["tmp_name"]) || !@is_uploaded_file($_FILES[$upload_name]["tmp_name"])) {
|
||||
HandleError('Upload failed is_uploaded_file test.');
|
||||
} else if (!isset($_FILES[$upload_name]['name'])) {
|
||||
HandleError('File has no name.');
|
||||
}
|
||||
|
||||
// Validate the file size (Warning: the largest files supported by this code is 2GB)
|
||||
$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
|
||||
if (!$file_size || $file_size > $max_file_size_in_bytes) {
|
||||
HandleError('File exceeds the maximum allowed size');
|
||||
}
|
||||
|
||||
if ($file_size <= 0) {
|
||||
HandleError('File size outside allowed lower bound');
|
||||
}
|
||||
|
||||
// Validate file name (for our purposes we'll just remove invalid characters)
|
||||
$file_name = preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name']));
|
||||
if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) {
|
||||
HandleError('Invalid file name');
|
||||
}
|
||||
|
||||
// Validate that we won't over-write an existing file
|
||||
if (file_exists($save_path . $file_name)) {
|
||||
HandleError('A file with this name already exists');
|
||||
}
|
||||
|
||||
/*
|
||||
// Validate file extension
|
||||
$path_info = pathinfo($_FILES[$upload_name]['name']);
|
||||
$file_extension = $path_info["extension"];
|
||||
$is_valid_extension = false;
|
||||
foreach ($extension_whitelist as $extension) {
|
||||
if (strcasecmp($file_extension, $extension) == 0) {
|
||||
$is_valid_extension = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$is_valid_extension) {
|
||||
HandleError("Invalid file extension");
|
||||
exit(0);
|
||||
}
|
||||
*/
|
||||
// Validate file contents (extension and mime-type can't be trusted)
|
||||
/*
|
||||
Validating the file contents is OS and web server configuration dependant. Also, it may not be reliable.
|
||||
See the comments on this page: http://us2.php.net/fileinfo
|
||||
|
||||
Also see http://72.14.253.104/search?q=cache:3YGZfcnKDrYJ:www.scanit.be/uploads/php-file-upload.pdf+php+file+command&hl=en&ct=clnk&cd=8&gl=us&client=firefox-a
|
||||
which describes how a PHP script can be embedded within a GIF image file.
|
||||
|
||||
Therefore, no sample code will be provided here. Research the issue, decide how much security is
|
||||
needed, and implement a solution that meets the needs.
|
||||
*/
|
||||
|
||||
|
||||
// Process the file
|
||||
/*
|
||||
At this point we are ready to process the valid file. This sample code shows how to save the file. Other tasks
|
||||
could be done such as creating an entry in a database or generating a thumbnail.
|
||||
|
||||
Depending on your server OS and needs you may need to set the Security Permissions on the file after it has
|
||||
been saved.
|
||||
*/
|
||||
if (!@move_uploaded_file($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {
|
||||
HandleError("File could not be saved.");
|
||||
}
|
||||
|
||||
die('{"success":true}');
|
||||
|
||||
/* Handles the error output. This error message will be sent to the uploadSuccess event handler. The event handler
|
||||
will have to check for any error messages and react as needed. */
|
||||
function HandleError($message) {
|
||||
die('{success:false,error:'.json_encode($message).'}');
|
||||
}
|
||||
?>
|
||||
67
workflow/engine/methods/bpmn/processmap.php
Executable file
67
workflow/engine/methods/bpmn/processmap.php
Executable file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
$oHeadPublisher =& headPublisher::getSingleton();
|
||||
//$oHeadPublisher->setExtSkin( 'xtheme-gray');
|
||||
$oHeadPublisher->usingExtJs('ux/RowEditor');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/bpmnZoom',true);
|
||||
$oHeadPublisher->addExtJsScript('bpmn/MyWorkflow',true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/pmosExt', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/TaskContext', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/ProcessMapContext', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/processmap', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Annotation' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/FlowConnector');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GroupFigure');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/bpmnShapes', true); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/LoopingSubProcess'); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/LoopingTask'); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Dataobject'); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Pool',true);
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Lane');
|
||||
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEmptyStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventRuleStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventTimerStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventSignalStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMulStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventLinkStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEmptyInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageRecInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageSendInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventTimerInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventBoundaryTimerInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventErrorInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCompInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventRuleInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCancelInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventInterSignal');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMultipleInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventLinkInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEmptyEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventErrorEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCompEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventTerminateEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEndSignal');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMultipleEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCancelEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventLinkEnd');
|
||||
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayInclusive' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayExclusiveData' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayExclusiveEvent' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayParallel' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayComplex' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GridPanel');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/SubProcess' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/AwesomeUploader' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Ext.ux.form.FileUploadField' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Ext.ux.XHRUpload' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/swfupload' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/swfupload.swfobject' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/ProcessOptions',true);
|
||||
|
||||
$oHeadPublisher->addContent( 'bpmn/processmap'); //adding a html file .html.
|
||||
G::RenderPage('publish', 'extJs');
|
||||
|
||||
67
workflow/engine/methods/bpmn/proxyCaseSchLoad.php
Executable file
67
workflow/engine/methods/bpmn/proxyCaseSchLoad.php
Executable file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['eid'] ) )
|
||||
{
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
require_once "classes/model/Event.php";
|
||||
$oEvent = new Event();
|
||||
$oData = $oEvent->load($_GET['eid']);
|
||||
$sch_uid = $oData['EVN_ACTION'];
|
||||
|
||||
if($sch_uid != '')
|
||||
{
|
||||
$rows = $oProcessMap->caseNewSchedulerList($sch_uid);
|
||||
if($rows['SCH_OPTION'] == '3')
|
||||
{
|
||||
$sch_start_day = explode('|',$rows['SCH_START_DAY']);
|
||||
$count = count($sch_start_day);
|
||||
switch($count){
|
||||
case 1:
|
||||
$rows['SCH_START_DAY'] = $sch_start_day[0];
|
||||
break;
|
||||
case 2:
|
||||
$rows['SCH_START_DAY'] = $sch_start_day[0];
|
||||
$rows['SCH_START_DAY_OPT_2_WEEKS'] = $sch_start_day[1];
|
||||
break;
|
||||
case 3:
|
||||
$rows['SCH_START_DAY'] = $sch_start_day[0];
|
||||
$rows['SCH_START_DAY_OPT_2_WEEKS'] = $sch_start_day[1];
|
||||
$rows['SCH_START_DAY_OPT_2_DAYS_WEEK'] = $sch_start_day[2];
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($rows['SCH_START_DATE'] != '')
|
||||
{
|
||||
$sch_str_dt = explode(' ',$rows['SCH_START_DATE']);
|
||||
$rows['SCH_START_DATE'] = $sch_str_dt[0];
|
||||
}
|
||||
if($rows['SCH_END_DATE'] != '')
|
||||
{
|
||||
$sch_str_dt = explode(' ',$rows['SCH_END_DATE']);
|
||||
$rows['SCH_END_DATE'] = $sch_str_dt[0];
|
||||
}
|
||||
|
||||
|
||||
$result = json_encode( $rows ) ;
|
||||
$result = str_replace("\\/","/",'{success:true,data:'.$result.'}'); // unescape the slashes
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = '{failure:true}'; // unescape the slashes
|
||||
}
|
||||
echo $result;
|
||||
}
|
||||
|
||||
//print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
39
workflow/engine/methods/bpmn/proxyDynaform.php
Executable file
39
workflow/engine/methods/bpmn/proxyDynaform.php
Executable file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['pid'] ) )
|
||||
{
|
||||
//Getting Dynaform List
|
||||
$rows = $oProcessMap->getExtDynaformsList($_GET['pid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
else if(isset($_GET['tabId'])){
|
||||
$oAdditionalTables = new AdditionalTables();
|
||||
$aData = $oAdditionalTables->load($_GET['tabId'], true);
|
||||
$addTabName = $aData['ADD_TAB_NAME'];
|
||||
|
||||
foreach ($aData['FIELDS'] as $iRow => $aRow) {
|
||||
if ($aRow['FLD_KEY'] == 1) {
|
||||
$rows[] = $aRow;
|
||||
}
|
||||
}
|
||||
//echo json_encode( $rows ) ;
|
||||
//die;
|
||||
}
|
||||
//Getting Additional PM tables list created by user for combobox
|
||||
else
|
||||
{
|
||||
//Getting Dynaform List
|
||||
$rows = $oProcessMap->getExtAdditionalTablesList();
|
||||
}
|
||||
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
27
workflow/engine/methods/bpmn/proxyEventsLoad.php
Executable file
27
workflow/engine/methods/bpmn/proxyEventsLoad.php
Executable file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['startInterId'] ) )
|
||||
{
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
require_once "classes/model/Event.php";
|
||||
$oEvent = new Event();
|
||||
$aRows = $oEvent->load($_GET['startInterId']);
|
||||
//$sch_uid = $oData['EVN_ACTION'];
|
||||
$result = json_encode( $aRows );
|
||||
$result = str_replace("\\/","/",'{success:true,data:'.$result.'}'); // unescape the slashes
|
||||
/*else
|
||||
{
|
||||
$result = '{failure:true}'; // unescape the slashes
|
||||
}*/
|
||||
echo $result;
|
||||
}
|
||||
//print json_encode( $result ) ;
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
64
workflow/engine/methods/bpmn/proxyProcesses_Export.php
Executable file
64
workflow/engine/methods/bpmn/proxyProcesses_Export.php
Executable file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* processes_Export.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*
|
||||
*/
|
||||
|
||||
G::LoadThirdParty('pear/json','class.json');
|
||||
|
||||
try {
|
||||
|
||||
if ( isset($_GET['pro_uid']))
|
||||
$sProUid = $_GET['pro_uid'];
|
||||
else
|
||||
throw ( new Exception ( 'the process uid is not defined!.' ) );
|
||||
|
||||
/* Includes */
|
||||
G::LoadClass('processes');
|
||||
G::LoadClass('xpdl');
|
||||
$oProcess = new Processes();
|
||||
$oXpdl = new Xpdl();
|
||||
$proFields = $oProcess->serializeProcess( $sProUid );
|
||||
$Fields = $oProcess->saveSerializedProcess ( $proFields );
|
||||
$xpdlFields = $oXpdl->xmdlProcess($sProUid);
|
||||
$Fields['FILENAMEXPDL'] = $xpdlFields['FILENAMEXPDL'];
|
||||
$Fields['FILENAME_LINKXPDL'] = $xpdlFields['FILENAME_LINKXPDL'];
|
||||
|
||||
if (G::is_https ())
|
||||
$http = 'https://';
|
||||
else
|
||||
$http = 'http://';
|
||||
|
||||
$Fields['FILENAME_LINK'] = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/processes/' . $Fields['FILENAME_LINK'];
|
||||
$Fields['FILENAME_LINKXPDL'] = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/processes/' . $Fields['FILENAME_LINKXPDL'];
|
||||
|
||||
$result = json_encode( $Fields );
|
||||
$result = str_replace("\\/","/",'{success:true,data:'.$result.'}'); // unescape the slashes
|
||||
echo $result;
|
||||
|
||||
}
|
||||
catch ( Exception $e ){
|
||||
$G_PUBLISH = new Publisher;
|
||||
$aMessage['MESSAGE'] = $e->getMessage();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
|
||||
G::RenderPage('publish', 'raw' );
|
||||
}
|
||||
40
workflow/engine/methods/bpmn/proxyStepTriggers.php
Executable file
40
workflow/engine/methods/bpmn/proxyStepTriggers.php
Executable file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
|
||||
//$_GET['sid'] gets STEP_UID and sTYPE(i.e BEFORE and AFTER) in format STEP_UID-sTYPE
|
||||
if(isset($_GET['stepid']))
|
||||
{
|
||||
$aStepTypeId = explode('|',$_GET['stepid']);
|
||||
$_SESSION['stepUID'] = $_GET['stepid'];
|
||||
//$aStepTypeId = explode('-','2517180104cd42c25cc39e4071099227-BEFORE');
|
||||
$sStep = $aStepTypeId[0];
|
||||
$sType = $aStepTypeId[1];
|
||||
}
|
||||
|
||||
if (isset($_GET['pid'] ) && isset($_SESSION['stepUID']))
|
||||
{
|
||||
$aStepTypeId = explode('|',$_SESSION['stepUID']);
|
||||
$sStep = $aStepTypeId[0];
|
||||
$sType = $aStepTypeId[1];
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
$rows = $oProcessMap->getExtAvailableStepTriggersCriteria($_GET['pid'], $sStep, $_GET['tid'], $sType);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Getting all Steps Criteria that have been selected for a particular task
|
||||
$rows = $oProcessMap->getExtStepTriggersCriteria($sStep, $_GET['tid'], $sType);
|
||||
}
|
||||
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
31
workflow/engine/methods/bpmn/proxySubProcessProperties.php
Executable file
31
workflow/engine/methods/bpmn/proxySubProcessProperties.php
Executable file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
|
||||
|
||||
//array_shift($rows);
|
||||
if($_GET['type'] == 2) //Loading sub process details
|
||||
{
|
||||
$rows = $oProcessMap->subProcessExtProperties($_GET['pid'], $_GET['tid'],'','0');
|
||||
$tmpData = json_encode( $rows ) ;
|
||||
$tmpData = str_replace("\\/","/",'{success:true,data:'.$tmpData.'}'); // unescape the slashes
|
||||
|
||||
$result = $tmpData;
|
||||
print $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
$rows = $oProcessMap->subProcessExtProperties($_GET['pid'], $_GET['tid'],'',$_GET['type']);
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
}
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
64
workflow/engine/methods/bpmn/proxyTaskPropertiesDetails.php
Executable file
64
workflow/engine/methods/bpmn/proxyTaskPropertiesDetails.php
Executable file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
require_once 'classes/model/Task.php';
|
||||
$oTask = new Task();
|
||||
$rows = $oTask->load($_GET['tid']);
|
||||
|
||||
while (list($key, $value) = each($rows)) {
|
||||
|
||||
if ($value == 'TRUE')
|
||||
$rows[$key] = true;
|
||||
else if($value == 'FALSE')
|
||||
$rows[$key] = false;
|
||||
|
||||
if($key == 'TAS_TYPE_DAY' && $value == '1')
|
||||
$rows[$key] = 'Work Days';
|
||||
else if($key == 'TAS_TYPE_DAY' && $value == '2')
|
||||
$rows[$key] = 'Calendar Days';
|
||||
|
||||
if($key == 'TAS_ASSIGN_TYPE')
|
||||
{
|
||||
switch($value)
|
||||
{
|
||||
case 'SELF_SERVICE':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'REPORT_TO':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'BALANCED':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'MANUAL':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'EVALUATE':
|
||||
$rows[$value] = 'true';
|
||||
$rows['hideEvaluateField'] = 'false';
|
||||
break;
|
||||
case 'STATIC_MI':
|
||||
$rows[$value] = 'true';
|
||||
$rows['hidePartialJoinField'] = 'false';
|
||||
break;
|
||||
case 'CANCEL_MI':
|
||||
$rows[$value] = 'true';
|
||||
$rows['hidePartialJoinField'] = 'false';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$tmpData = json_encode( $rows ) ;
|
||||
$tmpData = str_replace("\\/","/",'{success:true,data:'.$tmpData.'}'); // unescape the slashes
|
||||
|
||||
$result = $tmpData;
|
||||
echo $result;
|
||||
|
||||
}
|
||||
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
28
workflow/engine/methods/bpmn/proxyTaskSteps.php
Executable file
28
workflow/engine/methods/bpmn/proxyTaskSteps.php
Executable file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['pid'] ) )
|
||||
{
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
$rows = $oProcessMap->getExtAvailableBBCriteria($_GET['pid'], $_GET['tid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Getting all Steps Criteria that have been selected for a particular task
|
||||
$rows = $oProcessMap->getExtStepsCriteria($_GET['tid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
52
workflow/engine/methods/bpmn/proxyUsersList.php
Executable file
52
workflow/engine/methods/bpmn/proxyUsersList.php
Executable file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['pid'] ) )
|
||||
{
|
||||
$rows = $oProcessMap->usersExtList($_GET['pid'], $_GET['tid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
else
|
||||
{
|
||||
$rows = $oProcessMap->getAvailableExtUsersCriteria($_GET['tid']);
|
||||
}
|
||||
/*else
|
||||
{
|
||||
require_once 'classes/model/Users.php';
|
||||
$oCriteria = new Criteria('workflow');
|
||||
$oCriteria->addSelectColumn(UsersPeer::USR_UID);
|
||||
|
||||
$sDataBase = 'database_' . strtolower(DB_ADAPTER);
|
||||
if(G::LoadSystemExist($sDataBase)){
|
||||
G::LoadSystem($sDataBase);
|
||||
$oDataBase = new database();
|
||||
$oCriteria->addAsColumn('USR_COMPLETENAME', $oDataBase->concatString("USR_LASTNAME", "' '", "USR_FIRSTNAME"));
|
||||
}
|
||||
|
||||
$oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
|
||||
|
||||
$oDataset = UsersPeer::doSelectRS($oCriteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$oDataset->next();
|
||||
|
||||
$result = array();
|
||||
$rows = array();
|
||||
$index = isset($start) ? $start : 0;
|
||||
while($aRow = $oDataset->getRow()){
|
||||
$aRow['index'] = ++$index;
|
||||
$rows[] = $aRow;
|
||||
|
||||
$oDataset->next();
|
||||
}
|
||||
}
|
||||
*/
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
129
workflow/engine/methods/bpmn/saveProcess.php
Executable file
129
workflow/engine/methods/bpmn/saveProcess.php
Executable file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
/**
|
||||
* saveProcess.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*
|
||||
*/
|
||||
|
||||
try{
|
||||
G::LoadClass('xpdl');
|
||||
G::LoadClass('processMap');
|
||||
G::LoadClass('tasks');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
$oProcess = new Xpdl();
|
||||
$oTask = new Task();
|
||||
if(isset($_POST['PRO_UID'])){
|
||||
$idProcess = $_POST['PRO_UID'];
|
||||
if($oProcess->processExists ($idProcess)){
|
||||
$process['ID'] = $idProcess;
|
||||
}
|
||||
else{
|
||||
$result = array();
|
||||
$result['status_code'] = $idProcess;
|
||||
$result['message'] = "the process don't exists";
|
||||
$result['timestamp'] = date('Y-m-d H:i:s');
|
||||
echo json_encode($result);
|
||||
die;
|
||||
}
|
||||
}
|
||||
else{
|
||||
$result = array();
|
||||
$result['status_code'] = 1;
|
||||
$result['message'] = "you don't send the process uid";
|
||||
$result['timestamp'] = date('Y-m-d H:i:s');
|
||||
echo json_encode($result);
|
||||
die;
|
||||
}
|
||||
$aTasks = json_decode ( $_POST['tasks'] );
|
||||
$aRoutes = json_decode ( $_POST['routes'] );
|
||||
$aEvents = json_decode ( $_POST['events'] );
|
||||
$aGateways = json_decode ( $_POST['gateways'] );
|
||||
$aAnnotations = json_decode ( $_POST['annotations'] );
|
||||
$aSubprocess = json_decode ( $_POST['subprocess'] );
|
||||
$fields = $oProcess->serializeProcess($idProcess);
|
||||
//$oData = unserialize($fields);
|
||||
$aRoutes = $oProcess->super_unique($aRoutes);
|
||||
$sOutput = '';
|
||||
$subProcesses = array();
|
||||
foreach($aTasks as $endBase => $valueEnd){
|
||||
$tasks['ID_TASK'] = $valueEnd['0'];
|
||||
$tasks['START'] = '';
|
||||
foreach($aEvents as $id => $value){
|
||||
if($value['1'] == 'bpmnEventEmptyStart' or $value['1'] == 'bpmnEventMessageStart' or $value['1'] == 'bpmnEventTimerStart' ){
|
||||
foreach($aRoutes as $endR => $valueR){
|
||||
if($tasks['ID_TASK'] == $valueR['2'] and $valueR['1'] == $value['0'] ){
|
||||
$tasks['START'] = 'TRUE';
|
||||
unset($aEvents[$id]);
|
||||
unset($aRoutes[$endR]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( $tasks['START'] == ''){
|
||||
$tasks['START'] = 'FALSE';
|
||||
}
|
||||
$tasks['TAS_TITLE'] = $valueEnd['1'];
|
||||
$tasks['X'] = $valueEnd['2'];
|
||||
$tasks['Y'] = $valueEnd['3'];
|
||||
$tasks['TAS_TYPE'] = $valueEnd['6'];
|
||||
$tasks['ID_PROCESS'] = $idProcess;
|
||||
//$tasks['TASK_TYPE'] = 'NORMAL';
|
||||
$tasks['DESCRIPTION']= '';
|
||||
$oData->tasks[]= $oProcess->createDataTask($tasks);
|
||||
}
|
||||
$endArray = array();
|
||||
$endArray = $oProcess->convertArrayEnd($aEvents,$idProcess);
|
||||
$oData->lanes = $oProcess->createLanesPM($aAnnotations,$idProcess);
|
||||
$transitions = $oProcess->createArrayRoutes($oData->tasks,$aRoutes,$aEvents,$aGateways,$aEvents,$idProcess);
|
||||
$oData->routes = $transitions['ROUTES'];
|
||||
$routeTransitions = $transitions['TRANSITIONS'];
|
||||
$numberRoutes = $transitions['NUMBER'];
|
||||
$oData->tasks = $transitions['TASKS'];
|
||||
$taskHidden = $transitions['HIDDEN'];
|
||||
foreach($aSubprocess as $key => $value){
|
||||
//print_R($value['0']);
|
||||
//$sOutput = $oTask->remove($value['0']);
|
||||
$sOutput = $oProcessMap->addSubProcess($idProcess,$value['2'],$value['3']);
|
||||
/*$subProcess[$key]['ID_PROCESS'] = $idProcess;
|
||||
$subProcess[$key]['TAS_TITLE'] = $idProcess;
|
||||
$subProcess[$key]['ID_TASK'] = $value['0'];
|
||||
$subProcess[$key]['TAS_UID'] = $value['0'];
|
||||
$subProcess[$key]['TASK_PARENT'] = '';
|
||||
$subProcess[$key]['PROCESS_PARENT'] = '';
|
||||
$subProcess[$key]['TASK_TYPE'] = 'SUBPROCESS';
|
||||
$subProcess[$key]['DESCRIPTION'] = '';
|
||||
$subProcess[$key]['X'] = $value['2'];
|
||||
$subProcess[$key]['Y'] = $value['3'];
|
||||
|
||||
print_R($subProcess[$key]);
|
||||
$subProcesses[] = $oProcess->createSubProcess($subProcess);
|
||||
$oData->tasks[] = $oProcess->createTask($subProcess[$key]);*/
|
||||
}
|
||||
$numberTransitions = sizeof($routeTransitions);
|
||||
if($numberTransitions > 0){
|
||||
$routesArray = $oProcess->createGateways($routeTransitions,$endArray,$oData->routes,$numberRoutes,$idProcess,$taskHidden);
|
||||
$oData->routes = $routesArray;
|
||||
}
|
||||
$oProcess->updateProcessFromDataXpdl($oData,$oData->tasks);
|
||||
}
|
||||
catch (Exception $oException) {
|
||||
die($oException->getMessage());
|
||||
}
|
||||
195
workflow/engine/templates/bpmn/Annotation.js
Executable file
195
workflow/engine/templates/bpmn/Annotation.js
Executable file
@@ -0,0 +1,195 @@
|
||||
bpmnAnnotation = function (_30ab) {
|
||||
VectorFigure.call(this);
|
||||
if(typeof _30ab.anno_width != 'undefined' && typeof _30ab.anno_height != 'undefined')
|
||||
this.setDimension(_30ab.anno_width, _30ab.anno_height);
|
||||
else
|
||||
this.setDimension(110, 60);
|
||||
this.setAnnotationName(_30ab.annotationName); //It will set the Default Task Name with appropriate count While dragging a task on the canvas
|
||||
};
|
||||
|
||||
bpmnAnnotation.prototype = new VectorFigure;
|
||||
bpmnAnnotation.prototype.type = "bpmnAnnotation";
|
||||
bpmnAnnotation.prototype.setAnnotationName = function (name) {
|
||||
if(typeof name != 'undefined')
|
||||
this.annotationName = name;
|
||||
else
|
||||
this.annotationName = 'Annotation';
|
||||
};
|
||||
|
||||
bpmnAnnotation.prototype.coord_converter = function (bound_width, bound_height, text_length) {
|
||||
//bound_width = this.workflow.currentSelection.width;
|
||||
//bound_height = this.workflow.currentSelection.height;
|
||||
input_width = text_length * 6
|
||||
input_height = 10
|
||||
|
||||
temp_width = bound_width - input_width;
|
||||
temp_width /= 2;
|
||||
temp_x = temp_width;
|
||||
|
||||
temp_height = bound_height - 10;
|
||||
temp_height /= 2;
|
||||
temp_y = temp_height;
|
||||
|
||||
var temp_coord = new Object();
|
||||
temp_coord.temp_x = temp_x;
|
||||
temp_coord.temp_y = temp_y;
|
||||
return temp_coord;
|
||||
};
|
||||
|
||||
|
||||
|
||||
bpmnAnnotation.prototype.paint = function () {
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
|
||||
//Set the Task Limitation
|
||||
if(this.getWidth() > 200 || this.getHeight() > 100)
|
||||
{
|
||||
this.setDimension(200, 100);
|
||||
}
|
||||
if(this.getWidth() < 110 || this.getHeight() < 60)
|
||||
{
|
||||
this.setDimension(110, 60);
|
||||
}
|
||||
this.graphics.setColor("#ffffff");
|
||||
this.graphics.fillRect(0,0, this.getWidth(), this.getHeight());
|
||||
this.graphics.setColor("#000000");
|
||||
this.graphics.drawLine(this.getWidth()/4,0,0,0);
|
||||
this.graphics.drawLine(0,0,0,this.getHeight());
|
||||
this.graphics.drawLine(0,this.getHeight(),this.getWidth()/4,this.getHeight());
|
||||
this.graphics.paint();
|
||||
/*var x = new Array(6, this.getWidth() - 3, this.getWidth(), this.getWidth(), this.getWidth() - 3, 6, 3, 3, 6);
|
||||
var y = new Array(3, 3, 6, this.getHeight() - 3, this.getHeight(), this.getHeight(), this.getHeight() - 3, 6, 3);
|
||||
this.graphics.setStroke(this.stroke);
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillPolygon(x, y);
|
||||
|
||||
for (var i = 0; i < x.length; i++) {
|
||||
x[i] = x[i] - 3;
|
||||
y[i] = y[i] - 3;
|
||||
}
|
||||
this.graphics.setColor("#ffffff");
|
||||
this.graphics.fillPolygon(x, y);
|
||||
this.graphics.setColor("#ff0f0f");
|
||||
this.graphics.drawPolygon(x, y);
|
||||
this.graphics.paint();
|
||||
this.x_text = this.workflow.getAbsoluteX(); //Get x co-ordinate from figure
|
||||
this.y_text = this.workflow.getAbsoluteY(); //Get x co-ordinate from figure
|
||||
*/
|
||||
/* New object is created to implement changing of Text functionality
|
||||
*/
|
||||
var bpmnText = new jsGraphics(this.id);
|
||||
var padleft = 0.10*this.getWidth();
|
||||
var padtop = 0.18*this.getHeight();
|
||||
var rectwidth = this.getWidth() - padleft;
|
||||
var rectheight = this.getHeight() - 2*padtop;
|
||||
bpmnText.drawStringRect(this.annotationName,0,padtop,rectwidth,rectheight,'center');
|
||||
//bpmnText.drawStringRect(this.taskName,this.getWidth()/2-20,this.getHeight()/2-11,200,'left');
|
||||
//tempcoord = this.coord_converter(this.getWidth(), this.getHeight(), this.taskName.length);
|
||||
//bpmnText.drawTextString(this.taskName, this.getWidth(), this.getHeight(), tempcoord.temp_x, tempcoord.temp_y);
|
||||
bpmnText.paint();
|
||||
this.bpmnNewText = bpmnText;
|
||||
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
jsGraphics.prototype.drawTextString = function (txt, x, y, dx, dy) {
|
||||
this.htm += '<div style="position:absolute; display:table-cell; vertical-align:middle; height:' + y + '; width:' + x + ';' + 'margin-left:' + dx + 'px;' + 'margin-top:' + dy + 'px;' + 'font-family:' + this.ftFam + ';' + 'font-size:' + this.ftSz + ';' + 'color:' + this.color + ';' + this.ftSty + '">' + txt + '<\/div>';
|
||||
};
|
||||
|
||||
|
||||
|
||||
bpmnAnnotation.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
this.input1=new InputPort();
|
||||
this.input1.setWorkflow(_40c5);
|
||||
this.input1.setName('input1');
|
||||
this.input1.setZOrder(-1);
|
||||
this.input1.setBackgroundColor(new Color(255, 255, 255));
|
||||
this.input1.setColor(new Color(255, 255, 255));
|
||||
this.addPort(this.input1,0,this.height/2);
|
||||
};
|
||||
};
|
||||
|
||||
bpmnAnnotationDialog = function (_2e5e) {
|
||||
this.figure = _2e5e;
|
||||
var title = 'Annotation';
|
||||
Dialog.call(this, title);
|
||||
this.setDimension(400, 150); //Set the width and height of the Dialog box
|
||||
}
|
||||
|
||||
bpmnAnnotationDialog.prototype = new Dialog();
|
||||
bpmnAnnotationDialog.prototype.createHTMLElement = function () {
|
||||
var item = Dialog.prototype.createHTMLElement.call(this);
|
||||
var inputDiv = document.createElement("form");
|
||||
inputDiv.style.position = "absolute";
|
||||
inputDiv.style.left = "10px";
|
||||
inputDiv.style.top = "30px";
|
||||
inputDiv.style.width = "375px";
|
||||
inputDiv.style.font = "normal 10px verdana";
|
||||
item.appendChild(inputDiv);
|
||||
this.label = document.createTextNode("Annotation Name");
|
||||
inputDiv.appendChild(this.label);
|
||||
this.input = document.createElement("textarea");
|
||||
this.input.style.border = "1px solid gray";
|
||||
this.input.style.font = "normal 10px verdana";
|
||||
//this.input.type = "text";
|
||||
this.input.maxLength = "500";
|
||||
this.input.cols = "50";
|
||||
this.input.rows = "3";
|
||||
var value = bpmnTask.prototype.trim(this.figure.workflow.currentSelection.annotationName);
|
||||
if (value) this.input.value = value;
|
||||
else this.input.value = "";
|
||||
this.input.style.width = "100%";
|
||||
inputDiv.appendChild(this.input);
|
||||
this.input.focus();
|
||||
return item;
|
||||
};
|
||||
|
||||
/*Double Click Event for opening the dialog Box*/
|
||||
bpmnAnnotation.prototype.onDoubleClick = function () {
|
||||
var _409d = new bpmnAnnotationDialog(this);
|
||||
this.workflow.showDialog(_409d, this.workflow.currentSelection.x, this.workflow.currentSelection.y);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This method will be called if the user pressed the OK button in buttonbar of the dialog.<br>
|
||||
* The string is first cleared and new string is painted.<br><br>
|
||||
**/
|
||||
bpmnAnnotationDialog.prototype.onOk = function () {
|
||||
this.figure.bpmnNewText.clear();
|
||||
|
||||
len = Math.ceil(this.input.value.length/16);
|
||||
if(this.input.value.length < 19)
|
||||
{
|
||||
len = 1.5;
|
||||
if(this.input.value.length > 9)
|
||||
this.figure.rectWidth = this.input.value.length*8;
|
||||
else
|
||||
this.figure.rectWidth = 48;
|
||||
}
|
||||
else
|
||||
this.figure.rectWidth = 150;
|
||||
//tempcoord = this.workflow.currentSelection.coord_converter(this.workflow.currentSelection.width, this.workflow.currentSelection.height, this.input.value.length)
|
||||
this.figure.bpmnNewText.drawStringRect(this.input.value,20,20,this.figure.rectWidth,'left');
|
||||
// this.figure.bpmnNewText.drawTextString(this.input.value, this.workflow.currentSelection.width, this.workflow.currentSelection.height, tempcoord.temp_x, tempcoord.temp_y);
|
||||
this.figure.bpmnNewText.paint();
|
||||
this.figure.annotationName = this.input.value; //Set Updated Text value
|
||||
|
||||
//Updating Annotation Text Async into the DB
|
||||
this.figure.actiontype = 'updateText';
|
||||
this.workflow.saveShape(this.figure);
|
||||
|
||||
if(this.figure.rectWidth<80)
|
||||
tempW = 110;
|
||||
else
|
||||
tempW = this.figure.rectWidth+35;
|
||||
this.workflow.currentSelection.setDimension(tempW, len*13+40);
|
||||
|
||||
this.workflow.removeFigure(this);
|
||||
};
|
||||
|
||||
540
workflow/engine/templates/bpmn/AwesomeUploader.js
Executable file
540
workflow/engine/templates/bpmn/AwesomeUploader.js
Executable file
File diff suppressed because it is too large
Load Diff
33
workflow/engine/templates/bpmn/Dataobject.js
Executable file
33
workflow/engine/templates/bpmn/Dataobject.js
Executable file
@@ -0,0 +1,33 @@
|
||||
bpmnDataobject = function (_30ab) {
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(50, 80);
|
||||
this.setTaskName(_30ab.taskNo); //It will set the Default Task Name with appropriate count While dragging a task on the canvas
|
||||
};
|
||||
|
||||
bpmnDataobject.prototype = new VectorFigure;
|
||||
bpmnDataobject.prototype.type = "bpmnDataobject";
|
||||
bpmnDataobject.prototype.setTaskName = function (name) {
|
||||
this.taskName = 'Data Object ' + name;
|
||||
};
|
||||
|
||||
bpmnDataobject.prototype.paint = function () {
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
var x = new Array(0, this.getWidth()-10, this.getWidth(), this.getWidth()-10, this.getWidth()-10, this.getWidth(), this.getWidth(), 0);
|
||||
var y = new Array(0, 0, 10, 10, 0, 10, this.getHeight(), this.getHeight());
|
||||
|
||||
this.graphics.setStroke(this.stroke);
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillPolygon(x, y);
|
||||
|
||||
for (var i = 0; i < x.length; i++) {
|
||||
x[i] = x[i] - 3;
|
||||
y[i] = y[i] - 3;
|
||||
}
|
||||
this.graphics.setColor("#ffffff");
|
||||
this.graphics.fillPolygon(x, y);
|
||||
this.graphics.setColor("#ff0f0f");
|
||||
this.graphics.drawPolygon(x, y);
|
||||
this.graphics.paint();
|
||||
this.x_text = this.workflow.getAbsoluteX(); //Get x co-ordinate from figure
|
||||
this.y_text = this.workflow.getAbsoluteY(); //Get x co-ordinate from figure
|
||||
}
|
||||
97
workflow/engine/templates/bpmn/EventBoundaryTimerInter.js
Executable file
97
workflow/engine/templates/bpmn/EventBoundaryTimerInter.js
Executable file
@@ -0,0 +1,97 @@
|
||||
bpmnEventBoundaryTimerInter=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke = 2;
|
||||
};
|
||||
bpmnEventBoundaryTimerInter.prototype=new VectorFigure;
|
||||
bpmnEventBoundaryTimerInter.prototype.type="bpmnEventBoundaryTimerInter";
|
||||
bpmnEventBoundaryTimerInter.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
var x_cir1=0;
|
||||
var y_cir1=0;
|
||||
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x_cir1+3,y_cir1+3,this.getWidth(),this.getHeight());
|
||||
|
||||
this.graphics.setStroke(this.stroke);
|
||||
this.graphics.setColor( "#f9faf2" );
|
||||
this.graphics.fillEllipse(x_cir1,y_cir1,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawEllipse(x_cir1,y_cir1,this.getWidth(),this.getHeight());
|
||||
var x_cir2=3;
|
||||
var y_cir2=3;
|
||||
this.graphics.setColor( "#f9faf2" );
|
||||
this.graphics.fillEllipse(x_cir2,y_cir2,this.getWidth()-6,this.getHeight()-6);
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawEllipse(x_cir2,y_cir2,this.getWidth()-6,this.getHeight()-6);
|
||||
|
||||
/*
|
||||
//drawing clock's minutes lines
|
||||
this.graphics.setColor("#adae5e");
|
||||
//this.graphics.drawEllipse(x_cir3,y_cir3,this.getWidth()-20,this.getHeight()-20);
|
||||
this.graphics.drawLine(this.getWidth()/2,this.getHeight()/2,this.getWidth()/1.3,this.getHeight()/2);
|
||||
this.graphics.drawLine(this.getWidth()/2,this.getHeight()/2,this.getWidth()/2,this.getHeight()/4.5);
|
||||
*/
|
||||
|
||||
|
||||
//var x_cir3=10;
|
||||
//var y_cir3=10;
|
||||
//this.graphics.setColor( "#f9faf2" );
|
||||
//this.graphics.fillEllipse(x_cir3,y_cir3,this.getWidth()-20,this.getHeight()-20);
|
||||
this.graphics.setColor("#adae5e");
|
||||
//this.graphics.drawEllipse(x_cir3,y_cir3,this.getWidth()-20,this.getHeight()-20);
|
||||
this.graphics.drawLine(this.getWidth()/2.2,this.getHeight()/2,this.getWidth()/1.6,this.getHeight()/2); //horizontal line
|
||||
this.graphics.drawLine(this.getWidth()/2.2,this.getHeight()/2,this.getWidth()/2.2,this.getHeight()/3.7); //vertical line
|
||||
|
||||
this.graphics.drawLine(24,8,20,11); //10th min line
|
||||
this.graphics.drawLine(22,15,25,15); //15th min line
|
||||
this.graphics.drawLine(24,22,19,20); //25th min line
|
||||
this.graphics.drawLine(15,22,15,25); //30th min line
|
||||
this.graphics.drawLine(8,22,12,19); //40th min line
|
||||
this.graphics.drawLine(5,15,8,15); //45th min line
|
||||
this.graphics.drawLine(8,8,11,11); //50th min line
|
||||
this.graphics.drawLine(15,5,15,8); //60th min line
|
||||
|
||||
this.graphics.paint();
|
||||
|
||||
/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventBoundaryTimerInter.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
var eventPortName = ['input2','output2'];
|
||||
var eventPortType = ['InputPort','OutputPort'];
|
||||
var eventPositionX= [this.width/2,this.width/2];
|
||||
var eventPositionY= [0,this.height];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventBoundaryTimerInter.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
76
workflow/engine/templates/bpmn/EventCancelEnd.js
Executable file
76
workflow/engine/templates/bpmn/EventCancelEnd.js
Executable file
@@ -0,0 +1,76 @@
|
||||
bpmnEventCancelEnd=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke=3;
|
||||
};
|
||||
bpmnEventCancelEnd.prototype=new VectorFigure;
|
||||
bpmnEventCancelEnd.prototype.type="bpmnEventCancelEnd";
|
||||
bpmnEventCancelEnd.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
//Set the Task Limitation
|
||||
if (this.getWidth() < 30 || this.getHeight() < 30) {
|
||||
this.setDimension(30, 30);
|
||||
}
|
||||
|
||||
this.graphics.setStroke(this.stroke);
|
||||
var x_cir = 0;
|
||||
var y_cir = 0;
|
||||
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x_cir+5,y_cir+5,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#f7f1e5");
|
||||
this.graphics.fillEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#c46508");
|
||||
this.graphics.drawEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
this.graphics.setStroke(2);
|
||||
//var x=new Array(16,23,31,36,29,37,32,23,16,11,18,11);
|
||||
//var y=new Array(35,27,33,29,22,14,9,16,9,14,22,29);
|
||||
var x=new Array(this.getWidth()/2.8,this.getWidth()/1.95,this.getWidth()/1.45,this.getWidth()/1.25,this.getWidth()/1.55,this.getWidth()/1.21,this.getWidth()/1.4,this.getWidth()/1.95,this.getWidth()/2.8,this.getWidth()/4.1,this.getWidth()/2.5,this.getWidth()/4.1);
|
||||
var y=new Array(this.getHeight()/1.28,this.getHeight()/1.66,this.getHeight()/1.36,this.getHeight()/1.55,this.getHeight()/2.04,this.getHeight()/3.21,this.getHeight()/5.6,this.getHeight()/2.81,this.getHeight()/5.6,this.getHeight()/3.21,this.getHeight()/2.04,this.getHeight()/1.55);
|
||||
this.graphics.setColor("#c46508");
|
||||
this.graphics.fillPolygon(x,y);
|
||||
this.graphics.setColor("#c46508");
|
||||
//this.graphics.drawPolygon(x,y);
|
||||
this.graphics.paint();
|
||||
|
||||
/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventCancelEnd.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
var eventPortName = ['input1','input2'];
|
||||
var eventPortType = ['InputPort','InputPort'];
|
||||
var eventPositionX= [this.width/2,0];
|
||||
var eventPositionY= [0,this.height/2];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventCancelEnd.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
30
workflow/engine/templates/bpmn/EventCancelInter.js
Executable file
30
workflow/engine/templates/bpmn/EventCancelInter.js
Executable file
@@ -0,0 +1,30 @@
|
||||
bpmnEventCancelInter=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(45,45);
|
||||
this.stroke=2;
|
||||
};
|
||||
bpmnEventCancelInter.prototype=new VectorFigure;
|
||||
bpmnEventCancelInter.prototype.type="bpmnEventCancelInter";
|
||||
bpmnEventCancelInter.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
this.graphics.setStroke(this.stroke);
|
||||
var x_cir = 0;
|
||||
var y_cir = 0;
|
||||
this.graphics.setColor("#000000");
|
||||
this.graphics.drawEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
var x_cir2=5;
|
||||
var y_cir2=5;
|
||||
this.graphics.setColor("#000000");
|
||||
this.graphics.drawEllipse(x_cir2,y_cir2,this.getWidth()-10,this.getHeight()-10);
|
||||
//var x=new Array(16,23,31,36,29,37,32,23,16,11,18,11);
|
||||
//var y=new Array(35,27,33,29,22,14,9,16,9,14,22,29);
|
||||
var x=new Array(this.getWidth()/2.8,this.getWidth()/1.95,this.getWidth()/1.45,this.getWidth()/1.25,this.getWidth()/1.55,this.getWidth()/1.21,this.getWidth()/1.4,this.getWidth()/1.95,this.getWidth()/2.8,this.getWidth()/4.1,this.getWidth()/2.5,this.getWidth()/4.1);
|
||||
var y=new Array(this.getHeight()/1.28,this.getHeight()/1.66,this.getHeight()/1.36,this.getHeight()/1.55,this.getHeight()/2.04,this.getHeight()/3.21,this.getHeight()/5.6,this.getHeight()/2.81,this.getHeight()/5.6,this.getHeight()/3.21,this.getHeight()/2.04,this.getHeight()/1.55);
|
||||
this.graphics.setColor("#ffffff");
|
||||
this.graphics.fillPolygon(x,y);
|
||||
this.graphics.setColor("#000000");
|
||||
this.graphics.drawPolygon(x,y);
|
||||
this.graphics.paint();
|
||||
};
|
||||
|
||||
|
||||
70
workflow/engine/templates/bpmn/EventCompEnd.js
Executable file
70
workflow/engine/templates/bpmn/EventCompEnd.js
Executable file
@@ -0,0 +1,70 @@
|
||||
bpmnEventCompEnd=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke=3
|
||||
};
|
||||
bpmnEventCompEnd.prototype=new VectorFigure;
|
||||
bpmnEventCompEnd.prototype.type="bpmnEventCompEnd";
|
||||
bpmnEventCompEnd.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
this.graphics.setStroke(this.stroke);
|
||||
var x_cir = 0;
|
||||
var y_cir = 0;
|
||||
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x_cir+5,y_cir+5,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#f7f1e5");
|
||||
this.graphics.fillEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#c46508");
|
||||
this.graphics.drawEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
//var x_arrow=new Array(6,19,19,32,32,19,19);
|
||||
//var y_arrow=new Array(22,33,22,33,11,22,11);
|
||||
var x_arrow=new Array(this.getWidth()/7,this.getWidth()/2.36,this.getWidth()/2.36,this.getWidth()/1.4,this.getWidth()/1.42,this.getWidth()/2.36,this.getWidth()/2.36);
|
||||
var y_arrow=new Array(this.getHeight()/2,this.getHeight()/1.36,this.getHeight()/2,this.getHeight()/1.36,this.getHeight()/4,this.getHeight()/2,this.getHeight()/4);
|
||||
this.graphics.setColor( "#c46508" );
|
||||
this.graphics.fillPolygon(x_arrow,y_arrow);
|
||||
this.graphics.setColor("#c46508");
|
||||
//this.graphics.drawPolygon(x_arrow,y_arrow);
|
||||
this.graphics.paint();/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventCompEnd.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
var eventPortName = ['input1','input2'];
|
||||
var eventPortType = ['InputPort','InputPort'];
|
||||
var eventPositionX= [this.width/2,0];
|
||||
var eventPositionY= [0,this.height/2];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
bpmnEventCompEnd.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
102
workflow/engine/templates/bpmn/EventCompInter.js
Executable file
102
workflow/engine/templates/bpmn/EventCompInter.js
Executable file
@@ -0,0 +1,102 @@
|
||||
bpmnEventCompInter=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke=2
|
||||
};
|
||||
bpmnEventCompInter.prototype=new VectorFigure;
|
||||
bpmnEventCompInter.prototype.type="bpmnEventCompInter";
|
||||
bpmnEventCompInter.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
this.graphics.setStroke(this.stroke);
|
||||
var x_cir =0;
|
||||
var y_cir =0;
|
||||
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x_cir+3,y_cir+3,this.getWidth(),this.getHeight());
|
||||
|
||||
this.graphics.setColor("#f9faf2")
|
||||
this.graphics.fillEllipse(x_cir,y_cir,this.getWidth(),this.getHeight())
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
|
||||
var x_cir2=3;
|
||||
var y_cir2=3;
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawEllipse(x_cir2,y_cir2,this.getWidth()-6,this.getHeight()-6);
|
||||
//var x_arrow=new Array(6,19,19,32,32,19,19);
|
||||
//var y_arrow=new Array(22,33,22,33,11,22,11);
|
||||
var x_arrow=new Array(this.getWidth()/7.5,this.getWidth()/2.36,this.getWidth()/2.36,this.getWidth()/1.4,this.getWidth()/1.42,this.getWidth()/2.36,this.getWidth()/2.36);
|
||||
var y_arrow=new Array(this.getHeight()/2,this.getHeight()/1.36,this.getHeight()/2,this.getHeight()/1.36,this.getHeight()/4,this.getHeight()/2,this.getHeight()/4);
|
||||
this.graphics.setColor( "#adae5e" );
|
||||
this.graphics.fillPolygon(x_arrow,y_arrow);
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawPolygon(x_arrow,y_arrow);
|
||||
this.graphics.paint();
|
||||
|
||||
/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventCompInter.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
|
||||
var eventPortName = ['input1','input2','output1','output2'];
|
||||
var eventPortType = ['InputPort','InputPort','OutputPort','OutputPort'];
|
||||
var eventPositionX= [0,this.width/2,this.width,this.width/2];
|
||||
var eventPositionY= [this.height/2,0,this.height/2,this.height];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
/*
|
||||
this.output1=new OutputPort();
|
||||
this.output1.setWorkflow(_40c5);
|
||||
this.output1.setName("output1");
|
||||
this.output1.setBackgroundColor(new Color(115, 115, 245));
|
||||
this.addPort(this.output1,this.width/2,this.height);
|
||||
|
||||
this.output2=new OutputPort();
|
||||
this.output2.setWorkflow(_40c5);
|
||||
this.output2.setName("output2");
|
||||
this.output2.setBackgroundColor(new Color(115, 115, 245));
|
||||
this.addPort(this.output2,this.width,this.height/2);
|
||||
|
||||
this.input1=new InputPort();
|
||||
this.input1.setWorkflow(_40c5);
|
||||
this.input1.setName("input1");
|
||||
this.input1.setBackgroundColor(new Color(245,115,115));
|
||||
this.addPort(this.input1,0,this.height/2);
|
||||
|
||||
this.input2=new InputPort();
|
||||
this.input2.setWorkflow(_40c5);
|
||||
this.input2.setName("input2");
|
||||
this.input2.setBackgroundColor(new Color(245,115,115));
|
||||
this.addPort(this.input2,this.width/2,0);*/
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventCompInter.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
|
||||
78
workflow/engine/templates/bpmn/EventEmptyEnd.js
Executable file
78
workflow/engine/templates/bpmn/EventEmptyEnd.js
Executable file
@@ -0,0 +1,78 @@
|
||||
bpmnEventEmptyEnd=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke=3;
|
||||
};
|
||||
bpmnEventEmptyEnd.prototype=new VectorFigure;
|
||||
bpmnEventEmptyEnd.prototype.type="bpmnEventEmptyEnd";
|
||||
bpmnEventEmptyEnd.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
if (this.getWidth() < 30 || this.getHeight() < 30) {
|
||||
this.setDimension(30, 30);
|
||||
}
|
||||
var x=0;
|
||||
var y=0;
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x+5,y+5,this.getWidth(),this.getHeight());
|
||||
this.graphics.setStroke(this.stroke);
|
||||
this.graphics.setColor( "#f7f1e5" );
|
||||
this.graphics.fillEllipse(x,y,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#c46508");
|
||||
this.graphics.drawEllipse(x,y,this.getWidth(),this.getHeight());
|
||||
this.graphics.paint();
|
||||
|
||||
/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventEmptyEnd.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
|
||||
var eventPortName = ['input1','input2'];
|
||||
var eventPortType = ['InputPort','InputPort'];
|
||||
var eventPositionX= [this.width/2,0];
|
||||
var eventPositionY= [0,this.height/2];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
/*
|
||||
this.input1=new InputPort();
|
||||
this.input1.setWorkflow(_40c5);
|
||||
this.input1.setName("input1");
|
||||
this.input1.setBackgroundColor(new Color(245,115,115));
|
||||
this.addPort(this.input1,this.width/2,0);
|
||||
|
||||
this.input2=new InputPort();
|
||||
this.input2.setWorkflow(_40c5);
|
||||
this.input2.setName("input2");
|
||||
this.input2.setBackgroundColor(new Color(245,115,115));
|
||||
this.addPort(this.input2,0,this.height/2);*/
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
bpmnEventEmptyEnd.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
78
workflow/engine/templates/bpmn/EventEmptyInter.js
Executable file
78
workflow/engine/templates/bpmn/EventEmptyInter.js
Executable file
@@ -0,0 +1,78 @@
|
||||
bpmnEventEmptyInter=function(width,_30ab){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke=2;
|
||||
};
|
||||
bpmnEventEmptyInter.prototype=new VectorFigure;
|
||||
bpmnEventEmptyInter.prototype.type="bpmnEventEmptyInter";
|
||||
bpmnEventEmptyInter.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
if (this.getWidth() < 30 || this.getHeight() < 30) {
|
||||
this.setDimension(30, 30);
|
||||
}
|
||||
this.graphics.setStroke(this.stroke);
|
||||
var x_cir1 = 0;
|
||||
var y_cir1 = 0;
|
||||
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x_cir1+3,y_cir1+3,this.getWidth(),this.getHeight());
|
||||
|
||||
this.graphics.setColor( "#f9faf2" );
|
||||
this.graphics.fillEllipse(x_cir1,y_cir1,this.getWidth(),this.getHeight());
|
||||
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawEllipse(x_cir1,y_cir1,this.getWidth(),this.getHeight());
|
||||
|
||||
var x_cir2=3;
|
||||
var y_cir2=3;
|
||||
|
||||
this.graphics.setColor( "#f9faf2" );
|
||||
this.graphics.fillEllipse(x_cir2,y_cir2,this.getWidth()-6,this.getHeight()-6);
|
||||
|
||||
this.graphics.setColor("#adae5e");
|
||||
this.graphics.drawEllipse(x_cir2,y_cir2,this.getWidth()-6,this.getHeight()-6);
|
||||
|
||||
this.graphics.paint();
|
||||
|
||||
/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventEmptyInter.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
var eventPortName = ['input1','input2','output1','output2'];
|
||||
var eventPortType = ['InputPort','InputPort','OutputPort','OutputPort'];
|
||||
var eventPositionX= [0,this.width/2,this.width,this.width/2];
|
||||
var eventPositionY= [this.height/2,0,this.height/2,this.height];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventEmptyInter.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
|
||||
70
workflow/engine/templates/bpmn/EventEmptyStart.js
Executable file
70
workflow/engine/templates/bpmn/EventEmptyStart.js
Executable file
@@ -0,0 +1,70 @@
|
||||
bpmnEventEmptyStart=function(){
|
||||
VectorFigure.call(this);
|
||||
this.setDimension(30,30);
|
||||
this.stroke=2;
|
||||
};
|
||||
bpmnEventEmptyStart.prototype=new VectorFigure;
|
||||
bpmnEventEmptyStart.prototype.type="bpmnEventEmptyStart";
|
||||
bpmnEventEmptyStart.prototype.paint=function(){
|
||||
VectorFigure.prototype.paint.call(this);
|
||||
if (this.getWidth() < 30 || this.getHeight() < 30) {
|
||||
this.setDimension(30, 30);
|
||||
}
|
||||
|
||||
var x_cir = 0;
|
||||
var y_cir = 0;
|
||||
|
||||
this.graphics.setColor("#c0c0c0");
|
||||
this.graphics.fillEllipse(x_cir+4,y_cir+4,this.getWidth(),this.getHeight());
|
||||
this.graphics.setStroke(this.stroke);
|
||||
this.graphics.setColor( "#e4f7df" );
|
||||
this.graphics.fillEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
this.graphics.setColor("#4aa533");
|
||||
this.graphics.drawEllipse(x_cir,y_cir,this.getWidth(),this.getHeight());
|
||||
this.graphics.paint();
|
||||
|
||||
|
||||
|
||||
|
||||
/*Code Added to Dynamically shift Ports on resizing of shapes
|
||||
**/
|
||||
if(this.input1!=null){
|
||||
this.input1.setPosition(0,this.height/2);
|
||||
}
|
||||
if(this.output1!=null){
|
||||
this.output1.setPosition(this.width/2,this.height);
|
||||
}
|
||||
if(this.input2!=null){
|
||||
this.input2.setPosition(this.width/2,0);
|
||||
}
|
||||
if(this.output2!=null){
|
||||
this.output2.setPosition(this.width,this.height/2);
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventEmptyStart.prototype.setWorkflow=function(_40c5){
|
||||
VectorFigure.prototype.setWorkflow.call(this,_40c5);
|
||||
if(_40c5!=null){
|
||||
var eventPortName = ['output1','output2'];
|
||||
var eventPortType = ['OutputPort','OutputPort'];
|
||||
var eventPositionX= [this.width/2,this.width];
|
||||
var eventPositionY= [this.height,this.height/2];
|
||||
|
||||
for(var i=0; i< eventPortName.length ; i++){
|
||||
eval('this.'+eventPortName[i]+' = new '+eventPortType[i]+'()'); //Create New Port
|
||||
eval('this.'+eventPortName[i]+'.setWorkflow(_40c5)'); //Add port to the workflow
|
||||
eval('this.'+eventPortName[i]+'.setName("'+eventPortName[i]+'")'); //Set PortName
|
||||
eval('this.'+eventPortName[i]+'.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure
|
||||
eval('this.'+eventPortName[i]+'.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white
|
||||
eval('this.'+eventPortName[i]+'.setColor(new Color(255, 255, 255))'); //Setting Border of the port to white
|
||||
eval('this.addPort(this.'+eventPortName[i]+','+eventPositionX[i]+', '+eventPositionY[i]+')'); //Setting Position of the port
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bpmnEventEmptyStart.prototype.getContextMenu=function(){
|
||||
if(this.id != null){
|
||||
this.workflow.handleContextMenu(this);
|
||||
}
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user