Managing Workflow Elements 

Transition Conditions 

Add a Custom Condition 

Conditions are based on the ConfigExpression component.

To add a custom condition, add a service to DIC with tag oro_action.condition, as illustrated below:

services:
    Oro\Bundle\WorkflowBundle\ConfigExpression\Blank:
        tags:
            - { name: oro_action.condition, alias: blank|empty }

Symbol “|” in alias can be used to have several aliases. Please keep in mind that service class must implement Oro\Component\ConfigExpression\ExpressionInterface.

Configurable Condition 

  • Alias: configurable

  • Description: Uses Condition Assembler to assemble conditions from passed configuration. This condition is NOT intended to be used in the configuration of Workflow but it can be used to create a condition based on the configuration in runtime.

  • Options:

    • Valid configuration of conditions.

Code Example

If value of attribute “call_timeout” is not blank AND equals 20.

$configuration = [
    '@and' => [
        '@not_blank' => ['$call_timeout'],
        '@equal' => ['$call_timeout', 20]
    ]
];
/** @var \Oro\Bundle\WorkflowBundle\Model\Condition\ConditionFactory $conditionFactory */
$condition = $conditionFactory->create(Configurable::ALIAS, $configuration);

/** @var object $data */
$data->call_timeout = 20;

var_dump($condition->evaluate($data)); // will output TRUE

Transition Actions 

Add a Custom Action 

To add a custom action, add a service to DIC with tag oro_action.action, as illustrated below:

services:
    Oro\Component\Action\Action\CloseWorkflow:
        tags:
            - { name: oro_action.action, alias: close_workflow }

Symbol “|” in alias can be used to have several aliases. Please keep in mind that the service class must implement Oro\Component\ActionAction\ActionInterface.

Configuration Syntax 

Each action can be optionally configured with a condition. It allows to implement more sufficient logic in the definitions of transitions. If a condition is not satisfied, the action will not be executed.

If flag break_on_failure is specified, the action throws an exception on error; otherwise it logs error using a standard logger.

Syntax examples are provided below:

Full Configuration Example

- '@alias_of_action':
    conditions:
        # optional condition configuration
    parameters:
        - some_parameters: some_value
        # other parameters of action
    break_on_failure: boolean # by default false

Short Configuration Example

- '@alias_of_action':
    - some_parameters: some_value
    # other parameters of action