Skip to content

jeyroik/extas-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tests codecov.io PHPStan Enabled 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": []
    }
  ]
}