jeyroik / extas-workflow
Extas workflow package
Installs: 919
Dependents: 3
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/jeyroik/extas-workflow
Requires
- jeyroik/extas-errors: 0.*
- jeyroik/extas-fields-conditions: 1.*
- jeyroik/extas-foundation: 5.*
- jeyroik/extas-installer-plugins: 0.*
- jeyroik/extas-repositories: 0.*
- jeyroik/extas-repositories-fields-sample-names: 0.*
- jeyroik/extas-repositories-get: 0.*
- jeyroik/extas-values-repository-items: 1.*
- jeyroik/extas-values-self: 0.*
Requires (Dev)
Suggests
- jeyroik/extas-workflow-dashboard: JSON PRC API for a Workflow
- jeyroik/extas-workflow-dispatchers: Default transition dispatchers
README
Описание
Пакет предоставляет механизм для организации перевода сущности из одного состояния в другое.
Более подробную информацию можно найти в wiki.
Также реализованы дашборд для управления workflow и docker-compose для запуска всего этого вместе:
- https://github.com/jeyroik/extas-workflow-dashboard - API.
- https://github.com/jeyroik/extas-workflow-dashboard-sapper - UI.
- https://github.com/jeyroik/extas-workflow-docker - 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": []
}
]
}