https://github.com/jeyroik/extas-workflow
Workflow package for Extas
https://github.com/jeyroik/extas-workflow
extas php workflow
Last synced: 5 months ago
JSON representation
Workflow package for Extas
- Host: GitHub
- URL: https://github.com/jeyroik/extas-workflow
- Owner: jeyroik
- Created: 2019-10-22T09:40:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-03-17T13:27:33.000Z (over 5 years ago)
- Last Synced: 2025-10-06T15:24:16.873Z (8 months ago)
- Topics: extas, php, workflow
- Language: PHP
- Size: 230 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README


[](//packagist.org/packages/jeyroik/extas-workflow)
[](//packagist.org/packages/jeyroik/extas-workflow)
[](//packagist.org/packages/jeyroik/extas-workflow)
# Описание
Пакет предоставляет механизм для организации перевода сущности из одного состояния в другое.
Более подробную информацию можно найти в [wiki](https://github.com/jeyroik/extas-workflow/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F).
Также реализованы дашборд для управления 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`):
- Устанавщик состояния:
```json
{
"workflow_states": [
{
"name": "",
"title": "",
"description": "",
"parameters": [
{
"name": ""
}
]
}
]
}
```
- Установщик переходов:
```json
{
"workflow_transitions": [
{
"name": "",
"title": "",
"description": "",
"state_from": "",
"state_to": ""
}
]
}
```
- Установщик шаблонов обработчиков переходов:
```json
{
"workflow_transition_dispatcher_samples": [
{
"name": "",
"title": "",
"description": "",
"class": "",
"parameters": []
}
]
}
```
- Установщик схем:
```json
{
"workflow_schemas": [
{
"name": "",
"title": "",
"description": "",
"states": [""],
"transitions": [""],
"parameters": []
}
]
}
```
- Установщик обработчиков переходов:
```json
{
"workflow_transition_dispatchers": [
{
"type": "trigger|validator",
"name": "",
"template": "",
"schema_name": "",
"transition_name": "|*",
"parameters": []
}
]
}
```