jeyroik / extas-workflow-example
此包的最新版本(1.0.0)没有提供许可证信息。
Extas 工作流程包使用示例
1.0.0
2020-03-13 12:27 UTC
Requires
README
使用 jeyroik/extas-workflow 的示例
安装 workflow
# vednor/bin/extas i
启动
extas-workflow-example# php -S localhost:8080 -t src/public
之后,您应该在 https://: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,立即设置特定的触发器和验证器。
示例解决的问题描述
- 存在一个处于
todo
状态的DemoEntity
实体。 - 需要将此实体通过方案的所有转换。
- 需要以俄语输出短语“Привет мир”。
- 需要在每次状态改变后输出相应的消息。
- 需要保证过渡中使用名称 '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
。
- 为此,插件必须响应阶段
所有这些共同解决了提出的问题,满足所有要求。