/** * 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(); }
/** * Shows technical details of a workflow-instance * * @return string * @permissions edit */ protected function actionShowDetails() { $strReturn = ""; $objWorkflow = new class_module_workflows_workflow($this->getSystemid()); $strReturn .= $this->objToolkit->formHeadline($this->getLang("workflow_general")); $arrRows = array(); $arrRows[] = array($this->getLang("workflow_class"), $objWorkflow->getStrClass()); $arrRows[] = array($this->getLang("workflow_systemid"), $objWorkflow->getStrAffectedSystemid()); $arrRows[] = array($this->getLang("workflow_trigger"), dateToString($objWorkflow->getObjTriggerdate())); $arrRows[] = array($this->getLang("workflow_runs"), $objWorkflow->getIntRuns()); $arrRows[] = array($this->getLang("workflow_status"), $this->getLang("workflow_status_" . $objWorkflow->getIntState())); $strResponsible = ""; foreach (explode(",", $objWorkflow->getStrResponsible()) as $strOneId) { if (validateSystemid($strOneId)) { if ($strResponsible != "") { $strResponsible .= ", "; } $objUser = new class_module_user_user($strOneId, false); if ($objUser->getStrUsername() != "") { $strResponsible .= $objUser->getStrUsername(); } else { $objGroup = new class_module_user_group($strOneId); $strResponsible .= $objGroup->getStrName(); } } } $arrRows[] = array($this->getLang("workflow_responsible"), $strResponsible); $strCreator = ""; if (validateSystemid($objWorkflow->getStrOwner())) { $objUser = new class_module_user_user($objWorkflow->getStrOwner(), false); $strCreator .= $objUser->getStrUsername(); } $arrRows[] = array($this->getLang("workflow_owner"), $strCreator); $strReturn .= $this->objToolkit->dataTable(null, $arrRows); $strReturn .= $this->objToolkit->formHeadline($this->getLang("workflow_params")); $arrRows = array(); $arrRows[] = array($this->getLang("workflow_int1"), $objWorkflow->getIntInt1()); $arrRows[] = array($this->getLang("workflow_int2"), $objWorkflow->getIntInt2()); $arrRows[] = array($this->getLang("workflow_char1"), $objWorkflow->getStrChar1()); $arrRows[] = array($this->getLang("workflow_char2"), $objWorkflow->getStrChar2()); $arrRows[] = array($this->getLang("workflow_date1"), $objWorkflow->getLongDate1()); $arrRows[] = array($this->getLang("workflow_date2"), $objWorkflow->getLongDate2()); $arrRows[] = array($this->getLang("workflow_text"), $objWorkflow->getStrText()); $arrRows[] = array($this->getLang("workflow_text2"), $objWorkflow->getStrText2()); $arrRows[] = array($this->getLang("workflow_text3"), $objWorkflow->getStrText3()); $strReturn .= $this->objToolkit->dataTable(null, $arrRows); $strReturn .= $this->objToolkit->formHeader(class_link::getLinkAdminHref($this->getArrModule("modul"), "list")); $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("commons_back")); $strReturn .= $this->objToolkit->formClose(); return $strReturn; }