工作流

工作流是描述与实体关联的业务操作的状态,工作流常用于跟踪占用时间的处理活动。

工作流练习:9-1

近似的工作流

为 Session 实体添加 state 字段,用于定义流程化的状态。

一个 Seesion 可能处于三种状态:Draft(缺省)、 Confirmed 和 Done。

在 Session 的表单视图上,添加一个只读文本域显示当前的状态,以及一个按钮用于改变其状态。有效的状态转换:

  • Draft -> Confirmed
  • Confirmed -> Draft
  • Confirmed -> Done
  • Done -> Draft

  • 添加 state 字段;

  • 添加状态转换方法,可以被表单视图按钮调用以改变数据记录的状态;

  • 在表单视图上添加相关的按钮;

openacademy/models/models.py

openacademy/views/openacademy.xml

在 odoo 中,工作流可以与任意的业务对象关联,而且可以完全定制化。工作流用于管理业务对象的生命周期,使用图形化工具定义流程转换、触发器等。工作流、流程活动(流程节点或操作)、流程转换(条件)等一般都使用 XML 定义。工作流中使用的对象称为工作项(workitems)。

警告

工作流只有在实体记录创建时才与该记录关联,所以在工作流定义之前创建的数据记录不会有对应的流程实例。

工作流练习:9-2

工作流:

替换上述的工作流为真实的工作流。调整 Session 的表单视图,使用实体方法替换按钮处理流程。

openacademy/__manifest__.py

openacademy/models/models.py

openacademy/views/openacademy.xml

openacademy/views/session_workflow.xml

提示:为了检测流程实例是否正确创建,可以使用 Settings ‣ Technical ‣ Workflows ‣ Instances 查阅当前的流程实例数据。(必须切换到开发者模式)

工作流练习:9-3

流程自动转换: 当 Session 超过一半的座位被预定时,自动将 Session 的状态从 Draft 切换到 Confirmed 状态。

openacademy/views/session_workflow.xml

工作流练习:9-4

服务器端操作:

将 Python 同步 Session 状态的方法替换为服务器端的操作。

工作流和服务器端操作将完全由 UI 创建。

openacademy/views/session_workflow.xml

results matching ""

    No results matching ""