public static function getAll($start = null, $limit = null, $filter = "", $changeCaseTo = CASE_UPPER) { $c = new Criteria("workflow"); $bpmnProjects = array(); $rs = BpmnProjectPeer::doSelectRS($c); $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rs->next()) { $bpmnProjects[] = $changeCaseTo !== CASE_UPPER ? array_change_key_case($rs->getRow(), CASE_LOWER) : $rs->getRow(); } return $bpmnProjects; }
/** * Method to do selects. * * @param Criteria $criteria The Criteria object used to build the SELECT statement. * @param Connection $con * @return array Array of selected Objects * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function doSelect(Criteria $criteria, $con = null) { return BpmnProjectPeer::populateObjects(BpmnProjectPeer::doSelectRS($criteria, $con)); }
public function generateBpmn($processUid, $processUidFieldNameForException, $userUid = "") { $bpmnProjectUid = ""; try { //Verify data $obj = \ProcessPeer::retrieveByPK($processUid); if (is_null($obj)) { throw new \Exception(\G::LoadTranslation("ID_PROCESS_DOES_NOT_EXIST", array($processUidFieldNameForException, $processUid))); } //Verify data $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\BpmnProjectPeer::PRJ_UID); $criteria->add(\BpmnProjectPeer::PRJ_UID, $processUid, \Criteria::EQUAL); $rsCriteria = \BpmnProjectPeer::doSelectRS($criteria); if ($rsCriteria->next()) { throw new \Exception(\G::LoadTranslation("ID_PROJECT_IS_BPMN", array($processUidFieldNameForException, $processUid))); } //Set data $processUidBk = $processUid; list($arrayWorkflowData, $arrayWorkflowFile) = $this->getData($processUid); //Get workflow data $arrayWorkflowData["process"] = $arrayWorkflowData["process"][0]; $arrayWorkflowData["groupwfs"] = array(); //Create WorkflowBpmn $arrayUid = array(); $arrayUid2 = array(); //Process $arrayProcessData = $arrayWorkflowData["process"]; unset( $arrayProcessData["PRO_UID"], $arrayProcessData["PRO_UPDATE_DATE"] ); $arrayProcessData["PRO_PARENT"] = $processUidBk; $arrayProcessData["PRO_TITLE"] = $arrayProcessData["PRO_TITLE"] . " - New version - " . date("M d, H:i:s"); $arrayProcessData["PRO_CREATE_USER"] = ($userUid != "")? $userUid : "00000000000000000000000000000001"; $this->create($arrayProcessData); $processUid = $this->getUid(); $bpmnProjectUid = $processUid; //Task foreach ($arrayWorkflowData["tasks"] as $value) { $arrayTaskData = $value; $taskUidOld = $arrayTaskData["TAS_UID"]; //Add unset($arrayTaskData["TAS_UID"]); $taskUid = $this->addTask($arrayTaskData); //Add new UID $arrayUid["task"][$taskUidOld] = $taskUid; $arrayUid2[] = array( "old_uid" => $taskUidOld, "new_uid" => $taskUid ); } //$arrayWorkflowData["tasks"] = array(); //Route $arrayRouteSecJoin = array(); foreach ($arrayWorkflowData["routes"] as $value) { $arrayRouteData = $value; $arrayRouteData["TAS_UID"] = $arrayUid["task"][$arrayRouteData["TAS_UID"]]; $arrayRouteData["ROU_NEXT_TASK"] = ($arrayRouteData["ROU_NEXT_TASK"] != "-1")? $arrayUid["task"][$arrayRouteData["ROU_NEXT_TASK"]] : $arrayRouteData["ROU_NEXT_TASK"]; if ($arrayRouteData["ROU_TYPE"] != "SEC-JOIN") { //Add $result = $this->addRoute($arrayRouteData["TAS_UID"], $arrayRouteData["ROU_NEXT_TASK"], $arrayRouteData["ROU_TYPE"], $arrayRouteData["ROU_CONDITION"]); } else { $arrayRouteSecJoin[] = $arrayRouteData; } } $arrayWorkflowData["routes"] = array(); //Route SEC-JOIN foreach ($arrayRouteSecJoin as $value) { $arrayRouteData = $value; $result = $this->addRouteSecJoin($arrayRouteData["TAS_UID"], $arrayRouteData["ROU_NEXT_TASK"]); } //Lane foreach ($arrayWorkflowData["lanes"] as $value) { $arrayLaneData = $value; $swiX = (int)($arrayLaneData["SWI_X"]); $swiY = (int)($arrayLaneData["SWI_Y"]); switch ($arrayLaneData["SWI_TYPE"]) { case "TEXT": $swiUid = $this->addText($arrayLaneData["SWI_TEXT"], $swiX, $swiY); break; case "LINE": $direction = (($swiX == 0)? "HORIZONTAL" : "VERTICAL"); $swiUid = $this->addLine(($direction == "HORIZONTAL")? $swiY : $swiX, $direction); break; } } $arrayWorkflowData["lanes"] = array(); //Data $arrayUid2 = array_merge( array( array( "old_uid" => $processUidBk, "new_uid" => $processUid ) ), $arrayUid2 ); list($arrayWorkflowData, $arrayWorkflowFile) = $this->updateDataUidByArrayUid($arrayWorkflowData, $arrayWorkflowFile, $arrayUid2); $arrayWorkflowData["tasks"] = array(); $this->createDataByArrayData($arrayWorkflowData); $this->createDataFileByArrayFile($arrayWorkflowFile); //Return return $bpmnProjectUid; } catch (\Exception $e) { if ($bpmnProjectUid != "") { $this->remove(); } throw $e; } }
/** * Process-Files upgrade * * @param string $projectUid Unique id of Project * * return void */ public function processFilesUpgrade($projectUid = "") { try { //Set variables $conf = new \Configuration(); //Create/Get PROCESS_FILES_CHECKED $arrayProjectUid = array(); $configuration = \ConfigurationPeer::retrieveByPK("PROCESS_FILES_CHECKED", "", "", "", ""); if (is_null($configuration)) { $result = $conf->create(array( "CFG_UID" => "PROCESS_FILES_CHECKED", "OBJ_UID" => "", "CFG_VALUE" => serialize($arrayProjectUid), "PRO_UID" => "", "USR_UID" => "", "APP_UID" => "" )); } else { $arrayProjectUid = unserialize($configuration->getCfgValue()); } //Set variables $arrayPath = array("templates" => PATH_DATA_MAILTEMPLATES, "public" => PATH_DATA_PUBLIC); $flagProjectUid = false; //Query $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\BpmnProjectPeer::PRJ_UID); if ($projectUid != "") { $criteria->add( $criteria->getNewCriterion(\BpmnProjectPeer::PRJ_UID, $arrayProjectUid, \Criteria::NOT_IN)->addAnd( $criteria->getNewCriterion(\BpmnProjectPeer::PRJ_UID, $projectUid, \Criteria::EQUAL)) ); } else { $criteria->add(\BpmnProjectPeer::PRJ_UID, $arrayProjectUid, \Criteria::NOT_IN); } $rsCriteria = \BpmnProjectPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); foreach ($arrayPath as $key => $value) { $path = $key; $dir = $value . $row["PRJ_UID"]; if (is_dir($dir)) { if ($dirh = opendir($dir)) { while (($file = readdir($dirh)) !== false) { if ($file != "" && $file != "." && $file != "..") { $f = $dir . PATH_SEP . $file; if (is_file($f)) { $arrayProcessFilesData = $this->getFileManagerUid($f); if (is_null($arrayProcessFilesData["PRF_UID"])) { rename($dir . PATH_SEP . $file, $dir . PATH_SEP . $file . ".tmp"); $arrayData = array( "prf_path" => $path, "prf_filename" => $file, "prf_content" => "" ); $arrayData = $this->addProcessFilesManager($row["PRJ_UID"], "00000000000000000000000000000001", $arrayData); rename($dir . PATH_SEP . $file . ".tmp", $dir . PATH_SEP . $file); } } } } closedir($dirh); } } } $arrayProjectUid[$row["PRJ_UID"]] = $row["PRJ_UID"]; $flagProjectUid = true; } //Update PROCESS_FILES_CHECKED if ($flagProjectUid) { $result = $conf->update(array( "CFG_UID" => "PROCESS_FILES_CHECKED", "OBJ_UID" => "", "CFG_VALUE" => serialize($arrayProjectUid), "PRO_UID" => "", "USR_UID" => "", "APP_UID" => "" )); } } catch (\Exception $e) { throw $e; } }