工作流

3.4 版本
维护中的版本

一个工作流(workflow),是你程序中一个进程的模型。它可以是“博客主题从草稿、审核到发布”的进程。另一个例子是,当一位用户提交一系列不同的表单以完成一个任务时。类似的进程最好从你的models中脱离,而且应该在配置信息中进行定义。

一个工作流的 definition(定义) 包括places(位置)和actions(动作),以从一个位置来到另一个位置。 actions被称为 transistions(过渡)。工作流也需要知道每个对象在工作流中的位置。那个 marking store 写入了对象的一个属性来记住当前位置。

上面的专有名词一般被用于讨论工作流和 Petri nets

Workflow组件支持状态机(state machines)。状态机是工作流的子集(subset),其目的是持有你的模型的一个状态。在 工作流作为状态机 一文可以读到更多的关于状态机的不同和特定的功能。

示例 

最简单的工作流是下面这种。它包括两个places和一个transition。

当用来描述一个真实业务时,工作流可以是更复杂的。下面的工作流描述了在job程序中进行填充的进程。

当你填写本例中的一个工作时,根据所请求的工作之不同,会有4到7步。某些工作需要性格测验,逻辑测验,以及/或者需要用户填写正式的需求。另一些则不需要。GuardEvent 用于在特定程序中决定“允许进行的下一步是什么”。

通过像这样定义一个工作流,进程如何被展现就能知其大概。进程的逻辑并不与控制器、model层或view层混为一谈。步骤(steps)的次序只能通过改变“配置信息”才可以改变。

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)