本文整理汇总了PHP中Workflow::setTriggersStructure方法的典型用法代码示例。如果您正苦于以下问题:PHP Workflow::setTriggersStructure方法的具体用法?PHP Workflow::setTriggersStructure怎么用?PHP Workflow::setTriggersStructure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Workflow
的用法示例。
在下文中一共展示了Workflow::setTriggersStructure方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: resolveWorkflowByWizardPostData
/**
* @param Workflow $workflow
* @param array $postData
* @param string$wizardFormClassName
*/
public static function resolveWorkflowByWizardPostData(Workflow $workflow, $postData, $wizardFormClassName)
{
assert('is_array($postData)');
assert('is_string($wizardFormClassName)');
$data = ArrayUtil::getArrayValue($postData, $wizardFormClassName);
if (isset($data['description'])) {
$workflow->setDescription($data['description']);
}
if (isset($data['isActive'])) {
$workflow->setIsActive((bool) $data['isActive']);
}
if (isset($data['moduleClassName'])) {
$workflow->setModuleClassName($data['moduleClassName']);
}
if (isset($data['name'])) {
$workflow->setName($data['name']);
}
if (isset($data['triggerOn'])) {
$workflow->setTriggerOn($data['triggerOn']);
}
if (isset($data['triggersStructure'])) {
$workflow->setTriggersStructure($data['triggersStructure']);
}
if (isset($data['timeTriggerAttribute'])) {
$workflow->setTimeTriggerAttribute($data['timeTriggerAttribute']);
}
self::resolveTriggers($data, $workflow);
self::resolveActions($data, $workflow);
self::resolveEmailMessages($data, $workflow);
self::resolveTimeTrigger($data, $workflow);
}
示例2: testRun
public function testRun()
{
//Create workflow
$workflow = new Workflow();
$workflow->setDescription('aDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('WorkflowsTest2Module');
$workflow->setName('myFirstWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
//Add action that is missing required owner
$action = new ActionForWorkflowForm('WorkflowModelTestItem2', Workflow::TYPE_ON_SAVE);
$action->type = ActionForWorkflowForm::TYPE_CREATE;
$action->relation = 'hasMany2';
$attributes = array('string' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason'), 'lastName' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason'));
$action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
$workflow->addAction($action);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
$this->assertEquals(0, count(Notification::getAll()));
$job = new WorkflowValidityCheckJob();
$this->assertTrue($job->run());
$notifications = Notification::getAll();
$this->assertEquals(1, count($notifications));
}
示例3: makeWorkflowBySavedWorkflow
/**
* @param SavedWorkflow $savedWorkflow
* @return Workflow
*/
public static function makeWorkflowBySavedWorkflow(SavedWorkflow $savedWorkflow)
{
$workflow = new Workflow();
if ($savedWorkflow->id > 0) {
$workflow->setId((int) $savedWorkflow->id);
}
$workflow->setDescription($savedWorkflow->description);
$workflow->setIsActive((bool) $savedWorkflow->isActive);
$workflow->setModuleClassName($savedWorkflow->moduleClassName);
$workflow->setName($savedWorkflow->name);
$workflow->setOrder((int) $savedWorkflow->order);
$workflow->setType($savedWorkflow->type);
$workflow->setTriggerOn($savedWorkflow->triggerOn);
if ($savedWorkflow->serializedData != null) {
$unserializedData = unserialize($savedWorkflow->serializedData);
if (isset($unserializedData['triggersStructure'])) {
$workflow->setTriggersStructure($unserializedData['triggersStructure']);
}
self::makeComponentFormAndPopulateWorkflowFromData($unserializedData[ComponentForWorkflowForm::TYPE_TRIGGERS], $workflow, 'Trigger');
self::makeActionForWorkflowFormAndPopulateWorkflowFromData($unserializedData[ComponentForWorkflowForm::TYPE_ACTIONS], $workflow);
self::makeEmailMessageForWorkflowFormAndPopulateWorkflowFromData($unserializedData[ComponentForWorkflowForm::TYPE_EMAIL_MESSAGES], $workflow);
if (isset($unserializedData[ComponentForWorkflowForm::TYPE_TIME_TRIGGER])) {
$moduleClassName = $workflow->getModuleClassName();
$timeTrigger = new TimeTriggerForWorkflowForm($moduleClassName, $moduleClassName::getPrimaryModelName(), $workflow->getType());
$timeTrigger->setAttributes($unserializedData[ComponentForWorkflowForm::TYPE_TIME_TRIGGER]);
$workflow->setTimeTrigger($timeTrigger);
$workflow->setTimeTriggerAttribute($timeTrigger->getAttributeIndexOrDerivedType());
}
}
return $workflow;
}
示例4: testRunWithMissingTriggerMultiselectPicklistValue
public function testRunWithMissingTriggerMultiselectPicklistValue()
{
$this->clearNotificationsWorkflowsAndEmailMessages();
$this->createStageValues();
//Create workflow
$workflow = new Workflow();
$workflow->setDescription('bDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('OpportunitiesModule');
$workflow->setName('mySecondWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
$trigger = new TriggerForWorkflowForm('OpportunitiesModule', 'Opportunity', Workflow::TYPE_ON_SAVE);
$trigger->attributeIndexOrDerivedType = 'stage';
$trigger->value = 'Closed Won,Negotiating';
$trigger->operator = OperatorRules::TYPE_ONE_OF;
$trigger->relationFilter = TriggerForWorkflowForm::RELATION_FILTER_ANY;
$workflow->addTrigger($trigger);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
$this->assertEquals(0, Notification::getCount());
$this->assertEquals(0, EmailMessage::getCount());
$job = new WorkflowValidityCheckJob();
$this->assertTrue($job->run());
$this->assertEquals(0, Notification::getCount());
$this->assertEquals(0, EmailMessage::getCount());
$this->clearNotificationsWorkflowsAndEmailMessages();
$workflow = new Workflow();
$workflow->setDescription('cDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('OpportunitiesModule');
$workflow->setName('mySecondWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
$trigger = new TriggerForWorkflowForm('OpportunitiesModule', 'Opportunity', Workflow::TYPE_ON_SAVE);
$trigger->attributeIndexOrDerivedType = 'stage';
$trigger->value = 'Closed Won,Unexisting state';
$trigger->operator = OperatorRules::TYPE_BECOMES;
$trigger->relationFilter = TriggerForWorkflowForm::RELATION_FILTER_ANY;
$workflow->addTrigger($trigger);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
$this->assertEquals(0, Notification::getCount());
$this->assertEquals(0, EmailMessage::getCount());
$job = new WorkflowValidityCheckJob();
$this->assertTrue($job->run());
$this->assertEquals(1, Notification::getCount());
$this->assertEquals(1, EmailMessage::getCount());
}
示例5: makeSampleOnSaveWorkflow
protected function makeSampleOnSaveWorkflow()
{
Yii::app()->user->userModel = User::getByUsername('super');
$emailTemplate = new EmailTemplate();
$emailTemplate->type = EmailTemplate::TYPE_WORKFLOW;
$emailTemplate->builtType = EmailTemplate::BUILT_TYPE_BUILDER_TEMPLATE;
$emailTemplate->subject = 'We closed a deal';
$emailTemplate->name = 'We closed a deal - Sample Email Template';
$emailTemplate->textContent = 'Hello!!!
We just closed new deal, please check details: [[MODEL^URL]]
Thanks!';
$emailTemplate->htmlContent = '<p>Hello!!!</p>
<p>We just closed new deal, please check details: [[MODEL^URL]]</p>
<p>Thanks!</p>';
$emailTemplate->modelClassName = 'Opportunity';
$emailTemplate->isDraft = false;
$emailTemplate->save();
$trigger = new TriggerForWorkflowForm('OpportunitiesModule', 'Opportunity', Workflow::TYPE_ON_SAVE);
$trigger->attributeIndexOrDerivedType = 'stage';
$trigger->value = 'Closed Won';
$trigger->operator = OperatorRules::TYPE_BECOMES;
$trigger->relationFilter = TriggerForWorkflowForm::RELATION_FILTER_ANY;
$message = new EmailMessageForWorkflowForm('Opportunity', Workflow::TYPE_ON_SAVE);
$message->sendAfterDurationInterval = 0;
$message->sendAfterDurationType = TimeDurationUtil::DURATION_TYPE_MINUTE;
$message->emailTemplateId = $emailTemplate->id;
$message->sendFromType = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT;
$recipients = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_STATIC_ADDRESS, 'audienceType' => EmailMessageRecipient::TYPE_TO, 'toName' => 'The Sales Team', 'toAddress' => 'SalesTeam@mycompany.com'));
$message->setAttributes(array(EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS => $recipients));
$workflow = new Workflow();
$workflow->setDescription('This will send an email to recipients that you choose when you close a deal!');
$workflow->setIsActive(false);
$workflow->setOrder(2);
$workflow->setModuleClassName('OpportunitiesModule');
$workflow->setName('Closed won Opportunity alert');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
$workflow->addTrigger($trigger);
$workflow->addEmailMessage($message);
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$savedWorkflow->save();
}
示例6: makeOnSaveWorkflowAndTimeTriggerForDateOrDateTime
public static function makeOnSaveWorkflowAndTimeTriggerForDateOrDateTime($attributeIndexOrDerivedType, $valueType, $value, $durationInterval = 0, $moduleClassName = 'WorkflowsTestModule', $modelClassName = 'WorkflowModelTestItem', $secondValue = null, $durationSign = TimeDurationUtil::DURATION_SIGN_POSITIVE, $durationType = TimeDurationUtil::DURATION_TYPE_DAY)
{
assert('is_string($attributeIndexOrDerivedType)');
// Not Coding Standard
assert('is_string($valueType)');
// Not Coding Standard
assert('is_int($durationInterval)');
// Not Coding Standard
assert('is_string($moduleClassName)');
// Not Coding Standard
assert('is_string($modelClassName)');
// Not Coding Standard
assert('is_string($durationSign)');
// Not Coding Standard
assert('is_string($durationType)');
// Not Coding Standard
$workflow = new Workflow();
$workflow->setType(Workflow::TYPE_BY_TIME);
$workflow->setTriggersStructure('1');
$trigger = new TimeTriggerForWorkflowForm($moduleClassName, $modelClassName, $workflow->getType());
$trigger->attributeIndexOrDerivedType = $attributeIndexOrDerivedType;
$trigger->valueType = $valueType;
$trigger->value = $value;
$trigger->secondValue = $secondValue;
$trigger->durationInterval = $durationInterval;
$trigger->durationSign = $durationSign;
$trigger->durationType = $durationType;
$workflow->setTimeTrigger($trigger);
return $workflow;
}
示例7: testSetAndGetWorkflow
/**
* @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());
}
示例8: testProcessBeforeSaveOnModifiedByUserEquals
/**
* A test to show that the modifiedByUser works ok as a trigger with 'equals' on a newly created model.
* @see testProcessBeforeSaveOnCreatedByUserEquals
*/
public function testProcessBeforeSaveOnModifiedByUserEquals()
{
Yii::app()->user->userModel = User::getByUsername('super');
//Create workflow
$workflow = new Workflow();
$workflow->setDescription('aDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('AccountsModule');
$workflow->setName('myFirstWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
//Add trigger
$trigger = new TriggerForWorkflowForm('AccountsTestModule', 'Account', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'modifiedByUser';
$trigger->value = Yii::app()->user->userModel->id;
$trigger->operator = 'equals';
$workflow->addTrigger($trigger);
//Add action
$action = new ActionForWorkflowForm('Account', Workflow::TYPE_ON_SAVE);
$action->type = ActionForWorkflowForm::TYPE_UPDATE_SELF;
$attributes = array('name' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason'));
$action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
$workflow->addAction($action);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
//Confirm that the workflow processes and the attribute gets updated
$model = new Account();
$model->name = 'aValue';
$this->assertTrue($model->save());
$this->assertEquals('jason', $model->name);
}
示例9: testResolveAfterSaveByModelForByTime
/**
* @depends testResolveAfterSaveByModel
*/
public function testResolveAfterSaveByModelForByTime()
{
//Create workflow
$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_BY_TIME);
$workflow->setTriggersStructure('1');
$workflow->setIsActive(true);
//Add time trigger
$trigger = new TimeTriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'date';
$trigger->durationSeconds = '500';
$trigger->valueType = 'Is Time For';
$workflow->setTimeTrigger($trigger);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
$workflow->setId($savedWorkflow->id);
//set Id back.
$model = new WorkflowModelTestItem();
$model->lastName = 'something';
$model->string = 'aValue';
$model->date = '2013-03-03';
$saved = $model->save();
$this->assertTrue($saved);
$model->addWorkflowToProcessAfterSave($workflow);
$this->assertEquals(0, count(ByTimeWorkflowInQueue::getAll()));
SavedWorkflowsUtil::resolveAfterSaveByModel($model, Yii::app()->user->userModel);
$this->assertEquals(1, count(ByTimeWorkflowInQueue::getAll()));
}
示例10: testProcessOnByTimeWorkflowInQueueJob
/**
* @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);
}
示例11: testResolveWorkflowToSavedWorkflow
public function testResolveWorkflowToSavedWorkflow()
{
$workflow = new Workflow();
$workflow->setDescription('aDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('WorkflowsTestModule');
$workflow->setName('myFirstWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1 and 2 or 3 or 4');
$trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'string';
$trigger->value = 'aValue';
$trigger->operator = 'equals';
$workflow->addTrigger($trigger);
$trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'currencyValue';
$trigger->value = 'aValue';
$trigger->secondValue = 'bValue';
$trigger->operator = 'between';
$trigger->currencyIdForValue = '4';
$workflow->addTrigger($trigger);
$trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'owner__User';
$trigger->value = 'aValue';
$trigger->stringifiedModelForValue = 'someName';
$workflow->addTrigger($trigger);
$trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'createdDateTime';
$trigger->value = 'aValue';
$trigger->secondValue = 'bValue';
$trigger->operator = null;
$trigger->currencyIdForValue = null;
$trigger->valueType = 'Between';
$workflow->addTrigger($trigger);
$trigger = new TimeTriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'date';
$trigger->durationInterval = 500;
$trigger->valueType = 'Is Time For';
$workflow->setTimeTrigger($trigger);
$action = new ActionForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
$action->type = ActionForWorkflowForm::TYPE_UPDATE_SELF;
$attributes = array('string' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason'));
$action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
$workflow->addAction($action);
$message = new EmailMessageForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
$message->sendAfterDurationInterval = 86400;
$message->sendAfterDurationType = TimeDurationUtil::DURATION_TYPE_WEEK;
$message->emailTemplateId = 5;
$message->sendFromType = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT;
$recipients = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_DYNAMIC_TRIGGERED_MODEL_USER, 'audienceType' => EmailMessageRecipient::TYPE_TO, 'dynamicUserType' => DynamicTriggeredModelUserWorkflowEmailMessageRecipientForm::DYNAMIC_USER_TYPE_CREATED_BY_USER));
$message->setAttributes(array(EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS => $recipients));
$workflow->addEmailMessage($message);
$savedWorkflow = new SavedWorkflow();
$this->assertNull($savedWorkflow->serializedData);
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$this->assertEquals('WorkflowsTestModule', $savedWorkflow->moduleClassName);
$this->assertEquals('1', $savedWorkflow->isActive);
$this->assertEquals('myFirstWorkflow', $savedWorkflow->name);
$this->assertEquals('aDescription', $savedWorkflow->description);
$this->assertEquals(5, $savedWorkflow->order);
$this->assertEquals(Workflow::TRIGGER_ON_NEW, $savedWorkflow->triggerOn);
$this->assertEquals(Workflow::TYPE_ON_SAVE, $savedWorkflow->type);
$this->assertEquals('1 and 2 or 3 or 4', $workflow->getTriggersStructure());
$compareData = array('Triggers' => array(array('currencyIdForValue' => null, 'value' => 'aValue', 'secondValue' => null, 'stringifiedModelForValue' => null, 'valueType' => null, 'attributeIndexOrDerivedType' => 'string', 'operator' => 'equals', 'relationFilter' => TriggerForWorkflowForm::RELATION_FILTER_ANY), array('currencyIdForValue' => '4', 'value' => 'aValue', 'secondValue' => 'bValue', 'stringifiedModelForValue' => null, 'valueType' => null, 'attributeIndexOrDerivedType' => 'currencyValue', 'operator' => 'between', 'relationFilter' => TriggerForWorkflowForm::RELATION_FILTER_ANY), array('currencyIdForValue' => null, 'value' => 'aValue', 'secondValue' => null, 'stringifiedModelForValue' => 'someName', 'valueType' => null, 'attributeIndexOrDerivedType' => 'owner__User', 'operator' => null, 'relationFilter' => TriggerForWorkflowForm::RELATION_FILTER_ANY), array('value' => 'aValue', 'secondValue' => 'bValue', 'stringifiedModelForValue' => null, 'valueType' => 'Between', 'attributeIndexOrDerivedType' => 'createdDateTime', 'operator' => null, 'currencyIdForValue' => null, 'relationFilter' => TriggerForWorkflowForm::RELATION_FILTER_ANY)));
$compareData['Actions'] = array(array('type' => ActionForWorkflowForm::TYPE_UPDATE_SELF, 'relation' => null, 'relationFilter' => ActionForWorkflowForm::RELATION_FILTER_ALL, 'relatedModelRelation' => null, 'ActionAttributes' => array('string' => array('type' => 'Static', 'value' => 'jason', 'shouldSetValue' => 1))));
$compareData['EmailMessages'] = array(array('emailTemplateId' => 5, 'sendAfterDurationInterval' => 86400, 'sendAfterDurationType' => TimeDurationUtil::DURATION_TYPE_WEEK, 'sendFromType' => 'Default', 'sendFromName' => null, 'sendFromAddress' => null, 'EmailMessageRecipients' => array(array('dynamicUserType' => 'CreatedByUser', 'type' => 'DynamicTriggeredModelUser', 'audienceType' => 1))));
$compareData['TimeTrigger'] = array('durationInterval' => 500, 'durationSign' => TimeDurationUtil::DURATION_SIGN_POSITIVE, 'durationType' => TimeDurationUtil::DURATION_TYPE_DAY, 'currencyIdForValue' => null, 'value' => null, 'secondValue' => null, 'valueType' => 'Is Time For', 'relationFilter' => 'RelationFilterAny', 'attributeIndexOrDerivedType' => 'date', 'operator' => null);
$unserializedData = unserialize($savedWorkflow->serializedData);
$this->assertEquals($compareData['Triggers'], $unserializedData['Triggers']);
$this->assertEquals($compareData['Actions'], $unserializedData['Actions']);
$this->assertEquals($compareData['EmailMessages'], $unserializedData['EmailMessages']);
$this->assertEquals($compareData['TimeTrigger'], $unserializedData['TimeTrigger']);
$this->assertEquals('1 and 2 or 3 or 4', $unserializedData['triggersStructure']);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
}
示例12: testProcessWorkflowForTaskWhenProjectAsARequiredCustomPicklist
/**
* Tests that a bug involving creating a required custom picklist on projects causes the workflow
* to break when creating a task
*/
public function testProcessWorkflowForTaskWhenProjectAsARequiredCustomPicklist()
{
Yii::app()->user->userModel = User::getByUsername('super');
//Create a required picklist for projects
ModulesSearchWithDataProviderTestHelper::createDropDownAttribute(new Project(), 'pick', true);
//Create workflow
$workflow = new Workflow();
$workflow->setDescription('aDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('TasksModule');
$workflow->setName('myFirstWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_BY_TIME);
$workflow->setTriggersStructure('1');
//Add trigger
$trigger = new TimeTriggerForWorkflowForm('TasksModule', 'Task', $workflow->getType());
$trigger->attributeIndexOrDerivedType = 'dueDateTime';
$trigger->valueType = MixedDateTypesSearchFormAttributeMappingRules::TYPE_IS_TIME_FOR;
$trigger->durationInterval = 5;
$trigger->durationType = TimeDurationUtil::DURATION_TYPE_MONTH;
$trigger->durationSign = TimeDurationUtil::DURATION_SIGN_NEGATIVE;
$workflow->setTimeTrigger($trigger);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
//Confirm that the workflow processes
$model = new Task();
$model->name = 'aTask';
$model->dueDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
$this->assertTrue($model->save());
}
示例13: makeOnSaveWorkflowAndTimeTriggerForDateOrDateTime
public static function makeOnSaveWorkflowAndTimeTriggerForDateOrDateTime($attributeIndexOrDerivedType, $valueType, $value, $durationSeconds = 0, $moduleClassName = 'WorkflowsTestModule', $modelClassName = 'WorkflowModelTestItem', $secondValue = null)
{
assert('is_string($attributeIndexOrDerivedType)');
// Not Coding Standard
assert('is_string($valueType)');
// Not Coding Standard
assert('is_int($durationSeconds)');
// Not Coding Standard
assert('is_string($moduleClassName)');
// Not Coding Standard
assert('is_string($modelClassName)');
// Not Coding Standard
$workflow = new Workflow();
$workflow->setType(Workflow::TYPE_BY_TIME);
$workflow->setTriggersStructure('1');
$trigger = new TimeTriggerForWorkflowForm($moduleClassName, $modelClassName, $workflow->getType());
$trigger->attributeIndexOrDerivedType = $attributeIndexOrDerivedType;
$trigger->valueType = $valueType;
$trigger->value = $value;
$trigger->secondValue = $secondValue;
$trigger->durationSeconds = $durationSeconds;
$workflow->setTimeTrigger($trigger);
return $workflow;
}
示例14: testWorkflowDoesLinkRelatedModelWhenPermissionsIsSetToOwner
public function testWorkflowDoesLinkRelatedModelWhenPermissionsIsSetToOwner()
{
$super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
$contactStates = ContactState::getAll();
$this->assertEquals(0, Contact::getCount());
//Create workflow
$workflow = new Workflow();
$workflow->setDescription('aDescription');
$workflow->setIsActive(true);
$workflow->setOrder(5);
$workflow->setModuleClassName('AccountsModule');
$workflow->setName('myFirstWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
//Add action
$action = new ActionForWorkflowForm('Account', Workflow::TYPE_ON_SAVE);
$action->type = ActionForWorkflowForm::TYPE_CREATE;
$action->relation = 'contacts';
$attributes = array('lastName' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'smith'), 'firstName' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'john'), 'owner__User' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => Yii::app()->user->userModel->id), 'state' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => $contactStates[0]->id));
$action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
$workflow->addAction($action);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
$account = new Account();
$account->name = 'myTestAccount';
$account->owner = $super;
$account->save();
RedBeanModel::forgetAll();
$contacts = Contact::getAll();
$this->assertCount(1, $contacts);
$this->assertEquals('myTestAccount', $contacts[0]->account->name);
$this->assertEquals('john smith', strval($account->contacts[0]));
$this->assertTrue($account->contacts[0]->id > 0);
}
示例15: testUpdateRelatedCatalogItemOnAProductBySellPriceCriteria
public function testUpdateRelatedCatalogItemOnAProductBySellPriceCriteria()
{
$super = User::getByUsername('super');
$contactStates = ContactState::getAll();
//Create workflow
$workflow = new Workflow();
$workflow->setDescription('aDescription');
$workflow->setIsActive(true);
$workflow->setOrder(1);
$workflow->setModuleClassName('ProductsModule');
$workflow->setName('myFirstProductWorkflow');
$workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
$workflow->setType(Workflow::TYPE_ON_SAVE);
$workflow->setTriggersStructure('1');
//Add Trigger
$trigger = new TriggerForWorkflowForm('ProductsModule', 'Product', Workflow::TYPE_ON_SAVE);
$trigger->attributeIndexOrDerivedType = 'sellPrice';
$trigger->value = 600;
$trigger->operator = 'greaterThanOrEqualTo';
$workflow->addTrigger($trigger);
//Add action
$currencies = Currency::getAll();
$action = new ActionForWorkflowForm('Product', Workflow::TYPE_ON_SAVE);
$action->type = ActionForWorkflowForm::TYPE_UPDATE_RELATED;
$action->relation = 'productTemplate';
$attributes = array('description' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'Set Price'), 'priceFrequency' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 2), 'listPrice' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 800, 'currencyId' => $currencies[0]->id), 'cost' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 700, 'currencyId' => $currencies[0]->id));
$action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
$workflow->addAction($action);
//Create the saved Workflow
$savedWorkflow = new SavedWorkflow();
SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
$saved = $savedWorkflow->save();
$this->assertTrue($saved);
$productTemplate = ProductTemplateTestHelper::createProductTemplateByName('superProductTemplate');
$productTemplates = ProductTemplate::getByName('superProductTemplate');
$product = ProductTestHelper::createProductByNameForOwner('Test Product', $super);
$this->assertTrue($product->id > 0);
$product->productTemplate = $productTemplates[0];
//Change product sell price
$product->sellPrice->value = 650;
$this->assertTrue(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $product));
$saved = $product->save();
$this->assertTrue($saved);
$productId = $product->id;
$product->forget();
$product = Product::getById($productId);
$this->assertEquals('Set Price', $product->productTemplate->description);
$this->assertEquals(2, $product->productTemplate->priceFrequency);
$this->assertEquals(700, $product->productTemplate->cost->value);
$this->assertEquals(800, $product->productTemplate->listPrice->value);
}