/**
  * 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;
 }