工作流组件

编辑该页面

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

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

工作流组件

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

安装

1
美元作曲家需要symfony /工作流ob娱乐下载

请注意

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

创建一个工作流

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

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\工作流\DefinitionBuilder;使用ob娱乐下载\组件\工作流\MarkingStore\MethodMarkingStore;使用ob娱乐下载\组件\工作流\过渡;使用ob娱乐下载\组件\工作流\工作流;美元definitionBuilder=DefinitionBuilder ();美元定义=美元definitionBuilder- >addPlaces ([“草案”,“审查”,“拒绝”,“发布”])/ /转换定义了一个独特的名字,一个来源和目的地的地方- >addTransition (过渡(“to_review”,“草案”,“审查”))- >addTransition (过渡(“发布”,“审查”,“发布”))- >addTransition (过渡(“拒绝”,“审查”,“拒绝”))- >build ();美元singleState=真正的;/ /如果这个主题可以在只有一个国家在给定的时间美元财产=的现状后;/ /主题属性名的存储状态美元标记=MethodMarkingStore (美元singleState,美元财产);美元工作流=工作流(美元定义,美元标记);

工作流现在可以帮你决定吗转换(操作)在一篇博客文章被允许根据什么的地方(状态)。这将让你的域逻辑在一个地方而不是遍布你的应用程序。

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

1 2 3 4 5 6 7 8 9 10 11
使用Acme\实体\博客;使用Acme\实体\欧宝平台是合法的吗通讯;使用ob娱乐下载\组件\工作流\注册表;使用ob娱乐下载\组件\工作流\SupportStrategy\InstanceOfSupportStrategy;美元blogPostWorkflow=……;美元欧宝平台是合法的吗newsletterWorkflow=……;美元注册表=注册表();美元注册表- >addWorkflow (美元blogPostWorkflow,InstanceOfSupportStrategy(博客::类));美元注册表- >addWorkflow (美元欧宝平台是合法的吗newsletterWorkflow,InstanceOfSupportStrategy(欧宝平台是合法的吗通讯::类));

使用

当你有一个配置注册表与你的工作流,您可以检索一个工作流从它并使用它,如下所示:

1 2 3 4 5 6 7 8 9 10 11 12
/ /……/ /考虑到美元的blogPost默认“草案”美元博客=BlogPost ();美元工作流=美元注册表- >get (美元博客);美元工作流- >可以(美元博客,“发布”);/ /错误美元工作流- >可以(美元博客,“to_review”);/ /正确的美元工作流- >应用(美元博客,“to_review”);/ /现在美元的blogPost“综述”美元工作流- >可以(美元博客,“发布”);/ /正确的美元工作流- >getEnabledTransitions (美元博客);/ /美元还可以执行过渡“发布”或“拒绝”

初始化

如果您的对象的属性你想设置的initial_marking从配置中,您可以调用getMarking ()方法来初始化对象属性:

1 2 3 4 5 6
/ /……美元博客=BlogPost ();美元工作流=美元注册表- >get (美元博客);/ /启动工作流美元工作流- >getMarking (美元博客);

了解更多

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

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
ob娱乐下载Symfony 5.3支持通过JoliCode