diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 737c4639b..fa6dcecee 100644 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -1462,7 +1462,7 @@ class processMap { try { $oGateway = new Gateway ( ); $aData = array(); - $aData['PRO_UID'] = $oData->pro_uid; + $aData['PRO_UID'] = $oData->pro_uid; $aData['GAT_X'] = $oData->position->x; $aData['GAT_Y'] = $oData->position->y; $aData['GAT_TYPE'] = $oData->gat_type; @@ -1472,6 +1472,8 @@ class processMap { $sGat_uid = $oGateway->create($aData); }else{ $aData['GAT_UID'] = $sGat_uid; + $aData['TAS_UID'] = $oData->tas_from; + $aData['GAT_NEXT_TASK'] = $oData->tas_to; $oGateway->update($aData); } $oEncode->uid = $sGat_uid; diff --git a/workflow/engine/methods/bpmn/patterns_Ajax.php b/workflow/engine/methods/bpmn/patterns_Ajax.php index 55e0ee279..f3778c0cb 100755 --- a/workflow/engine/methods/bpmn/patterns_Ajax.php +++ b/workflow/engine/methods/bpmn/patterns_Ajax.php @@ -44,7 +44,6 @@ if($aData['ROU_TYPE'] != 'SEQUENTIAL') $aGatewayFields['GAT_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0]; $aGatewayFields['GAT_TYPE'] = $aData['GAT_TYPE']; $oGateway->update($aGatewayFields); - die; //$sGatewayUID = $oProcessMap->saveNewGateway($aData['PROCESS'], $aData['TASK'][0], $aData['ROU_NEXT_TASK'][0]); //echo $sGatewayUID.'|'; } @@ -54,6 +53,7 @@ else G::LoadClass('tasks'); $oTasks = new Tasks(); $rou_id = 0; +$aFields['GAT_UID'] = $aData['GAT_UID']; switch ($aData['action']) { case 'savePattern': //if ($aData['ROU_TYPE'] != $aData['ROU_TYPE_OLD']) diff --git a/workflow/engine/templates/bpmn/MyWorkflow.js b/workflow/engine/templates/bpmn/MyWorkflow.js index 45cc97a80..9a3637f12 100755 --- a/workflow/engine/templates/bpmn/MyWorkflow.js +++ b/workflow/engine/templates/bpmn/MyWorkflow.js @@ -1174,8 +1174,7 @@ MyWorkflow.prototype.saveShape= function(oNewShape) case 'addGateway': var gat_uid = oNewShape.id var gat_type = oNewShape.type; - var mode = oNewShape.mode; - urlparams = '?action='+actiontype+'&data={"pro_uid":"'+ pro_uid +'","gat_uid":"'+gat_uid +'","gat_type":"'+gat_type+'","position":'+pos+',"mode":"'+mode+'"}'; + urlparams = '?action='+actiontype+'&data={"pro_uid":"'+ pro_uid +'","gat_uid":"'+gat_uid +'","gat_type":"'+gat_type+'","position":'+pos+'}'; break; } //var urlparams = '?action='+actiontype+'&data={"uid":"'+ pro_uid +'","position":'+pos+'}'; @@ -1217,6 +1216,9 @@ MyWorkflow.prototype.saveShape= function(oNewShape) else if(oNewShape.type.match(/Start/) && oNewShape.type.match(/Event/)){ workflow.saveEvents(oNewShape); } + else if(oNewShape.type.match(/Gateway/)){ + workflow.saveGateways(oNewShape); + } } }, failure: function(){ @@ -1450,6 +1452,77 @@ MyWorkflow.prototype.getStartEventConn = function(oShape,sPort,sPortType) return aStartTask; } +/** + * save Gateway depending on the Shape Type + * @Param oGateway Object + * @Param sTaskUID string + * @Author Safan Maredia + */ +MyWorkflow.prototype.saveGateways = function(oGateway){ + var task_uid = new Array(); + var next_task_uid = new Array(); + var urlparams = ''; + var xpos = oGateway.x; + var ypos = oGateway.y; + var pos = '{"x":'+xpos+',"y":'+ypos+'}'; + + var ports = oGateway.getPorts(); + var len =ports.data.length; + //Get all the connection of the shape + var conn = new Array(); + var count1 = 0; + var count2 = 0; + for(var i=0; i<=len; i++){ + 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 != oGateway.type){ + // task_uid[count1] = new Array(); + task_uid = conn[i].data[j].sourcePort.parentNode.id; + count1++; + } + if(conn[i].data[j].targetPort.parentNode.type != oGateway.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=addGateway&data={"pro_uid":"'+ pro_uid +'","tas_from":"'+task_uid+'","tas_to":"'+next_task_uid+'","gat_type":"'+oGateway.type+'","gat_uid":"'+oGateway.id+'","position":'+pos+'}'; + if(urlparams != ''){ + Ext.Ajax.request({ + url: "processes_Ajax.php"+ urlparams, + success: function(response) { + if(response.responseText != '') + { + // workflow.currentSelection.id = response.responseText; + /*if(workflow.currentSelection.type.match(/Inter/) && workflow.currentSelection.type.match(/Event/)){ + workflow.currentSelection.id = response.responseText; + var newObj = workflow.currentSelection; + var preObj = new Array(); + preObj.type = 'bpmnTask'; + preObj.id = task_uid[0]; + newObj.evn_uid = workflow.currentSelection.id; + newObj.task_to = next_task_uid[0]; + this.workflow.saveRoute(preObj,newObj); + }*/ + } + }, + failure: function(){ + Ext.Msg.alert ('Failure'); + } + }); + } +} + /** * save Event depending on the Shape Type * @Param oShape Object @@ -1644,8 +1717,8 @@ MyWorkflow.prototype.saveRoute = function(preObj,newObj) var staskUid = Ext.util.JSON.encode(task_uid); var sNextTaskUid = Ext.util.JSON.encode(next_task_uid); var sGatUid = preObj.id; - var sGatType = preObj.type; - if(staskUid != '') + var sGatType = preObj.type; + if(task_uid.length > 0 && next_task_uid.length > 0) { Ext.Ajax.request({ url: "patterns_Ajax.php", @@ -1684,6 +1757,8 @@ MyWorkflow.prototype.saveRoute = function(preObj,newObj) } }); } + else + workflow.saveGateways(preObj); } MyWorkflow.prototype.deleteRoute = function(oConn,iVal){ diff --git a/workflow/engine/templates/bpmn/bpmnShapes.js b/workflow/engine/templates/bpmn/bpmnShapes.js index 13ec717b0..e6826bcd1 100755 --- a/workflow/engine/templates/bpmn/bpmnShapes.js +++ b/workflow/engine/templates/bpmn/bpmnShapes.js @@ -323,6 +323,12 @@ InputPort.prototype.onDrop = function (port) { newObj = port.parentNode; workflow.saveRoute(newObj,shape); } + //Routing from gateway to task + else if(bpmnType.match(/Gateway/) && port.parentNode.type.match(/Task/)){ + preObj = this.workflow.currentSelection; + newObj = port.parentNode; + this.workflow.saveRoute(preObj,newObj); + } //Routing from task to Intermediate event else if(port.parentNode.type.match(/Inter/) && port.parentNode.type.match(/Event/) && bpmnType.match(/Task/)){ workflow.saveEvents(port.parentNode); @@ -396,6 +402,11 @@ OutputPort.prototype.onDrop = function (port) { preObj = this.workflow.currentSelection; this.workflow.saveRoute(preObj,shape); } + else if(bpmnType.match(/Task/) && port.parentNode.type.match(/Gateway/)){ //Routing from task to gateway + newObj = port.parentNode; + preObj = this.workflow.currentSelection; + this.workflow.saveRoute(newObj,preObj); + } } }; @@ -749,8 +760,8 @@ bpmnTask.prototype.addShapes = function (oStore) { conn.setTarget(newShape.getPort("input2")); conn.setSource(workflow.currentSelection.getPort("output1")); workflow.addFigure(conn); - //newShape.actiontype = 'addGateway'; - //workflow.saveShape(newShape); + newShape.actiontype = 'addGateway'; + workflow.saveShape(newShape); } else if (newShape.type.match(/Start/)) { conn.setTarget(newShape.getPort("output1"));