工作流和状态机

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

工作流和状态机

工作流

工作流是应用程序中流程的模型。这可能是一篇博客文章如何从草稿到审查和发布的过程。另一个例子是用户提交一系列不同的表单来完成一项任务。这样的过程最好远离您的模型,并且应该在配置中定义。

一个定义工作流的一部分由从一个地方到另一个地方的位置和操作组成。动作被称为转换.工作流还需要知道每个对象在工作流中的位置。的这商店将当前位置写入对象上的属性。

请注意

上面的术语通常用于讨论工作流和佩特里网

例子

最简单的工作流是这样的。它包含两个地方和一个过渡。

当它们描述一个真实的业务案例时,工作流可能会更加复杂。下面的工作流程描述了填写工作申请的流程。

在这个例子中,当你填写一份工作申请时,根据你申请的工作,有4到7个步骤。有些工作需要个性测试、逻辑测试和/或由用户回答的正式要求。有些工作没有。的GuardEvent用于决定特定应用程序允许的下一步步骤。

通过定义这样的工作流,可以大致了解流程的外观。流程逻辑不与控制器、模型或视图混合。步骤的顺序只能通过更改配置来更改。

状态机

状态机是工作流的一个子集,它的目的是保存模型的状态。它们之间最重要的区别是:

  • 工作流可以同时在多个地方,而状态机不能;
  • 为了应用转换,工作流要求对象位于转换之前的所有位置,而状态机只要求对象至少位于其中一个位置。

例子

pull请求以初始的“start”状态开始,例如在Travis上运行测试的状态。完成后,拉取请求处于“审查”状态,贡献者可以要求更改、拒绝或接受拉取请求。在任何时候,你也可以“更新”pull请求,这将导致另一次Travis运行。

下面是拉请求状态机的配置。

  • YAML
  • XML
  • PHP
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
# app / config / config.yml框架:工作流程:pull_request:类型:“state_machine”支持:-AppBundle \ \ PullRequest实体initial_place:开始地方:-开始-编码-特拉维斯-审查-合并后的-关闭转换:提交:来自:开始:特拉维斯更新:来自:(编码、特拉维斯,审查):特拉维斯wait_for_review:来自:特拉维斯:审查request_change:来自:审查:编码接受:来自:审查:合并后的拒绝:来自:审查:关闭重启:来自:关闭:审查

属性来使用此状态机state_machine.pull_request服务:

1
stateMachine->容器->get (“state_machine.pull_request”);
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。