/** * @param ByTimeWorkflowInQueue $byTimeWorkflowInQueue * @param RedBeanModel $model * @throws FailedToSaveModelException */ protected function processByTimeWorkflowInQueue(ByTimeWorkflowInQueue $byTimeWorkflowInQueue, RedBeanModel $model) { $workflow = SavedWorkflowToWorkflowAdapter::makeWorkflowBySavedWorkflow($byTimeWorkflowInQueue->savedWorkflow); if (!$workflow->getIsActive()) { return; } $workflow->setTimeTriggerRequireChangeToProcessToFalse(); if (WorkflowTriggersUtil::areTriggersTrueOnByTimeWorkflowQueueJob($workflow, $model)) { WorkflowActionsUtil::processOnByTimeWorkflowInQueueJob($workflow, $model, Yii::app()->user->userModel); WorkflowEmailMessagesUtil::processAfterSave($workflow, $model, Yii::app()->user->userModel); if ($model->isModified()) { $saved = $model->save(); if (!$saved) { throw new FailedToSaveModelException(); } } } }
/** * @depends testProcessAfterSave */ public function testProcessOnByTimeWorkflowInQueueJob() { $model = WorkflowTestHelper::createWorkflowModelTestItem('Green', '514'); $workflow = new Workflow(); $workflow->setDescription('aDescription'); $workflow->setIsActive(true); $workflow->setOrder(5); $workflow->setModuleClassName('WorkflowsTestModule'); $workflow->setName('myFirstWorkflow'); $workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING); $workflow->setType(Workflow::TYPE_ON_SAVE); $workflow->setTriggersStructure('1'); $workflow->setIsActive(true); //Add action $action = new ActionForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $action->type = ActionForWorkflowForm::TYPE_UPDATE_SELF; $action->relation = 'hasOne'; $attributes = array('string' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason')); $action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes)); $workflow->addAction($action); WorkflowActionsUtil::processOnByTimeWorkflowInQueueJob($workflow, $model, Yii::app()->user->userModel); $this->assertEquals('jason', $model->string); }