GithubHelp home page GithubHelp logo

extas-workflow's Introduction

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

extas-workflow's People

Contributors

jeyroik avatar

Stargazers

Alexey Lagunov avatar  avatar

Watchers

James Cloos avatar  avatar

extas-workflow's Issues

Опечатки и недостающая информация в README

Опечатки

  • При перечислении сущностей пакета "Состояния" - должно быть в единственном числе.
  • "попускается" - исправить на "допускается".

Недостающая информация

  • Добавить упоминание Wiki.
  • В описании обработчиков переходов добавить упоминание условий (сейчас там только валидаторы и триггеры).
  • Добавить упоминание workflow-dashboard и пакета с docker-compose.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.