工作流

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

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

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

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

示例 

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

777_simple.png

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

1485943055_74540_85131_job_application.png

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

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