jeyroik/extas-workflow-example 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jeyroik/extas-workflow-example

Composer 安装命令:

composer require jeyroik/extas-workflow-example

包简介

Example of usage workflow package for Extas

README 文档

README

Пример использования пакета jeyroik/extas-workflow

установка workflow

# vednor/bin/extas i

запуск

extas-workflow-example# php -S localhost:8080 -t src/public

После этого на страничке http://localhost:8080 вы должны увидеть следующее:

Current state = todo
Available actions (transitions):
 get_in_work (change status to "in_work")
 not_actual__from_todo (change status to "not_actual")

Run transition to "in_work":
Transition runtime data:
=====================
Привет мир
Entity new state is "in_work"

=====================
Transition result: success
Сбросить

Объяснение

  • В рамках примера устанавливается 4 состояния: todo, in_work, done, not_actual.
  • Для этих состояний устанавливаются следующие переходы: get_in_work, done, not_actual.
  • Также устаналивается несколько шаблонов для обработки переходов.
    • trigger__hello_world - после перехода выводит сообщение "Hello world" на языке, установленным в контексте.
    • trigger__transition_finished - вывод сообщение, что сущность переведена в состояние с указанием названия нового состояния.
    • validator__hello_jeyroik - проверяет наличие в контексте параметра name и его равенство строке jeyroik.
    • validator__context_params - проверяет наличие в контексте параметров, указанных в обработчике.
    • validator__entity_params - проверяет наличие в сущности, меняющей состояние, параметров, указанных в обработчике.
  • Кроме этого устанавливается схема, содержащая все указанные ранее состояния и переходы.
  • Для установленной схемы workflow сразу устанавливаются и конкретные триггеры и валидаторы.

Описание задачи, которую решает пример

  • Имеется сущность DemoEntity в состоянии todo.
  • Необходимо прогнать данную сущность по всем переходам схемы.
  • Требуется вывести на русском языке фразу "Привет мир".
  • Требуется после каждой смены состояния вывести соответствующее сообщение.
  • Требуется гаранитровать, что в переходы осуществляются с именем 'jeyroik'.
  • Требуется гарантировать, что в контексте после перевода сущности в состояние done будет параметр success, равный true.
  • Требуется гарантировать, что в сущности после перевода сущности в состояние done будет параметр operated, равный true.

Решение задачи

  • Для того, чтобы решить поставленную задачу, в контекст помещаем следующие данные:
$context = new WorkflowEntityContext([
   'name' => 'jeyroik',
   'lang' => 'ru'
]);
  • Далее, для всех переходов устанавливаем триггер по шаблону trigger__transition_finished.
  • Кроме этого, на переход в статус done вешаем валидаторы по параметрам контекста и сущности по шаблонам validator__context_params и validator__entity_params соответственно.
  • Для удовлетворения требования по поводу success и operated создадим плагин, который будет реагировать на перевод в состояние done.
    • Для этого плагин должен реагировать на стадию workflow.to.done.

Всё вместе решает поставленную задачу, удовлетворяя всем требованиям.

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2019-10-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固