/** * Tests method getWorkflowsForSystemid with newly created workflow objects */ public function test_getWorkflowsForSystemid_2() { //1 Init settings $strSystemId1 = generateSystemid(); $strSystemId2 = generateSystemid(); $arrWorkflowsClasses = array(array("class" => "class_workflow_workflows_messagesummary", "systemid" => $strSystemId1, "amount" => 5), array("class" => "class_workflow_workflows_messagesummary", "systemid" => $strSystemId2, "amount" => 5), array("class" => "class_workflow_workflows_dbdump", "systemid" => $strSystemId2, "amount" => 23)); //2. Create the workflow objects $arrCreatedWorkflows = array(); foreach ($arrWorkflowsClasses as $arrInfo) { for ($intI = 0; $intI < $arrInfo["amount"]; $intI++) { $objWorkflow = new class_module_workflows_workflow(); $objWorkflow->setStrClass($arrInfo["class"]); $objWorkflow->setStrAffectedSystemid($arrInfo["systemid"]); $objWorkflow->updateObjectToDb(); $arrCreatedWorkflows[] = $objWorkflow; } } $this->flushDBCache(); //3. Assert number of workflows foreach ($arrWorkflowsClasses as $arrInfo) { $arrWorkflows = class_module_workflows_workflow::getWorkflowsForSystemid($arrInfo["systemid"], false, $arrInfo["class"]); $this->assertEquals(count($arrWorkflows), $arrInfo["amount"]); $arrWorkflows = class_module_workflows_workflow::getWorkflowsForSystemid($arrInfo["systemid"], false, array($arrInfo["class"])); $this->assertEquals(count($arrWorkflows), $arrInfo["amount"]); } $arrWorkflows = class_module_workflows_workflow::getWorkflowsForSystemid($strSystemId1, false, array("class_workflow_workflows_messagesummary")); $this->assertEquals(count($arrWorkflows), 5); $arrWorkflows = class_module_workflows_workflow::getWorkflowsForSystemid($strSystemId2, false, array("class_workflow_workflows_dbdump", "class_workflow_workflows_messagesummary")); $this->assertEquals(count($arrWorkflows), 28); //4. Delete created workflow objects /** @var class_module_workflows_workflow $objWorkflow*/ foreach ($arrCreatedWorkflows as $objWorkflow) { $objWorkflow->deleteObjectFromDatabase(); } $this->resetCaches(); }
/** * Runs a single workflow. * @param class_module_workflows_workflow $objOneWorkflow */ public function runSingleWorkflow($objOneWorkflow) { $objHandler = $objOneWorkflow->getObjWorkflowHandler(); if ($objOneWorkflow->getIntState() != class_module_workflows_workflow::$INT_STATE_SCHEDULED) { return; } //trigger the workflow class_logger::getInstance(self::STR_LOGFILE)->addLogRow("executing workflow " . $objOneWorkflow->getSystemid(), class_logger::$levelInfo); if ($objHandler->execute()) { //handler executed successfully. shift to state 'executed' $objOneWorkflow->setIntState(class_module_workflows_workflow::$INT_STATE_EXECUTED); class_logger::getInstance(self::STR_LOGFILE)->addLogRow(" execution finished, new state: executed", class_logger::$levelInfo); } else { //handler failed to execute. reschedule. $objHandler->schedule(); $objOneWorkflow->setIntState(class_module_workflows_workflow::$INT_STATE_SCHEDULED); class_logger::getInstance(self::STR_LOGFILE)->addLogRow(" execution finished, new state: scheduled", class_logger::$levelInfo); } $objOneWorkflow->setIntRuns($objOneWorkflow->getIntRuns() + 1); $objOneWorkflow->updateObjectToDb(); }
/** * @return string * @permissions right1 */ protected function actionStartInstance() { $strReturn = ""; $objHandler = new class_module_workflows_handler($this->getSystemid()); $objWorkflow = new class_module_workflows_workflow(); $objWorkflow->setStrClass($objHandler->getStrHandlerClass()); $objWorkflow->setStrAffectedSystemid($this->getParam("instance_systemid")); $objWorkflow->setStrResponsible($this->getParam("instance_responsible_id")); $objWorkflow->updateObjectToDb(); $this->adminReload(getLinkAdminHref($this->getArrModule("modul"), "list")); return $strReturn; }