/**
  * @param WorkflowWizardForm $formModel
  */
 protected function setCommonAttributes(WorkflowWizardForm $formModel)
 {
     $formModel->id = $this->workflow->getId();
     $formModel->isActive = $this->workflow->getIsActive();
     $formModel->description = $this->workflow->getDescription();
     $formModel->moduleClassName = $this->workflow->getModuleClassName();
     $formModel->name = $this->workflow->getName();
     $formModel->triggerOn = $this->workflow->getTriggerOn();
     $formModel->type = $this->workflow->getType();
     $formModel->triggersStructure = $this->workflow->getTriggersStructure();
     $formModel->timeTriggerAttribute = $this->workflow->getTimeTriggerAttribute();
     if ($this->workflow->isNew()) {
         $formModel->setIsNew();
     }
     $formModel->timeTrigger = $this->workflow->getTimeTrigger();
     $formModel->triggers = $this->workflow->getTriggers();
     $formModel->actions = $this->workflow->getActions();
     $formModel->emailMessages = $this->workflow->getEmailMessages();
 }
 /**
  * @param Workflow $workflow
  * @param EmailMessageForWorkflowForm $emailMessage
  * @param RedBeanModel $model
  * @param User $triggeredByUser
  * @throws FailedToSaveModelException
  */
 protected static function processEmailMessageAfterSave(Workflow $workflow, EmailMessageForWorkflowForm $emailMessage, RedBeanModel $model, User $triggeredByUser)
 {
     if ($emailMessage->sendAfterDurationInterval == 0) {
         $helper = new WorkflowEmailMessageProcessingHelper($emailMessage, $model, $triggeredByUser);
         $helper->process();
     } else {
         $emailMessageData = SavedWorkflowToWorkflowAdapter::makeArrayFromEmailMessageForWorkflowFormAttributesData(array($emailMessage));
         $workflowMessageInQueue = new WorkflowMessageInQueue();
         $workflowMessageInQueue->processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime($emailMessage->resolveNewTimeStampForDuration(time()));
         $workflowMessageInQueue->savedWorkflow = SavedWorkflow::getById((int) $workflow->getId());
         $workflowMessageInQueue->modelClassName = get_class($model);
         $workflowMessageInQueue->modelItem = $model;
         $workflowMessageInQueue->serializedData = serialize($emailMessageData);
         $workflowMessageInQueue->triggeredByUser = $triggeredByUser;
         $saved = $workflowMessageInQueue->save();
         if (!$saved) {
             throw new FailedToSaveModelException();
         }
     }
 }
