diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 48c4af2e8..9d921644d 100644 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -1396,6 +1396,27 @@ class processMap { } } + /* + * Delete a gateway + * @param string $sGatewayUID + * @return boolean + */ + + function deleteGateway($sGatewayUID = '') { + try { + $oGateway = new Gateway ( ); + if($oGateway->gatewayExists($sGatewayUID)) + { + $oTasks = new Tasks ( ); + $oTasks->deleteRoutesusingGateway($sGatewayUID); + $res = $oGateway->remove($sGatewayUID); + } + return; + } catch (Exception $oError) { + throw ($oError); + } + } + /* * Add a new guide * @param string $sProcessUID diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 0eb60c0cf..cc949ee45 100644 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -52,6 +52,7 @@ require_once 'classes/model/CaseScheduler.php'; G::LoadClass('tasks'); G::LoadClass('reportTables'); +G::LoadClass('processMap'); G::LoadThirdParty('pear/json','class.json'); class Processes { @@ -3010,9 +3011,33 @@ class Processes { $this->removeProcessRows ($oData->process['PRO_UID'] ); $this->createProcessRow($oData->process); $this->createTaskRows($oData->tasks); - $this->createRouteRows($oData->routes); + $aRoutesUID = $this->createRouteRows($oData->routes); $this->createLaneRows($oData->lanes); - $this->createGatewayRows($oData->gateways); + + if($oData->gateways == ''){ + //Adding gateway information while importing processes from older version + //Making compatible with old export process + $oRoutes = $oData->routes; + for($i=0;$isaveNewGateway($oData->process['PRO_UID'], $sTaskUID, $sNextTask); + + //Updating Route table (GAT_UID column) after inserting Gateway data into GATEWAY table + $aData = array('ROU_UID'=>$routeUID,'GAT_UID'=>$sGatewayUID); + $oRoute = new Route(); + $oRoute->update($aData); + } + } + } + else + $this->createGatewayRows($oData->gateways); + $this->createDynaformRows($oData->dynaforms); $this->createInputRows($oData->inputs); $this->createOutputRows($oData->outputs); diff --git a/workflow/engine/classes/class.tasks.php b/workflow/engine/classes/class.tasks.php index 06a4ce65d..fef07946e 100644 --- a/workflow/engine/classes/class.tasks.php +++ b/workflow/engine/classes/class.tasks.php @@ -171,9 +171,9 @@ class Tasks //unset ($row['ROU_UID']); if($oRoute->routeExists($row['ROU_UID'])) $oRoute->remove($row['ROU_UID']); - $res = $oRoute->create($row); + $routeID[] = $oRoute->create($row); } - return; + return $routeID; } /** @@ -338,7 +338,7 @@ class Tasks $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oGateway = new Gateway(); - $aGateways[] = $oGateway->Load($aRow['GAT_UID']); + $aGateways[] = $oGateway->load($aRow['GAT_UID']); $oDataset->next(); } return $aGateways; @@ -394,6 +394,29 @@ class Tasks } } + /* + * Delete a route using gatewayUID + * @param string $sGatewayUID + * @return boolean + */ + public function deleteRoutesusingGateway($sGatewayUID = '') + { + try { + $oCriteria = new Criteria('workflow'); + //$oCriteria->addSelectColumn('ROU_UID'); + $oCriteria->add(RoutePeer::GAT_UID, $sGatewayUID); + RoutePeer::doDelete($oCriteria); + return true; +// $oDataset = RoutePeer::doSelectRS($oCriteria); +// $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); +// $oDataset->next(); +// $aRow = $oDataset->getRow(); + } + catch (Exception $oError) { + throw($oError); + } + } + /** * Assign a user to task * @param string $sTaskUID diff --git a/workflow/engine/methods/bpmn/patterns_Ajax.php b/workflow/engine/methods/bpmn/patterns_Ajax.php index bbcdb8c53..706af5a69 100755 --- a/workflow/engine/methods/bpmn/patterns_Ajax.php +++ b/workflow/engine/methods/bpmn/patterns_Ajax.php @@ -34,8 +34,8 @@ if(isset($_POST['mode']) && $_POST['mode'] != '') //Saving Gateway details into Gateway table $oProcessMap = new processMap(); -$sGatewayUID = $oProcessMap->saveNewGateway($aData['PROCESS'], $aData['TASK'][0]); - +$sGatewayUID = $oProcessMap->saveNewGateway($aData['PROCESS'], $aData['TASK'][0], $aData['ROU_NEXT_TASK'][0]); +echo $sGatewayUID.'|'; G::LoadClass('tasks'); $oTasks = new Tasks(); diff --git a/workflow/engine/methods/bpmn/processes_Ajax.php b/workflow/engine/methods/bpmn/processes_Ajax.php index 9a6b4fe5d..97b59ac07 100755 --- a/workflow/engine/methods/bpmn/processes_Ajax.php +++ b/workflow/engine/methods/bpmn/processes_Ajax.php @@ -73,6 +73,10 @@ if ( isset ($_REQUEST['action']) ) { $sOutput = $oProcessMap->deleteTask($oData->tas_uid); echo $sOutput; break; + case 'deleteGateway': + $sOutput = $oProcessMap->deleteGateway($oData->gat_uid); + echo $sOutput; + break; case 'updateTaskName': $aTask['TAS_UID'] = $oData->uid; $aTask['TAS_TITLE'] = $oData->label; diff --git a/workflow/engine/templates/bpmn/MyWorkflow.js b/workflow/engine/templates/bpmn/MyWorkflow.js index b9b670c90..9bfdae2b8 100755 --- a/workflow/engine/templates/bpmn/MyWorkflow.js +++ b/workflow/engine/templates/bpmn/MyWorkflow.js @@ -1706,6 +1706,11 @@ MyWorkflow.prototype.deleteShape= function(oShape) shapeName = 'End Event'; oShape.workflow.getCommandStack().execute(new CommandDelete(oShape.workflow.getCurrentSelection())); break; + case 'deleteGateway': + shapeName = 'Gateway'; + urlparams = '?action='+actiontype+'&data={"pro_uid":"'+ pro_uid +'","gat_uid":"'+shapeId+'"}'; + this.urlparameter = urlparams; + break; } //Ext.MessageBox.confirm('Confirm', 'Are you sure you want to delete the '+ shapeName,this.showResult); @@ -1986,8 +1991,12 @@ MyWorkflow.prototype.saveRoute = function(preObj,newObj) success: function(response) { if(response.responseText != 0){ if(typeof newObj.conn != 'undefined'){ - newObj.conn.html.id = response.responseText; - newObj.conn.id = response.responseText; + var resp = response.responseText.split("|"); //resp[0] => gateway UID , resp[1] => route UID + newObj.conn.html.id = resp[1]; + newObj.conn.id = resp[1]; + + //replacing old gateway UID with response UID + preObj.id = resp[0]; } } }, @@ -2090,6 +2099,7 @@ MyWorkflow.prototype.getDeleteCriteria = function() var currentObj = workflow.currentSelection; var ports = currentObj.getPorts(); var len =ports.data.length; + //Get all the connection of the shape var conn = new Array(); @@ -2115,8 +2125,15 @@ MyWorkflow.prototype.getDeleteCriteria = function() if(typeof route != 'undefined') workflow.deleteRoute(route,1); break; -} + } workflow.deleteShape(workflow.currentSelection); + + if(shape.match(/Gateway/)) + { + workflow.currentSelection.actiontype = 'deleteGateway'; + workflow.deleteShape(workflow.currentSelection); + } + } /** diff --git a/workflow/engine/templates/bpmn/bpmnShapes.js b/workflow/engine/templates/bpmn/bpmnShapes.js index df60b7531..26566779c 100755 --- a/workflow/engine/templates/bpmn/bpmnShapes.js +++ b/workflow/engine/templates/bpmn/bpmnShapes.js @@ -1,13 +1,13 @@ -bpmnTask = function (_30ab) { +bpmnTask = function () { VectorFigure.call(this); - if(typeof _30ab.boundaryEvent != 'undefined' && _30ab.boundaryEvent == true) + if(typeof workflow.boundaryEvent != 'undefined' && workflow.boundaryEvent == true) { - this.boundaryEvent = _30ab.boundaryEvent; + this.boundaryEvent = workflow.boundaryEvent; } //Getting width and height from DB - if(typeof _30ab.task_width != 'undefined' && typeof _30ab.task_height != 'undefined') - this.setDimension(_30ab.task_width, _30ab.task_height); + if(typeof workflow.task_width != 'undefined' && typeof workflow.task_height != 'undefined') + this.setDimension(workflow.task_width, workflow.task_height); else this.setDimension(165, 40); @@ -16,7 +16,7 @@ bpmnTask = function (_30ab) { this.setDimension(workflow.zoomTaskWidth, workflow.zoomTaskHeight); - this.taskName = _30ab.taskName; //It will set the Default Task Name with appropriate count While dragging a task on the canvas + this.taskName = workflow.taskName; //It will set the Default Task Name with appropriate count While dragging a task on the canvas }; bpmnTask.prototype = new VectorFigure; @@ -260,9 +260,9 @@ this.workflow.onKeyDown(_3e0e,ctrl); } }; -bpmnTask.prototype.setWorkflow = function (_40c5) { - VectorFigure.prototype.setWorkflow.call(this, _40c5); - if (_40c5 != null) { +bpmnTask.prototype.setWorkflow = function () { + VectorFigure.prototype.setWorkflow.call(this, workflow); + if (workflow != null) { /*Adding Port to the Task After dragging Task on the Canvas *Ports will be invisibe After Drag and Drop, But It will be created */ @@ -273,7 +273,7 @@ bpmnTask.prototype.setWorkflow = function (_40c5) { for (var i = 0; i < TaskPortName.length; i++) { eval('this.' + TaskPortName[i] + ' = new ' + TaskPortType[i] + '()'); //Create New Port - eval('this.' + TaskPortName[i] + '.setWorkflow(_40c5)'); //Add port to the workflow + eval('this.' + TaskPortName[i] + '.setWorkflow()'); //Add port to the workflow eval('this.' + TaskPortName[i] + '.setName("' + TaskPortName[i] + '")'); //Set PortName eval('this.' + TaskPortName[i] + '.setZOrder(-1)'); //Set Z-Order of the port to -1. It will be below all the figure eval('this.' + TaskPortName[i] + '.setBackgroundColor(new Color(255, 255, 255))'); //Setting Background of the port to white @@ -775,11 +775,11 @@ bpmnTask.prototype.addShapes = function (_3896) { if (_3896.newShapeName == 'bpmnTask' && shape.match(/Event/)) { - xOffset = _3896.workflow.currentSelection.getX() - 40; //Setting new offset value when currentselection is not Task i.e deriving task from events + xOffset = _3896.workflow.currentSelection.getX() - 67; //Setting new offset value when currentselection is not Task i.e deriving task from events } if (_3896.newShapeName == 'bpmnTask' && shape.match(/Gateway/)) { - xOffset = _3896.workflow.currentSelection.getX() - 35; //Setting new offset value when currentselection is not Task i.e deriving task from gateways + xOffset = _3896.workflow.currentSelection.getX() - 62; //Setting new offset value when currentselection is not Task i.e deriving task from gateways } if (_3896.newShapeName.match(/Event/)) { diff --git a/workflow/engine/templates/bpmn/processmap.js b/workflow/engine/templates/bpmn/processmap.js index 00e55cef3..38aa2b406 100755 --- a/workflow/engine/templates/bpmn/processmap.js +++ b/workflow/engine/templates/bpmn/processmap.js @@ -593,7 +593,7 @@ Ext.onReady ( function() { _4562.workflow.taskName = shapes.tasks[k][1]; workflow.task_width = shapes.tasks[k][4]; workflow.task_height = shapes.tasks[k][5]; - NewShape = eval("new bpmnTask(_4562.workflow)"); + NewShape = eval("new bpmnTask()"); NewShape.x = shapes.tasks[k][2]; NewShape.y = shapes.tasks[k][3]; NewShape.taskName = shapes.tasks[k][1];