PHPackages                             jeyroik/extas-workflow - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jeyroik/extas-workflow

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jeyroik/extas-workflow
======================

Extas workflow package

5.1.1(5y ago)19473PHPCI failing

Since Jan 16Pushed 5y ago1 watchersCompare

[ Source](https://github.com/jeyroik/extas-workflow)[ Packagist](https://packagist.org/packages/jeyroik/extas-workflow)[ RSS](/packages/jeyroik-extas-workflow/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (15)Versions (25)Used By (3)

[![tests](https://github.com/jeyroik/extas-workflow/workflows/PHP%20Composer/badge.svg?branch=master&event=push)](https://github.com/jeyroik/extas-workflow/workflows/PHP%20Composer/badge.svg?branch=master&event=push)[![codecov.io](https://camo.githubusercontent.com/ce687a2b14911ede7b12b0ef064b41541fa6746d9a307c20e2bd33c2e4799d70/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d776f726b666c6f772f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://camo.githubusercontent.com/ce687a2b14911ede7b12b0ef064b41541fa6746d9a307c20e2bd33c2e4799d70/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d776f726b666c6f772f636f7665726167652e7376673f6272616e63683d6d6173746572)[![PHPStan Enabled](https://camo.githubusercontent.com/441b5874ce4df0a2defc892979c96c46889b69cb32119d04f0b48626349f8bc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d656e61626c65642d627269676874677265656e2e7376673f7374796c653d666c6174)](https://github.com/phpstan/phpstan)[![](https://camo.githubusercontent.com/4b8e1e0a951aaec545acd2d661f87780342c6e79a7598d877a5be1effd716aed/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f32353264393631316632333034353565613835342f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/jeyroik/extas-workflow/maintainability)[![Extas Installer v3](https://camo.githubusercontent.com/84fa12b6b5945df440cd1eada219bbced80060f2595ae4bcbedb6a8fac03acee/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f696e7374616c6c65722d76332d677265656e)](https://github.com/jeyroik/extas-installer/ "Extas Installer v3")[![Latest Stable Version](https://camo.githubusercontent.com/a244284465dd8dace4fc7c603b707de4b1defd8daf82634bb181e8b4b3078510/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d776f726b666c6f772f76)](//packagist.org/packages/jeyroik/extas-workflow)[![Total Downloads](https://camo.githubusercontent.com/8ad7e737366c8b83a5b538c5d70005f361d983ff2a4541cc3f188acf20667b64/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d776f726b666c6f772f646f776e6c6f616473)](//packagist.org/packages/jeyroik/extas-workflow)[![Dependents](https://camo.githubusercontent.com/4847d9ed263f8d873e73f9df86d16f3d5e2b0ff136caae2f9aa6e4c93c4fd0ed/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d776f726b666c6f772f646570656e64656e7473)](//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 для запуска всего этого вместе:

-  - API.
-  - UI.
-  - Docker-compose.

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

[](#установка-пакета)

`# composer require jeyroik/extas-workflow:*`

Тесты
=====

[](#тесты)

`# composer run-script test`

Термины
=======

[](#термины)

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

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

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

[](#краткое-описание-процесса)

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

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

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

[](#предварительная-установка-компонентов-workflow)

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

- Устанавщик состояния:

```
{
  "workflow_states": [
    {
      "name": "",
      "title": "",
      "description": "",
      "parameters": [
        {
          "name": ""
        }
      ]
    }
  ]
}
```

- Установщик переходов:

```
{
  "workflow_transitions": [
    {
      "name": "",
      "title": "",
      "description": "",
      "state_from": "",
      "state_to": ""
    }
  ]
}
```

- Установщик шаблонов обработчиков переходов:

```
{
  "workflow_transition_dispatcher_samples": [
    {
      "name": "",
      "title": "",
      "description": "",
      "class": "",
      "parameters": []
    }
  ]
}
```

- Установщик схем:

```
{
  "workflow_schemas": [
    {
      "name": "",
      "title": "",
      "description": "",
      "states": [""],
      "transitions": [""],
      "parameters": []
    }
  ]
}
```

- Установщик обработчиков переходов:

```
{
  "workflow_transition_dispatchers": [
    {
      "type": "trigger|validator",
      "name": "",
      "template": "",
      "schema_name": "",
      "transition_name": "|*",
      "parameters": []
    }
  ]
}
```

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~19 days

Recently: every ~50 days

Total

23

Last Release

1883d ago

Major Versions

0.11.0 → 1.0.62020-03-26

1.0.8 → 2.0.02020-04-02

2.0.1 → 3.0.02020-04-26

3.8.1 → 4.0.02020-08-27

4.1.0 → 5.0.02020-09-09

### Community

Maintainers

![](https://www.gravatar.com/avatar/2aaec5c4bade6ab2b5d1a0f7d97ab4e0ff2ce83937f76499b2888ad16cde5e04?d=identicon)[jeyroik](/maintainers/jeyroik)

---

Top Contributors

[![jeyroik](https://avatars.githubusercontent.com/u/6348124?v=4)](https://github.com/jeyroik "jeyroik (166 commits)")

---

Tags

extasphpworkflow

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/jeyroik-extas-workflow/health.svg)

```
[![Health](https://phpackages.com/badges/jeyroik-extas-workflow/health.svg)](https://phpackages.com/packages/jeyroik-extas-workflow)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
