工作流组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.4,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

工作流组件

工作流组件提供工具来管理一个工作流或有限状态机。

3.2

工作流组件是在Symfony 3.2中引入的。欧宝娱乐app下载地址

安装

1
美元作曲家需要symfony /工作流欧宝娱乐app下载地址:^ 3.4

请注意

如果你安装这个组件之外的Symfony应用程序,你必须要求欧宝娱乐app下载地址供应商/ autoload.php文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。

创建一个工作流

工作流组件给你一个面向对象的方法定义一个过程或一个你的对象的生命周期经历。每一个步骤或阶段的过程被称为的地方。您还做定义转换描述的行动从一个地方到另一个地方。

一组和转换创建了一个地方定义。一个工作流需要一个定义和写美国的对象(即一个实例MarkingStoreInterface)。

考虑下面的例子为一个博客。一篇文章可以有一个预定义的状态(“草案”,“审核”,“拒绝”,“发表”)。在工作流中,这些状态的地方。您可以定义工作流是这样的:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\组件\工作流\DefinitionBuilder;使用欧宝娱乐app下载地址\组件\工作流\MarkingStore\SingleStateMarkingStore;使用欧宝娱乐app下载地址\组件\工作流\过渡;使用欧宝娱乐app下载地址\组件\工作流\工作流;美元definitionBuilder=DefinitionBuilder ();美元定义=美元definitionBuilder- >addPlaces ([“草案”,“审查”,“拒绝”,“发布”])/ /转换定义了一个独特的名字,一个来源和目的地的地方- >addTransition (过渡(“to_review”,“草案”,“审查”))- >addTransition (过渡(“发布”,“审查”,“发布”))- >addTransition (过渡(“拒绝”,“审查”,“拒绝”))- >build ();美元标记=SingleStateMarkingStore (的现状后);美元工作流=工作流(美元定义,美元标记);

3.3

流畅的界面DefinitionBuilder类是在Symfony 3.3中引入的。欧宝娱乐app下载地址之前你必须调用addPlaces (),addTransition ()build ()方法分别。

工作流现在可以帮助你决定什么行为是允许在一篇博客文章中根据什么的地方这是在。这将让你的域逻辑在一个地方而不是遍布你的应用程序。

当你定义多个工作流应该考虑使用注册表,这是一个对象存储和提供不同的工作流。注册中心还将帮助您决定是否一个工作流支持的对象你想使用它:

1 2 3 4 5 6 7 8 9 10
使用Acme\实体\博客;使用Acme\实体\欧宝app在哪里找通讯;使用欧宝娱乐app下载地址\组件\工作流\注册表;美元blogWorkflow=……美元欧宝app在哪里找newsletterWorkflow=……美元注册表=注册表();美元注册表- >add (美元blogWorkflow,还::类);美元注册表- >add (美元欧宝app在哪里找newsletterWorkflow,通欧宝app在哪里找迅::类);

使用

当你有一个配置注册表与你的工作流,您可能使用它如下:

1 2 3 4 5 6 7 8 9 10
/ /……美元帖子=BlogPost ();美元工作流=美元注册表- >get (美元帖子);美元工作流- >可以(美元帖子,“发布”);/ /错误美元工作流- >可以(美元帖子,“to_review”);/ /正确的美元工作流- >应用(美元帖子,“to_review”);美元工作流- >可以(美元帖子,“发布”);/ /正确的美元工作流- >getEnabledTransitions (美元帖子);/ /(“发布”,“拒绝”)

了解更多

阅读更多关于的用法工作流组件在Symfony应欧宝娱乐app下载地址用程序。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。