Создание менеджера workflow

Создание и настройка менеджера workflow (объекта реализующего интерфейс \OldTown\Workflow\WorkflowInterface) происходит через абстрактую фабрику \OldTown\Workflow\ZF2\Factory\AbstractWorkflowFactory.

Для работый работы \OldTown\Workflow\ZF2\Factory\AbstractWorkflowFactory необходимо описать конфигурацию менеджера workflow в конфигурационных файлах приложения. В качестве примера можно использовать файл workflow.config.dist.

Описание структуры конфига

Все настройки модуля находятся в секции workflow_zf2

Пример конфига


use OldTown\Workflow\Basic\BasicWorkflow;
use OldTown\Workflow\Spi\Memory\MemoryWorkflowStore;
use OldTown\Workflow\Loader\ArrayWorkflowFactory;
use OldTown\Workflow\Util\DefaultVariableResolver;

return [
     //Секция содержащая настройки модуля
    'workflow_zf2'    => [

        //Секция описывающая менеджеры workflow
        'managers' => [
            //Имя менеджера
            'test_create_manager' => [
                //Имя ключа в секции configuration. Описание настроек менеджера workflow
                'configuration' => 'default',
                //Имя класса менеджера workflow или имя сервиса доступного в ServiceLocator приложения
                'name' => BasicWorkflow::class
            ]
        ],

        //Секция описывающая конфигурации для менеджереров workflow
        'configurations' => [
            //имя конфигурации
            'default' => [
                //настройки хранилища состояния запущенного процесса workflow
                'persistence' => [
                    //Имя класса реализующего функционал по сохранению состояния workflow
                    'name' => MemoryWorkflowStore::class,
                    //Настройки для хранилища workflow
                    'options' => [

                    ]
                ],
                //Настройки фабрики создания workflow
                'factory' => [
                    //Имя фабрики
                    'name' => ArrayWorkflowFactory::class,
                    //Опции для фабрики
                    'options' => [
                        'reload' => true,
                        'workflows' => [
                            'test' => [
                                'location' => __DIR__ . '/../../../../../../../../config/workflow/example.xml'
                            ]
                        ]
                    ]
                ],
                //Имя класса или имя сервиса доступного в ServiceLocator приложения, реализующего функционал
                //резолвера переменных в xml файле описывающем workflow
                'resolver' => DefaultVariableResolver::class,
            ]
        ]
    ]
];

Структура конфига

Секция managers

Ключем является имя менеджера, а значением конфиг описывающий настройки для этого менеджера. Возможные настройки:

  • configuration - имя конфигурации. Конфигурация с данным именем должна быть описана в секции configurations
  • name - клас реализующий интерфейс \OldTown\Workflow\WorkflowInterface. По умолчанию используется \OldTown\Workflow\Basic\BasicWorkflow

Секция configurations

Ключем является имя конфигурации менеджера workflow, а значением описание данной конфигурации. Возможные настройки:

  • persistence - настройка хранилища состояния запущенных процессов workflow. Содержит следующие настройки
  • name - имя класса. Класс должен реализовывать интерфейс \OldTown\Workflow\Spi\WorkflowStoreInterface.
  • options - массив содержащий настройки хранилища

  • factory - настройка фабрики создания workflow.

  • name - имя класса фабрики. По умолчанию используется ArrayWorkflowFactory
  • options - массив содержащий настройки фабрики

  • resolver - имя класса или имя сервиса доступного в ServiceLocator приложения, реализующего функционал резолвера переменных в xml файле описывающем workflow

Настройка фабрики создания workflow

Фабрика workflow(класс реализующий интерфейс \OldTown\Workflow\Loader\WorkflowFactoryInterface) отвечает за настройку менеджера workflow. В поставку библиотеки old-town/workflow входит фабрика \OldTown\Workflow\Loader\ArrayWorkflowFactory, предоставляющая возможность настроить workflow с помощью конфига переданного в массиве(также есть фабрики производящие настройку на основе конфигурационного xml файла, а также на оснвое url по которому можно скачать конфигурационный xml файл).

В случае если используется фабрика ArrayWorkflowFactory, то как регистрировать файлы workflow, и производить другие настройки менеджера workflow описывается с оответствующем разделе документации

Получение менеджера с помощью абстрактной фабрики

Для получения менеджера workflow, необходим получить экземплря ServiceLocator приложения. Для получения настроенного зкземплряра менеджера workflow, необходимо получить сервис с именем вида workflow.manager.SERVICE_NAME . Где SERVICE_NAME имя менеджера которое должно быть зарегестрированно в конфиге приложения в секции [workflow_zf2][managers].