Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 

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": []
    }
  ]
}