jeyroik/extas-workflow

There is no license information available for the latest version (5.1.1) of this package.

Extas workflow package


README

tests codecov.io PHPStan Enabled 68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f32353264393631316632333034353565613835342f6d61696e7461696e6162696c697479 Extas Installer v3 Latest Stable Version Total Downloads Dependents

Описание

Пакет предоставляет механизм для организации перевода сущности из одного состояния в другое.

Более подробную информацию можно найти в wiki.

Также реализованы дашборд для управления workflow и docker-compose для запуска всего этого вместе:

Установка пакета

# composer require jeyroik/extas-workflow:*

Тесты

# composer run-script test

Термины

В рамках пакета используется следующее:

  • Сущность IEntity - объект, который требуется перевести из одного состояния в другое.
  • Состояние IState - состояние сущности, имеет описание и название.
  • Переход ITransition - объект, описывающий возможность перехода сущности из одного состояния в другое.
    • Кроме переходов из конкретных состояний, допускается переход из любого (*) состояния.
  • Схема ISchema - объект, описывающий все доступные переходы для сущности.
  • Обработчик перехода ITransitionDispatcher - обработчик, запускающийся для конкретных переходов в конкретных схемах.
    • На текущий момент данные обработчики используются для реализации условий, валидаторов и триггеров.
    • Условие - проверка до перехода.
    • Валидатор - проверка во время перехода.
    • Триггер - функция, запускающаяся после перехода.
  • Рабочий процесс IWorkflow - объект совершающий перевод сущности из одного состояния в другое.

Краткое описание процесса

При запуске перевода сущности из одного состояния в другое, происходит следующее:

  • По схеме определяется возможен ли переход:
    • Запускаются все условия для данного перехода.
    • Запускаются все валидаторы для данного перехода.
  • Если валидация прошла успешно, то у сущности меняется состояние.
    • Управление сменой состояния осуществляется с помощью интерфейса IEntity. Т.е. все сущности, которые планируются гонять с помощью данного механизма, обязаны реализовывать данный интерфейс.
  • После этого запускаются все триггеры для данного перехода.

Предварительная установка компонентов workflow

Данный пакет предоставляет следующие установщики для extas-совместимой конфигурации (см. jeyroik/extas-installer):

  • Устанавщик состояния:
{
  "workflow_states": [
    {
      "name": "",
      "title": "",
      "description": "",
      "parameters": [
        {
          "name": ""
        }
      ]
    }
  ]
}
  • Установщик переходов:
{
  "workflow_transitions": [
    {
      "name": "",
      "title": "",
      "description": "",
      "state_from": "<state.name>",
      "state_to": "<state.name>"
    }
  ]
}
  • Установщик шаблонов обработчиков переходов:
{
  "workflow_transition_dispatcher_samples": [
    {
      "name": "",
      "title": "",
      "description": "",
      "class": "",
      "parameters": []
    }
  ]
}
  • Установщик схем:
{
  "workflow_schemas": [
    {
      "name": "",
      "title": "",
      "description": "",
      "states": ["<state.name>"],
      "transitions": ["<transition.name>"],
      "parameters": []
    }
  ]
}
  • Установщик обработчиков переходов:
{
  "workflow_transition_dispatchers": [
    {
      "type": "trigger|validator",
      "name": "",
      "template": "<template.name>",
      "schema_name": "<schema.name>",
      "transition_name": "<transition.name>|*",
      "parameters": []
    }
  ]
}