工作流组件
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.2,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
工作流组件
Workflow组件提供了用于管理工作流或有限状态机的工具。
3.2
Workflow组件是在Symfony 3.2中引入的。欧宝娱乐app下载地址
安装
你可以用两种不同的方式安装组件:
- 通过Composer安装(
欧宝娱乐app下载地址symfony /工作流
在Packagist); - 使用官方Git存储库(https://github.com/欧宝娱乐app下载地址symfony/workflow).
然后,要求供应商/ autoload.php
文件以启用Composer提供的自动加载机制。否则,您的应用程序将无法找到这个Symfony组件的类。欧宝娱乐app下载地址
创建工作流
工作流组件为您提供了一种面向对象的方法来定义对象所经历的过程或生命周期。过程中的每一步或阶段被称为的地方.你也需要定义转换描述了从一个地方到另一个地方的动作。
位置和过渡的集合创建定义.工作流需要一个定义
以及一种将状态写入对象的方法(即a的实例)MarkingStoreInterface).
考虑下面一篇博客文章的例子。一篇文章可以有一些预定义的状态(' draft ', ' review ', ' rejected ', ' published ')。在工作流中,这些状态被调用的地方.你可以这样定义工作流:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
使用欧宝娱乐app下载地址\组件\工作流\DefinitionBuilder;使用欧宝娱乐app下载地址\组件\工作流\过渡;使用欧宝娱乐app下载地址\组件\工作流\工作流;使用欧宝娱乐app下载地址\组件\工作流\MarkingStore\SingleStateMarkingStore;$构建器=新DefinitionBuilder ();$构建器->addPlaces ([“草案”,“审查”,“拒绝”,“发布”]);//转换使用唯一的名称、起始位置和目标位置定义$构建器->addTransition (新过渡(“to_review”,“草案”,“审查”));$构建器->addTransition (新过渡(“发布”,“审查”,“发布”));$构建器->addTransition (新过渡(“拒绝”,“审查”,“拒绝”));$定义=$构建器->build ();$标记=新SingleStateMarkingStore (的现状后);$工作流=新工作流($定义,$标记);
的工作流
现在可以帮助你决定什么行为是允许在博客文章取决于什么的地方它进了。这将使您的域逻辑保持在一个地方,而不是分布在整个应用程序中。
定义多个工作流时,应考虑使用注册表
,它是一个存储并提供对不同工作流的访问的对象。注册表还将帮助您确定工作流是否支持您试图使用它的对象:
1 2 3 4 5 6 7 8 9 10
使用欧宝娱乐app下载地址\组件\工作流\注册表;使用Acme\实体\博客;使用Acme\实体\欧宝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 ($帖子);// ['publish', 'reject']
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。