如何创建和使用工作流
编辑该页面一个>警告:你浏览的文档欧宝体育电话<一个href="//www.oldmanjams.com/releases/4.0">欧宝娱乐app下载地址Symfony 4.0一个>,不再维护。
读<一个href="//www.oldmanjams.com/doc/current/workflow.html">这个页面的更新版本一个>Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
< /div>如何创建和使用工作流一个>< /h1>
创建一个工作流一个>< /h2>
工作流是一个过程或对象经历一个生命周期。每一个步骤或阶段的过程被称为的地方。您还做定义转换描述行动从一个地方到另一个地方。
一组和转换创建了一个地方定义。一个工作流需要一个定义
和写美国的对象(即一个实例<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/MarkingStore/MarkingStoreInterface.php" class="reference external" title="MarkingStoreInterface" rel="external noopener noreferrer" target="_blank">MarkingStoreInterface一个>。)
考虑下面的例子可以有这些地方的博文:草案
,审查
,拒绝了
,发表
。您可以定义工作流是这样的:
- YAML跨度>< /li>
- XML跨度>< /li>
- PHP跨度>< /li>
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
#配置/包/ workflow.yaml跨度><跨度类="hljs-attr">框架:跨度><跨度类="hljs-attr">工作流程:跨度><跨度类="hljs-attr">blog_publishing:跨度><跨度类="hljs-attr">类型:跨度><跨度类="hljs-string">“工作流程”跨度><跨度类="hljs-comment">#或“state_machine”跨度><跨度类="hljs-attr">audit_trail:跨度><跨度类="hljs-string">“启用”跨度><跨度类="hljs-attr">marking_store:跨度><跨度类="hljs-attr">类型:跨度><跨度类="hljs-string">“multiple_state”跨度><跨度类="hljs-comment">#或“single_state”跨度><跨度类="hljs-attr">参数:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">“currentPlace”跨度><跨度类="hljs-attr">支持:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">App \实体\博客跨度><跨度类="hljs-attr">initial_place:跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-attr">地方:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">拒绝了跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">发表跨度><跨度类="hljs-attr">转换:跨度><跨度类="hljs-attr">to_review:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">发布:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">发表跨度><跨度类="hljs-attr">拒绝:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">拒绝了跨度>< /code>
1 2 3 4 5 6 7
类跨度><跨度类="hljs-title">博客跨度>< /跨度>{<跨度类="hljs-comment">/ /使用这个属性标记跨度><跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>currentPlace跨度>;<跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>标题跨度>;<跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>内容跨度>;}
请注意跨度>< /p>标记存储类型可能是“multiple_state”或“single_state”。一个状态标志商店不支持模型在多个地方在同一时间。
< /div>
提示跨度>< /p>的类型
(默认值single_state
),参数
(默认值标记
)的属性marking_store
选项都是可选的。如果省略,将使用默认值。
< /div>
提示跨度>< /p>设置audit_trail
选项启用
使应用程序生成工作流活动的详细日志消息。
< /div>
使用事件一个>< /h2>
让你的工作流程更加灵活,您可以构建工作流
对象与一个EventDispatcher
。现在可以创建事件侦听器来阻止转换(即取决于博客中的数据)和做更多的操作工作流操作发生时(如发送公告)。
每一步都有三个事件按顺序启动:
- 每个工作流事件;
- 一个事件相关工作流程;
- 为工作流事件关注特定的过渡或地名。
状态转换启动时,按照以下顺序事件派遣:
-
workflow.guard
-
验证是否允许过渡(<一个href="//www.oldmanjams.com/doc/4.0/workflow/usage.html" class="reference internal">见下文一个>)。
被派遣的三件事:
workflow.guard
工作流。.guard工作流名称
工作流。.guard工作流名称。(过渡的名字)
-
workflow.leave
-
这个话题是关于离开的地方。
被派遣的三件事:
workflow.leave
工作流。.leave工作流名称
工作流。.leave工作流名称。(地名)
-
workflow.transition
-
这个话题正在经历这种转变。
被派遣的三件事:
workflow.transition
工作流。.transition工作流名称
工作流。.transition工作流名称。(过渡的名字)
-
workflow.enter
-
即将进入一个新地方。这个事件被触发之前更新主题的地方,这意味着主体的标记还没有更新新的地方。
被派遣的三件事:
workflow.enter
工作流。.enter工作流名称
工作流。.enter工作流名称。(地名)
-
workflow.entered
-
这个话题已经进入了地方和更新标记(使它刷新数据原则)的好地方。
被派遣的三件事:
workflow.entered
工作流。.entered工作流名称
工作流。.entered工作流名称。(地名)
-
workflow.completed
-
对象完成了这种转变。
被派遣的三件事:
workflow.completed
工作流。.completed工作流名称
工作流。[工作流名称].completed[过渡的名字]。
-
workflow.announce
-
触发每个过渡,现在可以为主题。
被派遣的三件事:
workflow.announce
工作流。(工作流名称). announce
工作流。(工作流名称). announce。(过渡的名字)
请注意跨度>< /p>离开和进入事件被触发了,即使对转换呆在同一个地方。
< /div>
这是一个例子的每次如何启用日志记录blog_publishing
工作流的叶子的地方:
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
使用跨度><跨度类="hljs-title">Psr跨度>\<跨度类="hljs-title">日志跨度>\<跨度类="hljs-title">LoggerInterface跨度>;<跨度类="hljs-keyword">使用跨度><跨度类="hljs-title">欧宝娱乐app下载地址\<跨度类="hljs-title">组件跨度>\<跨度类="hljs-title">EventDispatcher跨度>\<跨度类="hljs-title">EventSubscriberInterface跨度>;<跨度类="hljs-keyword">使用跨度><跨度类="hljs-title">欧宝娱乐app下载地址\<跨度类="hljs-title">组件跨度>\<跨度类="hljs-title">工作流跨度>\<跨度类="hljs-title">事件跨度>\<跨度类="hljs-title">事件跨度>;<跨度类="hljs-class">类跨度><跨度类="hljs-title">WorkflowLogger跨度><跨度类="hljs-keyword">实现了跨度><跨度类="hljs-title">EventSubscriberInterface跨度>< /跨度>{<跨度类="hljs-keyword">公共跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">__construct跨度><跨度类="hljs-params">(LoggerInterface<跨度类="hljs-variable">美元跨度>日志记录器跨度>)跨度>< /跨度>{<跨度类="hljs-variable">美元跨度>这跨度><跨度类="hljs-operator">- >跨度>记录器=<跨度类="hljs-variable">美元跨度>日志记录器跨度>;}<跨度类="hljs-keyword">公共跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">onLeave跨度><跨度类="hljs-params">(事件<跨度类="hljs-variable">美元跨度>事件跨度>)跨度>< /跨度>{<跨度类="hljs-variable">美元跨度>这跨度><跨度类="hljs-operator">- >跨度>日志记录器<跨度类="hljs-operator">- >跨度>警报(sprintf (<跨度类="hljs-string">的博客(id:“% s”)执行事务“% s”“% s”到“% s”跨度>,<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getSubject ()<跨度类="hljs-operator">- >跨度>getId (),<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getTransition ()<跨度类="hljs-operator">- >跨度>getName(),内爆(<跨度类="hljs-string">”、“跨度>中的(<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getMarking ()<跨度类="hljs-operator">- >跨度>getPlaces()))、内爆(<跨度类="hljs-string">”、“跨度>,<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getTransition ()<跨度类="hljs-operator">- >跨度>文字())));}<跨度类="hljs-keyword">公共跨度><跨度类="hljs-keyword">静态跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">getSubscribedEvents跨度><跨度类="hljs-params">()跨度>< /跨度>{<跨度类="hljs-keyword">返回跨度><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“workflow.blog_publishing.leave”跨度>=><跨度类="hljs-string">“onLeave”跨度>,);}}
事件的方法一个>< /h3>每个工作流事件的一个实例<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Event/Event.php" class="reference external" title="事件" rel="external noopener noreferrer" target="_blank">事件一个>。这就意味着每个事件获取以下信息:
-
getMarking ()一个>< /dt>
-
返回<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Marking.php" class="reference external" title="标记" rel="external noopener noreferrer" target="_blank">标记一个>的工作流程。
-
getSubject ()一个>< /dt>
-
返回的对象分派事件。
-
getTransition ()一个>< /dt>
-
返回<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Transition.php" class="reference external" title="过渡" rel="external noopener noreferrer" target="_blank">过渡一个>分派事件。
-
getWorkflowName ()一个>< /dt>
-
返回一个字符串的工作流,触发了事件的名称。
对保安事件,有一个扩展类<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Event/GuardEvent.php" class="reference external" title="GuardEvent" rel="external noopener noreferrer" target="_blank">GuardEvent一个>。这个类有两个方法:
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
创建一个工作流一个>< /h2>
工作流是一个过程或对象经历一个生命周期。每一个步骤或阶段的过程被称为的地方。您还做定义转换描述行动从一个地方到另一个地方。
一组和转换创建了一个地方定义。一个工作流需要一个定义
和写美国的对象(即一个实例<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/MarkingStore/MarkingStoreInterface.php" class="reference external" title="MarkingStoreInterface" rel="external noopener noreferrer" target="_blank">MarkingStoreInterface一个>。)
考虑下面的例子可以有这些地方的博文:草案
,审查
,拒绝了
,发表
。您可以定义工作流是这样的:
- YAML跨度>< /li>
- XML跨度>< /li>
- PHP跨度>< /li>
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
#配置/包/ workflow.yaml跨度><跨度类="hljs-attr">框架:跨度><跨度类="hljs-attr">工作流程:跨度><跨度类="hljs-attr">blog_publishing:跨度><跨度类="hljs-attr">类型:跨度><跨度类="hljs-string">“工作流程”跨度><跨度类="hljs-comment">#或“state_machine”跨度><跨度类="hljs-attr">audit_trail:跨度><跨度类="hljs-string">“启用”跨度><跨度类="hljs-attr">marking_store:跨度><跨度类="hljs-attr">类型:跨度><跨度类="hljs-string">“multiple_state”跨度><跨度类="hljs-comment">#或“single_state”跨度><跨度类="hljs-attr">参数:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">“currentPlace”跨度><跨度类="hljs-attr">支持:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">App \实体\博客跨度><跨度类="hljs-attr">initial_place:跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-attr">地方:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">拒绝了跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">发表跨度><跨度类="hljs-attr">转换:跨度><跨度类="hljs-attr">to_review:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">发布:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">发表跨度><跨度类="hljs-attr">拒绝:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">拒绝了跨度>< /code>
1 2 3 4 5 6 7
类跨度><跨度类="hljs-title">博客跨度>< /跨度>{<跨度类="hljs-comment">/ /使用这个属性标记跨度><跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>currentPlace跨度>;<跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>标题跨度>;<跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>内容跨度>;}
请注意跨度>< /p>标记存储类型可能是“multiple_state”或“single_state”。一个状态标志商店不支持模型在多个地方在同一时间。
< /div>
提示跨度>< /p>的类型
(默认值single_state
),参数
(默认值标记
)的属性marking_store
选项都是可选的。如果省略,将使用默认值。
< /div>
提示跨度>< /p>设置audit_trail
选项启用
使应用程序生成工作流活动的详细日志消息。
< /div>
使用事件一个>< /h2>
让你的工作流程更加灵活,您可以构建工作流
对象与一个EventDispatcher
。现在可以创建事件侦听器来阻止转换(即取决于博客中的数据)和做更多的操作工作流操作发生时(如发送公告)。
每一步都有三个事件按顺序启动:
- 每个工作流事件;
- 一个事件相关工作流程;
- 为工作流事件关注特定的过渡或地名。
状态转换启动时,按照以下顺序事件派遣:
-
workflow.guard
-
验证是否允许过渡(<一个href="//www.oldmanjams.com/doc/4.0/workflow/usage.html" class="reference internal">见下文一个>)。
被派遣的三件事:
workflow.guard
工作流。.guard工作流名称
工作流。.guard工作流名称。(过渡的名字)
-
workflow.leave
-
这个话题是关于离开的地方。
被派遣的三件事:
workflow.leave
工作流。.leave工作流名称
工作流。.leave工作流名称。(地名)
-
workflow.transition
-
这个话题正在经历这种转变。
被派遣的三件事:
workflow.transition
工作流。.transition工作流名称
工作流。.transition工作流名称。(过渡的名字)
-
workflow.enter
-
即将进入一个新地方。这个事件被触发之前更新主题的地方,这意味着主体的标记还没有更新新的地方。
被派遣的三件事:
workflow.enter
工作流。.enter工作流名称
工作流。.enter工作流名称。(地名)
-
workflow.entered
-
这个话题已经进入了地方和更新标记(使它刷新数据原则)的好地方。
被派遣的三件事:
workflow.entered
工作流。.entered工作流名称
工作流。.entered工作流名称。(地名)
-
workflow.completed
-
对象完成了这种转变。
被派遣的三件事:
workflow.completed
工作流。.completed工作流名称
工作流。[工作流名称].completed[过渡的名字]。
-
workflow.announce
-
触发每个过渡,现在可以为主题。
被派遣的三件事:
workflow.announce
工作流。(工作流名称). announce
工作流。(工作流名称). announce。(过渡的名字)
请注意跨度>< /p>离开和进入事件被触发了,即使对转换呆在同一个地方。
< /div>
这是一个例子的每次如何启用日志记录blog_publishing
工作流的叶子的地方:
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
使用跨度><跨度类="hljs-title">Psr跨度>\<跨度类="hljs-title">日志跨度>\<跨度类="hljs-title">LoggerInterface跨度>;<跨度类="hljs-keyword">使用跨度><跨度类="hljs-title">欧宝娱乐app下载地址\<跨度类="hljs-title">组件跨度>\<跨度类="hljs-title">EventDispatcher跨度>\<跨度类="hljs-title">EventSubscriberInterface跨度>;<跨度类="hljs-keyword">使用跨度><跨度类="hljs-title">欧宝娱乐app下载地址\<跨度类="hljs-title">组件跨度>\<跨度类="hljs-title">工作流跨度>\<跨度类="hljs-title">事件跨度>\<跨度类="hljs-title">事件跨度>;<跨度类="hljs-class">类跨度><跨度类="hljs-title">WorkflowLogger跨度><跨度类="hljs-keyword">实现了跨度><跨度类="hljs-title">EventSubscriberInterface跨度>< /跨度>{<跨度类="hljs-keyword">公共跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">__construct跨度><跨度类="hljs-params">(LoggerInterface<跨度类="hljs-variable">美元跨度>日志记录器跨度>)跨度>< /跨度>{<跨度类="hljs-variable">美元跨度>这跨度><跨度类="hljs-operator">- >跨度>记录器=<跨度类="hljs-variable">美元跨度>日志记录器跨度>;}<跨度类="hljs-keyword">公共跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">onLeave跨度><跨度类="hljs-params">(事件<跨度类="hljs-variable">美元跨度>事件跨度>)跨度>< /跨度>{<跨度类="hljs-variable">美元跨度>这跨度><跨度类="hljs-operator">- >跨度>日志记录器<跨度类="hljs-operator">- >跨度>警报(sprintf (<跨度类="hljs-string">的博客(id:“% s”)执行事务“% s”“% s”到“% s”跨度>,<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getSubject ()<跨度类="hljs-operator">- >跨度>getId (),<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getTransition ()<跨度类="hljs-operator">- >跨度>getName(),内爆(<跨度类="hljs-string">”、“跨度>中的(<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getMarking ()<跨度类="hljs-operator">- >跨度>getPlaces()))、内爆(<跨度类="hljs-string">”、“跨度>,<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getTransition ()<跨度类="hljs-operator">- >跨度>文字())));}<跨度类="hljs-keyword">公共跨度><跨度类="hljs-keyword">静态跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">getSubscribedEvents跨度><跨度类="hljs-params">()跨度>< /跨度>{<跨度类="hljs-keyword">返回跨度><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“workflow.blog_publishing.leave”跨度>=><跨度类="hljs-string">“onLeave”跨度>,);}}
事件的方法一个>< /h3>每个工作流事件的一个实例<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Event/Event.php" class="reference external" title="事件" rel="external noopener noreferrer" target="_blank">事件一个>。这就意味着每个事件获取以下信息:
-
getMarking ()一个>< /dt>
-
返回<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Marking.php" class="reference external" title="标记" rel="external noopener noreferrer" target="_blank">标记一个>的工作流程。
-
getSubject ()一个>< /dt>
-
返回的对象分派事件。
-
getTransition ()一个>< /dt>
-
返回<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Transition.php" class="reference external" title="过渡" rel="external noopener noreferrer" target="_blank">过渡一个>分派事件。
-
getWorkflowName ()一个>< /dt>
-
返回一个字符串的工作流,触发了事件的名称。
对保安事件,有一个扩展类<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Event/GuardEvent.php" class="reference external" title="GuardEvent" rel="external noopener noreferrer" target="_blank">GuardEvent一个>。这个类有两个方法:
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
定义
和写美国的对象(即一个实例<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/MarkingStore/MarkingStoreInterface.php" class="reference external" title="MarkingStoreInterface" rel="external noopener noreferrer" target="_blank">MarkingStoreInterface一个>。)草案
,审查
,拒绝了
,发表
。您可以定义工作流是这样的:- YAML跨度>< /li>
- XML跨度>< /li>
- PHP跨度>< /li>
- XML跨度>< /li>
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
#配置/包/ workflow.yaml跨度><跨度类="hljs-attr">框架:跨度><跨度类="hljs-attr">工作流程:跨度><跨度类="hljs-attr">blog_publishing:跨度><跨度类="hljs-attr">类型:跨度><跨度类="hljs-string">“工作流程”跨度><跨度类="hljs-comment">#或“state_machine”跨度><跨度类="hljs-attr">audit_trail:跨度><跨度类="hljs-string">“启用”跨度><跨度类="hljs-attr">marking_store:跨度><跨度类="hljs-attr">类型:跨度><跨度类="hljs-string">“multiple_state”跨度><跨度类="hljs-comment">#或“single_state”跨度><跨度类="hljs-attr">参数:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">“currentPlace”跨度><跨度类="hljs-attr">支持:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">App \实体\博客跨度><跨度类="hljs-attr">initial_place:跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-attr">地方:跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">拒绝了跨度><跨度类="hljs-bullet">- - - - - -跨度><跨度类="hljs-string">发表跨度><跨度类="hljs-attr">转换:跨度><跨度类="hljs-attr">to_review:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">草案跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">发布:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">发表跨度><跨度类="hljs-attr">拒绝:跨度><跨度类="hljs-attr">来自:跨度><跨度类="hljs-string">审查跨度><跨度类="hljs-attr">:跨度><跨度类="hljs-string">拒绝了跨度>< /code>
1 2 3 4 5 6 7
类跨度><跨度类="hljs-title">博客跨度>< /跨度>{<跨度类="hljs-comment">/ /使用这个属性标记跨度><跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>currentPlace跨度>;<跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>标题跨度>;<跨度类="hljs-keyword">公共跨度><跨度类="hljs-variable">美元跨度>内容跨度>;}
请注意跨度>< /p> 标记存储类型可能是“multiple_state”或“single_state”。一个状态标志商店不支持模型在多个地方在同一时间。
提示跨度>< /p> 的
提示跨度>< /p> 设置 让你的工作流程更加灵活,您可以构建 每一步都有三个事件按顺序启动: 状态转换启动时,按照以下顺序事件派遣: 验证是否允许过渡(<一个href="//www.oldmanjams.com/doc/4.0/workflow/usage.html" class="reference internal">见下文一个>)。 被派遣的三件事: 这个话题是关于离开的地方。 被派遣的三件事: 这个话题正在经历这种转变。 被派遣的三件事: 即将进入一个新地方。这个事件被触发之前更新主题的地方,这意味着主体的标记还没有更新新的地方。 被派遣的三件事: 这个话题已经进入了地方和更新标记(使它刷新数据原则)的好地方。 被派遣的三件事: 对象完成了这种转变。 被派遣的三件事: 触发每个过渡,现在可以为主题。 被派遣的三件事:
请注意跨度>< /p> 离开和进入事件被触发了,即使对转换呆在同一个地方。 这是一个例子的每次如何启用日志记录 每个工作流事件的一个实例<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Event/Event.php" class="reference external" title="事件" rel="external noopener noreferrer" target="_blank">事件一个>。这就意味着每个事件获取以下信息: 对保安事件,有一个扩展类<一个href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Workflow/Event/GuardEvent.php" class="reference external" title="GuardEvent" rel="external noopener noreferrer" target="_blank">GuardEvent一个>。这个类有两个方法:类型
(默认值single_state
),参数
(默认值标记
)的属性marking_store
选项都是可选的。如果省略,将使用默认值。audit_trail
选项启用
使应用程序生成工作流活动的详细日志消息。使用事件一个>< /h2>
工作流
对象与一个EventDispatcher
。现在可以创建事件侦听器来阻止转换(即取决于博客中的数据)和做更多的操作工作流操作发生时(如发送公告)。
workflow.guard
workflow.guard
工作流。.guard工作流名称
工作流。.guard工作流名称。(过渡的名字)
workflow.leave
workflow.leave
工作流。.leave工作流名称
工作流。.leave工作流名称。(地名)
workflow.transition
workflow.transition
工作流。.transition工作流名称
工作流。.transition工作流名称。(过渡的名字)
workflow.enter
workflow.enter
工作流。.enter工作流名称
工作流。.enter工作流名称。(地名)
workflow.entered
workflow.entered
工作流。.entered工作流名称
工作流。.entered工作流名称。(地名)
workflow.completed
workflow.completed
工作流。.completed工作流名称
工作流。[工作流名称].completed[过渡的名字]。
workflow.announce
workflow.announce
工作流。(工作流名称). announce
工作流。(工作流名称). announce。(过渡的名字)
blog_publishing
工作流的叶子的地方: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
使用跨度><跨度类="hljs-title">Psr跨度>\<跨度类="hljs-title">日志跨度>\<跨度类="hljs-title">LoggerInterface跨度>;<跨度类="hljs-keyword">使用跨度><跨度类="hljs-title">欧宝娱乐app下载地址\<跨度类="hljs-title">组件跨度>\<跨度类="hljs-title">EventDispatcher跨度>\<跨度类="hljs-title">EventSubscriberInterface跨度>;<跨度类="hljs-keyword">使用跨度><跨度类="hljs-title">欧宝娱乐app下载地址\<跨度类="hljs-title">组件跨度>\<跨度类="hljs-title">工作流跨度>\<跨度类="hljs-title">事件跨度>\<跨度类="hljs-title">事件跨度>;<跨度类="hljs-class">类跨度><跨度类="hljs-title">WorkflowLogger跨度><跨度类="hljs-keyword">实现了跨度><跨度类="hljs-title">EventSubscriberInterface跨度>< /跨度>{<跨度类="hljs-keyword">公共跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">__construct跨度><跨度类="hljs-params">(LoggerInterface<跨度类="hljs-variable">美元跨度>日志记录器跨度>)跨度>< /跨度>{<跨度类="hljs-variable">美元跨度>这跨度><跨度类="hljs-operator">- >跨度>记录器=<跨度类="hljs-variable">美元跨度>日志记录器跨度>;}<跨度类="hljs-keyword">公共跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">onLeave跨度><跨度类="hljs-params">(事件<跨度类="hljs-variable">美元跨度>事件跨度>)跨度>< /跨度>{<跨度类="hljs-variable">美元跨度>这跨度><跨度类="hljs-operator">- >跨度>日志记录器<跨度类="hljs-operator">- >跨度>警报(sprintf (<跨度类="hljs-string">的博客(id:“% s”)执行事务“% s”“% s”到“% s”跨度>,<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getSubject ()<跨度类="hljs-operator">- >跨度>getId (),<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getTransition ()<跨度类="hljs-operator">- >跨度>getName(),内爆(<跨度类="hljs-string">”、“跨度>中的(<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getMarking ()<跨度类="hljs-operator">- >跨度>getPlaces()))、内爆(<跨度类="hljs-string">”、“跨度>,<跨度类="hljs-variable">美元跨度>事件跨度><跨度类="hljs-operator">- >跨度>getTransition ()<跨度类="hljs-operator">- >跨度>文字())));}<跨度类="hljs-keyword">公共跨度><跨度类="hljs-keyword">静态跨度><跨度类="hljs-function">函数跨度><跨度类="hljs-title">getSubscribedEvents跨度><跨度类="hljs-params">()跨度>< /跨度>{<跨度类="hljs-keyword">返回跨度><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“workflow.blog_publishing.leave”跨度>=><跨度类="hljs-string">“onLeave”跨度>,);}}
事件的方法一个>< /h3>