Beispiel #1
0
 /**
  * Creates states for action.
  *
  * @param Workflow\WorkflowAction $action  Workflow action to build states
  * @param string                  $comment Data
  */
 protected function buildActionStates(Workflow\WorkflowAction $action, $comment)
 {
     $workflow = $this->factory->getWorkflow();
     if (!preg_match_all('/@WF\\\\ifstate (.*)/', $comment, $tags, PREG_SET_ORDER)) {
         // add all possible states if not configured
         foreach ($workflow->getStates() as $state) {
             $state->addAction($action);
         }
         return;
     }
     foreach ($tags as $tag) {
         $stateName = defined($tag[1]) ? constant($tag[1]) : $tag[1];
         if ($state = $workflow->getState($stateName)) {
             $state->addAction($action);
         }
     }
 }
Beispiel #2
0
 public function setUp()
 {
     $entity = new Workflow\TestModel\TestWorkflowEntity();
     $this->workflow = Workflow\WorkflowFactory::build(new Workflow\Builder\DocCommentBuilder($entity));
 }
Beispiel #3
0
<?php

require_once 'bootstrap.php';
use DevelArts\Workflow;
$order = new Order();
$builder = new Workflow\Builder\DocCommentBuilder($order);
$workflow = Workflow\WorkflowFactory::build($builder);
$order->setState($workflow->getState(OrderStatusEnum::PLACED));
Example::run($workflow, $order);
Beispiel #4
0
<?php

require_once 'bootstrap.php';
use DevelArts\Workflow;
$factory = new Workflow\WorkflowFactory();
// define states
$factory->addStates([OrderStatusEnum::PLACED => 'Placed', OrderStatusEnum::PROCESSING => 'Processing', OrderStatusEnum::SENT => 'Sent', OrderStatusEnum::COMPLETED => 'Completed', OrderStatusEnum::CANCELED => 'Canceled']);
$workflow = $factory->getWorkflow();
// create action "Process"
$action = $factory->createAction('process', $workflow->getState(OrderStatusEnum::PROCESSING), new OrderProcessAction());
$action->setLabel('Process');
$action->addConstraint(new OrderProcessingConstraint());
// add process to states
$workflow->getState(OrderStatusEnum::PLACED)->addAction($action);
$workflow->getState(OrderStatusEnum::CANCELED)->addAction($action);
// create action "Cancel"
$action = $factory->createAction('cancel', $workflow->getState(OrderStatusEnum::CANCELED));
$action->addObserver(new OrderCancelReasonObserver());
$action->setLabel('Cancel');
// add cancel to states
$workflow->getState(OrderStatusEnum::PLACED)->addAction($action);
$workflow->getState(OrderStatusEnum::PROCESSING)->addAction($action);
// create action "Send"
$action = $factory->createAction('send', $workflow->getState(OrderStatusEnum::SENT));
$action->setLabel('Send');
// add send to states
$workflow->getState(OrderStatusEnum::PROCESSING)->addAction($action);
// create "Complete" action
$action = $factory->createAction('complete', $workflow->getState(OrderStatusEnum::COMPLETED));
$action->setLabel('Complete');
// add complete to states