基于有限状态机的 Ruby API,用于模拟工作流程
:doctype: 书籍 :toc: 宏 :toclevels: 1 :sectlinks: :idprefix:
工作流是一种受有限状态机启发的 API,用于模型和 与我们通常称为"工作流程"的内容进行交互。
许多业务模型往往涉及工作流程类的概念,而本库的目的是通过使用与状态机理论中相似的术语,尽可能清晰地表达这些概念。
因此,工作流程具有状态。它在任何时刻只能处于一个状态。当工作流程更改状态时,我们称之为转换。转换发生在事件上,因此事件会引发转换。此外,当事件触发时,还可以执行其他任意代码,我们称之为操作。因此,任何给定状态都有许多事件,状态中的任何事件都会引发转换到另一个状态,并可能导致执行代码(操作)。我们可以在状态进入和退出时进行钩入,还可以导致转换失败(保护措施),并且我们可以钩入任何出于任何原因发生的转换。
现在,这些都很复杂,但我们将通过一个真实的世界示例来逐步演示 API。假设我们正在模拟记者提交文章。一篇文章被编写后提交。一旦提交,它就需要审核。有人审核了该文章,然后接受或拒绝它。下面是一个示例:
暂无开放 Issues,或尚未同步最近议题。