工作流作为状态机
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.2,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
工作流作为状态机
工作流组件是效仿工作流净这是一个子类的吗佩特里网。通过添加进一步的限制,你可以得到一个状态机。最重要的一个是,一个状态机不能同时在多个地方。同样值得注意的是,一个工作流定义中通常没有循环路径图,但它是很常见的一个状态机。
一个状态机的例子
把请求开始开始“启动”状态,特拉维斯状态如运行测试。当这个完成后,把请求在“审核”状态,人们可以要求更改,拒绝或接受请求。在任何时候,您还可以“更新”拉请求,这将导致另一个特拉维斯。
下面是配置拉请求状态机。
- 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
# app / config / config.yml框架:工作流程:pull_request:类型:“state_machine”支持:- - - - - -AppBundle \ \ PullRequest实体地方:- - - - - -开始- - - - - -编码- - - - - -特拉维斯- - - - - -审查- - - - - -合并后的- - - - - -关闭转换:提交:来自:开始:特拉维斯更新:来自:(编码、特拉维斯,审查):特拉维斯wait_for_review:来自:特拉维斯:审查request_change:来自:审查:编码接受:来自:审查:合并后的拒绝:来自:审查:关闭重启:来自:关闭:审查
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
< !- - - - - -- - - - - -app/config/config.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:工作流的名字=“pull_request”类型=“state_machine”><框架:marking-store类型=“single_state”/ ><框架:支持>AppBundle \ \ PullRequest实体< /框架:支持><框架:地方>开始< /框架:地方><框架:地方>编码< /框架:地方><框架:地方>特拉维斯< /框架:地方><框架:地方>审查< /框架:地方><框架:地方>合并后的< /框架:地方><框架:地方>关闭< /框架:地方><框架:过渡的名字=“提交”><框架:从>开始< /框架:从><框架:>特拉维斯< /框架:>< /框架:过渡><框架:过渡的名字=“更新”><框架:从>编码< /框架:从><框架:从>特拉维斯< /框架:从><框架:从>审查< /框架:从><框架:>特拉维斯< /框架:>< /框架:过渡><框架:过渡的名字=“wait_for_review”><框架:从>特拉维斯< /框架:从><框架:>审查< /框架:>< /框架:过渡><框架:过渡的名字=“request_change”><框架:从>审查< /框架:从><框架:>编码< /框架:>< /框架:过渡><框架:过渡的名字=“接受”><框架:从>审查< /框架:从><框架:>合并后的< /框架:>< /框架:过渡><框架:过渡的名字=“拒绝”><框架:从>审查< /框架:从><框架:>关闭< /框架:>< /框架:过渡><框架:过渡的名字=“重启”><框架:从>关闭< /框架:从><框架:>审查< /框架:>< /框架:过渡>< /框架:工作流>< /框架:配置>< /容器>
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 41 42 43 44 45 46 47 48 49
/ / app / config / config . php美元容器- >loadFromExtension (“框架”,数组(/ /……“工作流程”= >数组(“pull_request”= >数组(“类型”= >“state_machine”,“支持”= >数组(“AppBundle \ \ PullRequest实体”),“地方”= >数组(“开始”,“编码”,特拉维斯的,“审查”,“合并”,“关闭”),“转换”= >数组(“开始”= >数组(“从”= >“开始”,”到“= >特拉维斯的),“更新”= >数组(“从”= >数组(“编码”,特拉维斯的,“审查”),”到“= >特拉维斯的),“wait_for_reivew”= >数组(“从”= >特拉维斯的,”到“= >“审查”),“request_change”= >数组(“从”= >“审查”,”到“= >“编码”),“接受”= >数组(“从”= >“审查”,”到“= >“合并”),“拒绝”= >数组(“从”= >“审查”,”到“= >“关闭”),“重启”= >数组(“从”= >“开始”,”到“= >“审查”))))));
您现在可以使用这个状态机的state_machine.pull_request
服务:
1
美元stateMachine=美元这- >容器- >get (“state_machine.pull_request”);
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。