Esempio n. 3
0
 /**
  * @depends testGetWorkflowSupportedModulesClassNamesCurrentUserHasAccessTo
  */
 public function testSetAndGetWorkflow()
 {
     $timeTrigger = new TimeTriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $action = new ActionForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $emailMessage = new EmailMessageForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $workflow = new Workflow();
     $workflow->setModuleClassName('SomeModule');
     $workflow->setDescription('a description');
     $workflow->setTriggersStructure('1 AND 2');
     $workflow->setTimeTriggerAttribute('something');
     $workflow->setId(5);
     $workflow->setIsActive(true);
     $workflow->setOrder(6);
     $workflow->setName('my workflow rule');
     $workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW);
     $workflow->setType(Workflow::TYPE_ON_SAVE);
     $workflow->setTimeTrigger($timeTrigger);
     $workflow->addTrigger($trigger);
     $workflow->addAction($action);
     $workflow->addEmailMessage($emailMessage);
     $this->assertEquals('SomeModule', $workflow->getModuleClassName());
     $this->assertEquals('a description', $workflow->getDescription());
     $this->assertEquals('1 AND 2', $workflow->getTriggersStructure());
     $this->assertEquals('something', $workflow->getTimeTriggerAttribute());
     $this->assertEquals(5, $workflow->getId());
     $this->assertTrue($workflow->getIsActive());
     $this->assertEquals(6, $workflow->getOrder());
     $this->assertEquals('my workflow rule', $workflow->getName());
     $this->assertEquals(Workflow::TRIGGER_ON_NEW, $workflow->getTriggerOn());
     $this->assertEquals(Workflow::TYPE_ON_SAVE, $workflow->getType());
     $this->assertEquals($timeTrigger, $workflow->getTimeTrigger());
     $actions = $workflow->getActions();
     $this->assertEquals($action, $actions[0]);
     $this->assertCount(1, $actions);
     $emailMessages = $workflow->getEmailMessages();
     $this->assertEquals($emailMessage, $emailMessages[0]);
     $this->assertCount(1, $emailMessages);
     $triggers = $workflow->getTriggers();
     $this->assertEquals($trigger, $triggers[0]);
     $this->assertCount(1, $triggers);
     $workflow->removeAllActions();
     $actions = $workflow->getActions();
     $this->assertCount(0, $actions);
     $workflow->removeAllEmailMessages();
     $emailMessages = $workflow->getEmailMessages();
     $this->assertCount(0, $emailMessages);
     $workflow->removeAllTriggers();
     $triggers = $workflow->getTriggers();
     $this->assertCount(0, $triggers);
     $workflow->removeTimeTrigger();
     $this->assertNull($workflow->getTimeTrigger());
 }
 /**
  * Get the transitions of the workflow
  *
  * @param Workflow $workflow The workflow
  *
  * @return Array of Transition
  */
 public function getTransitions(Workflow $workflow)
 {
     $transitions = array();
     foreach ($this->getDao()->searchByWorkflow($workflow->getId()) as $row) {
         $transitions[] = $this->getInstanceFromRow($row, $workflow);
     }
     return $transitions;
 }
 /**
  * @param Workflow $workflow
  * @param RedBeanModel $model
  * @throws FailedToSaveModelException
  */
 protected static function processToByTimeWorkflowInQueue(Workflow $workflow, RedBeanModel $model)
 {
     assert('$workflow->getId() > 0');
     try {
         $byTimeWorkflowInQueue = ByTimeWorkflowInQueue::resolveByWorkflowIdAndModel(SavedWorkflow::getById((int) $workflow->getId()), $model);
         $byTimeWorkflowInQueue->processDateTime = static::resolveProcessDateTimeByWorkflowAndModel($workflow, $model);
         $saved = $byTimeWorkflowInQueue->save();
         if (!$saved) {
             throw new FailedToSaveModelException();
         }
     } catch (ValueForProcessDateTimeIsNullException $e) {
         //For now just log this exception. If this exception is thrown it means a date or dateTime
         //somehow was set to empty, so we can't properly process this.
         WorkflowUtil::handleProcessingException($e, 'application.modules.workflows.utils.SavedWorkflowsUtil.processToByTimeWorkflowInQueue');
     }
 }
Esempio n. 6
0
 /**
  * Declares an association between this object and a Workflow object.
  *
  * @param      Workflow $v
  * @return     WorkflowRole The current object (for fluent API support)
  * @throws     PropelException
  */
 public function setWorkflow(Workflow $v = null)
 {
     if ($v === null) {
         $this->setWorkFlowId(NULL);
     } else {
         $this->setWorkFlowId($v->getId());
     }
     $this->aWorkflow = $v;
     // Add binding for other direction of this n:n relationship.
     // If this object has already been added to the Workflow object, it will not be re-added.
     if ($v !== null) {
         $v->addWorkflowRole($this);
     }
     return $this;
 }
 /**
  * Process any workflow actions that are updates to the passed in model during the processing of any
  * ByTimeWorkflowQueue models. @see ByTimeWorkflowInQueueJob.
  * @param Workflow $workflow
  * @param RedBeanModel $model
  * @param User $triggeredByUser
  * @throws FailedToSaveModelException
  */
 public static function processOnByTimeWorkflowInQueueJob(Workflow $workflow, RedBeanModel $model, User $triggeredByUser)
 {
     foreach ($workflow->getActions() as $action) {
         try {
             $helper = new WorkflowActionProcessingHelper((int) $workflow->getId(), $workflow->getName(), $action, $model, $triggeredByUser, false);
             $helper->processUpdateSelfAction();
             $helper->processNonUpdateSelfAction();
         } catch (Exception $e) {
             WorkflowUtil::handleProcessingException($e, 'application.modules.workflows.utils.WorkflowActionsUtil.processOnByTimeWorkflowInQueueJob');
         }
     }
 }
Esempio n. 8
0
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      Workflow $value A Workflow object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(Workflow $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }