diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index a4d1b4f94..f0cf013d7 100644 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -6457,7 +6457,7 @@ function saveExtddEvents($oData) if(preg_match("/Inter/", $aData['EVN_TYPE'])){ $aData['EVN_RELATED_TO'] = 'MULTIPLE'; } - if(preg_match("/Start/", $aData['EVN_TYPE']) || preg_match("/Inter/", $aData['EVN_TYPE'])){ + if(preg_match("/Start/", $aData['EVN_TYPE'])){ $aData['EVN_RELATED_TO'] = 'SINGLE'; } if($mode == 'ddEvent'){ @@ -6482,7 +6482,14 @@ function saveExtEvents($oData) $oEvent = new Event(); $sEvn_uid = ''; $sEvn_type = $oData->evn_type; - $aData = array(); + $output = 0; + $aDataEvent = array(); + $aDataTask = array(); + $aDataEvent['EVN_UID'] = $oData->evn_uid; + $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; + $aDataEvent['EVN_TYPE'] = $oData->evn_type; + + if(preg_match("/Start/", $sEvn_type)){ $aDataTask['TAS_UID'] = $oData->tas_uid; $aDataTask['TAS_START'] = $oData->tas_start; @@ -6490,13 +6497,15 @@ function saveExtEvents($oData) $aDataTask['TAS_EVN_UID'] = $oData->evn_uid; $oTask->update($aDataTask); - $aDataEvent['EVN_UID'] = $oData->evn_uid; $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_uid; - $aDataEvent['EVN_TYPE'] = $oData->evn_type; - $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; $output = $oEvent->update($aDataEvent); - return $output; } + else if(preg_match("/Inter/", $sEvn_type)){ + $aDataEvent['EVN_TAS_UID_FROM'] = $oData->tas_from; + $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_to; + $output = $oEvent->update($aDataEvent); + } + return $output; } } diff --git a/workflow/engine/methods/bpmn/openProcess.php b/workflow/engine/methods/bpmn/openProcess.php index 6b14fbf9d..231b5394d 100755 --- a/workflow/engine/methods/bpmn/openProcess.php +++ b/workflow/engine/methods/bpmn/openProcess.php @@ -88,20 +88,41 @@ $countTasks = $countTasks + 1; } } - //for Events + $lanes = $oProcess->createLanesNewPM($oData->lanes); + $fields = $oProcess->createTransitionsPM($oData->tasks,$oData->routes,$arrayEvents,$count,$arrayRoutes,$countRoutes); + + //Get Standalone Events and routes + $countEvent = count($fields['EVENTS']); + $countRoutes = count($fields['TRANSITION']); foreach($oData->event as $id => $value) { if($value['TAS_UID'] == '' && $value['EVN_TAS_UID_FROM'] == '' && $value['EVN_TAS_UID_TO'] == ''){ - $arrayEvents[$count]['0'] = $value['EVN_UID']; - $arrayEvents[$count]['1'] = $value['EVN_TYPE']; - $arrayEvents[$count]['2'] = $value['EVN_POSX']; - $arrayEvents[$count]['3'] = $value['EVN_POSY']; - $arrayEvents[$count]['4'] = $value['TAS_UID']; - $count = $count+ 1; + $fields['EVENTS'][$countEvent]['0'] = $value['EVN_UID']; + $fields['EVENTS'][$countEvent]['1'] = $value['EVN_TYPE']; + $fields['EVENTS'][$countEvent]['2'] = $value['EVN_POSX']; + $fields['EVENTS'][$countEvent]['3'] = $value['EVN_POSY']; + $fields['EVENTS'][$countEvent]['4'] = $value['TAS_UID']; + $countEvent = $countEvent + 1; + } + else if($value['TAS_UID'] == '' && $value['EVN_TAS_UID_TO'] != ''){ //Check for Intermediate Events + $evn_uid = $value['EVN_UID']; + $idTask = $value['EVN_TAS_UID_TO']; + + $fields['EVENTS'][$countEvent]['0'] = $value['EVN_UID']; + $fields['EVENTS'][$countEvent]['1'] = $value['EVN_TYPE']; + $fields['EVENTS'][$countEvent]['2'] = $value['EVN_POSX']; + $fields['EVENTS'][$countEvent]['3'] = $value['EVN_POSY']; + $fields['EVENTS'][$countEvent]['4'] = $value['TAS_UID']; + $countEvent = $countEvent + 1; + + $fields['TRANSITION'][$countRoutes]['0']= G::generateUniqueID(); + $fields['TRANSITION'][$countRoutes]['1']= $evn_uid; + $fields['TRANSITION'][$countRoutes]['2']= $idTask; + $fields['TRANSITION'][$countRoutes]['3']= '2'; + $fields['TRANSITION'][$countRoutes]['4']= '1'; + $countRoutes = $countRoutes + 1; } } - $lanes = $oProcess->createLanesNewPM($oData->lanes); - $fields = $oProcess->createTransitionsPM($oData->tasks,$oData->routes,$arrayEvents,$count,$arrayRoutes,$countRoutes); //Get all the standalone Gateway $countGateway = count($fields['GATEWAYS']); @@ -112,7 +133,7 @@ $fields['GATEWAYS'][$countGateway]['1'] = $value['GAT_TYPE']; $fields['GATEWAYS'][$countGateway]['2'] = $value['GAT_X']; $fields['GATEWAYS'][$countGateway]['3'] = $value['GAT_Y']; - $countGateway+=1; + $countGateway += 1; } } //$subProcess = $oProcess->createSubProcessesPM($oData->subProcess); diff --git a/workflow/engine/templates/bpmn/MyWorkflow.js b/workflow/engine/templates/bpmn/MyWorkflow.js index 5f16bdae0..6079baa27 100755 --- a/workflow/engine/templates/bpmn/MyWorkflow.js +++ b/workflow/engine/templates/bpmn/MyWorkflow.js @@ -1069,7 +1069,7 @@ MyWorkflow.prototype.savePosition= function(oShape) var width = oShape.width; var height = oShape.height; var cordinates = '{"x":'+width+',"y":'+height+'}'; - var urlparams; + var urlparams = ''; switch(actiontype) { case 'saveTaskPosition': @@ -1091,15 +1091,17 @@ MyWorkflow.prototype.savePosition= function(oShape) urlparams = '?action='+actiontype+'&data={"uid":"'+ shapeId +'","position":'+cordinates+'}'; break; } - Ext.Ajax.request({ - url: "processes_Ajax.php"+ urlparams, - success: function(response) { - //Ext.Msg.alert (response.responseText); - }, - failure: function(){ - //Ext.Msg.alert ('Failure'); - } - }); + if(urlparams != ''){ + Ext.Ajax.request({ + url: "processes_Ajax.php"+ urlparams, + success: function(response) { + //Ext.Msg.alert (response.responseText); + }, + failure: function(){ + //Ext.Msg.alert ('Failure'); + } + }); + } } /** * Saving Shape Asychronously @@ -1197,7 +1199,7 @@ MyWorkflow.prototype.saveShape= function(oNewShape) { var preSelectedFigure = this.workflow.preSelectedObj; if(preSelectedFigure.type.match(/Start/) && preSelectedFigure.type.match(/Event/)) - this.workflow.saveEvents(preSelectedFigure,oNewShape); + this.workflow.saveEvents(preSelectedFigure,oNewShape.id); if(preSelectedFigure.type.match(/Task/)) this.workflow.saveRoute(preSelectedFigure,oNewShape); @@ -1459,20 +1461,16 @@ MyWorkflow.prototype.saveEvents = function(oEvent,sTaskUID) { var task_uid = new Array(); var next_task_uid = new Array(); + var urlparams = ''; if(oEvent.type.match(/Start/)) { var tas_start = 'TRUE'; - var urlparams = '?action=saveEvents&data={"tas_uid":"'+sTaskUID+'","tas_start":"'+tas_start+'","evn_type":"'+oEvent.type+'","evn_uid":"'+oEvent.id+'"}'; + urlparams = '?action=saveEvents&data={"tas_uid":"'+sTaskUID+'","tas_start":"'+tas_start+'","evn_type":"'+oEvent.type+'","evn_uid":"'+oEvent.id+'"}'; } - /*else if(oEvent.type.match(/Start/) && (oEvent.type.match(/Message/) || oEvent.type.match(/Timer/)) ) - { - urlparams = '?action=saveEvents&data={"uid":"'+ pro_uid +'","tas_uid":"'+sTaskUID+'","tas_type":"'+oEvent.type+'"}'; - }*/ else if(oEvent.type.match(/Inter/)) { var ports = oEvent.getPorts(); var len =ports.data.length; - //Get all the connection of the shape var conn = new Array(); var count1 = 0; @@ -1481,33 +1479,27 @@ MyWorkflow.prototype.saveEvents = function(oEvent,sTaskUID) if(typeof ports.data[i] === 'object') conn[i] = ports.data[i].getConnections(); } - //Get ALL the connections for the specified PORT - for(i = 0; i< conn.length ; i++) - { - if(typeof conn[i] != 'undefined') - for(var j = 0; j < conn[i].data.length ; j++) - { - if(typeof conn[i].data[j] != 'undefined') - { - if(conn[i].data[j].sourcePort.parentNode.type != oEvent.type){ - // task_uid[count1] = new Array(); - task_uid[count1] = conn[i].data[j].sourcePort.parentNode.id; - count1++; - } - if(conn[i].data[j].targetPort.parentNode.type != oEvent.type){ - // task_uid[count2] = new Array(); - next_task_uid[count2] = conn[i].data[j].targetPort.parentNode.id; - count2++; - } - - } - } - } - - var staskUid = Ext.util.JSON.encode(task_uid); - var sNextTaskUid = Ext.util.JSON.encode(next_task_uid); - urlparams = '?action=addEvent&data={"uid":"'+ pro_uid +'","tas_from":"'+staskUid+'","tas_to":"'+sNextTaskUid+'","tas_type":"'+oEvent.type+'"}'; + for(i = 0; i< conn.length ; i++){ + if(typeof conn[i] != 'undefined') + for(var j = 0; j < conn[i].data.length ; j++){ + if(typeof conn[i].data[j] != 'undefined'){ + if(conn[i].data[j].sourcePort.parentNode.type != oEvent.type){ + // task_uid[count1] = new Array(); + task_uid = conn[i].data[j].sourcePort.parentNode.id; + count1++; + } + if(conn[i].data[j].targetPort.parentNode.type != oEvent.type){ + // task_uid[count2] = new Array(); + next_task_uid = conn[i].data[j].targetPort.parentNode.id; + //count2++; + } + } + } + } + // var staskUid = Ext.util.JSON.encode(task_uid); + // var sNextTaskUid = Ext.util.JSON.encode(next_task_uid); + urlparams = '?action=saveEvents&data={"tas_from":"'+task_uid+'","tas_to":"'+next_task_uid+'","evn_type":"'+oEvent.type+'","evn_uid":"'+oEvent.id+'"}'; } if(urlparams != ''){