工作流程和状态机

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

工作流程和状态机

工作流

工作流模型是一个应用程序的过程。可能是一篇博客文章中如何从草案的过程审核和发布。另一个例子是当用户提交的一系列不同的形式来完成一个任务。这些过程是最好远离您的模型中定义的,应该配置。

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

请注意

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

例子

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

工作流可以更复杂时,描述一个真正的商业案例。下面的工作流描述了流程填写工作应用程序。

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

通过定义一个这样的工作流程,流程如何看起来像有一个概述。的流程逻辑不是混合控制器,模型或视图。步骤的顺序可以改变通过改变配置。

状态机

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

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

例子

把请求开始在最初的“开始”状态,然后一个状态“测试”如持续集成栈上运行测试。当这个完成后,把请求在“审核”状态,人们可以要求更改,拒绝或接受请求。在任何时候,您还可以“更新”拉请求,这将导致另一个持续集成运行。

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

  • YAML
  • XML
  • PHP
1 2 3 4 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 38 39 40
#配置/包/ workflow.yaml框架:工作流程:pull_request:类型:“state_machine”marking_store:类型:“方法”属性:“currentPlace”支持:- - - - - -应用\ \ PullRequest实体initial_marking:开始地方:- - - - - -开始- - - - - -编码- - - - - -测试- - - - - -审查- - - - - -合并后的- - - - - -关闭转换:提交:来自:开始:测试更新:来自:(编码、测试中,审查):测试wait_for_review:来自:测试:审查request_change:来自:审查:编码接受:来自:审查:合并后的拒绝:来自:审查:关闭重启:来自:关闭:审查

在Symfob娱乐下载ony应用程序中使用默认的服务。yaml的配置,你可以被注入这个状态机工作流注册服务:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ /……使用应用程序\实体\PullRequest;使用ob娱乐下载\组件\工作流\注册表;SomeService{私人美元工作流;公共函数__construct(注册表美元工作流){美元- >工作流=美元工作流;}公共函数someMethod(PullRequest美元pullRequest){美元stateMachine=美元- >工作流- >get (美元pullRequest,“pull_request”);美元stateMachine- >应用(美元pullRequest,“wait_for_review”);/ /……}/ /……}

ob娱乐下载为每个工作流Symfony会自动创建一个服务(工作流)或状态机(StateMachine)中定义您的配置。这意味着您可以使用workflow.pull_requeststate_machine.pull_request分别在你的服务定义访问适当的服务:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ /……使用应用程序\实体\PullRequest;使用ob娱乐下载\组件\工作流\StateMachine;SomeService{私人美元stateMachine;公共函数__construct(StateMachine美元stateMachine){美元- >stateMachine =美元stateMachine;}公共函数someMethod(PullRequest美元pullRequest){美元- >stateMachine- >应用(美元pullRequest,“wait_for_review”,(“log_comment”= >“我的日志评论等待审核的过渡”。]);/ /……}/ /……}

自动和手动验证

在缓存预热,Symfony验证工作流状态机ob娱乐下载,在配置文件中定义。如果你的工作流或者状态机定义以编程的方式,而不是在一个配置文件,您可以验证的WorkflowValidatorStateMachineValidator:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ /……使用ob娱乐下载\组件\工作流\定义;使用ob娱乐下载\组件\工作流\StateMachine;使用ob娱乐下载\组件\工作流\验证器\StateMachineValidator;美元= (“创建”,“激活”,“删除”];美元stateTransitions= (过渡(“激活”,“创建”,“激活”),/ /这个重复的事件“从”“创建”状态是无效的过渡(“激活”,“创建”,“删除”),过渡(“删除”,“激活”,“删除”),);/ /不验证完成初始化美元定义=定义(美元,美元stateTransitions);美元验证器=StateMachineValidator ();/ /抛出InvalidDefinitionException无效的定义美元验证器- >validate (美元定义,“我的第一个StateMachine”);
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。