/**
  * Triggers the workflows scheduled for running.
  */
 public function runWorkflows()
 {
     $arrWorkflows = class_module_workflows_workflow::getWorkflowsByType(class_module_workflows_workflow::$INT_STATE_SCHEDULED);
     class_logger::getInstance(self::STR_LOGFILE)->addLogRow("running workflows, count: " . count($arrWorkflows), class_logger::$levelInfo);
     foreach ($arrWorkflows as $objOneWorkflow) {
         //lock the workflow
         $objLockmanager = new class_lockmanager($objOneWorkflow->getSystemid());
         if ($objLockmanager->isLocked()) {
             class_logger::getInstance(self::STR_LOGFILE)->addLogRow("workflow " . $objOneWorkflow->getSystemid() . " is locked, can't be scheduled", class_logger::$levelWarning);
             continue;
         }
         $objLockmanager->lockRecord();
         /**
          * @var interface_workflows_handler
          */
         $objHandler = $objOneWorkflow->getObjWorkflowHandler();
         //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();
         $objLockmanager->unlockRecord(true);
     }
     class_logger::getInstance(self::STR_LOGFILE)->addLogRow("running workflows finished", class_logger::$levelInfo);
 }