工作流
工作流是描述与实体关联的业务操作的状态,工作流常用于跟踪占用时间的处理活动。
工作流练习:9-1
近似的工作流
为 Session 实体添加
state
字段,用于定义流程化的状态。一个 Seesion 可能处于三种状态:Draft(缺省)、 Confirmed 和 Done。
在 Session 的表单视图上,添加一个只读文本域显示当前的状态,以及一个按钮用于改变其状态。有效的状态转换:
- Draft -> Confirmed
- Confirmed -> Draft
- Confirmed -> Done
Done -> Draft
添加
state
字段;添加状态转换方法,可以被表单视图按钮调用以改变数据记录的状态;
- 在表单视图上添加相关的按钮;
在 odoo 中,工作流可以与任意的业务对象关联,而且可以完全定制化。工作流用于管理业务对象的生命周期,使用图形化工具定义流程转换、触发器等。工作流、流程活动(流程节点或操作)、流程转换(条件)等一般都使用 XML 定义。工作流中使用的对象称为工作项(workitems)。
警告
工作流只有在实体记录创建时才与该记录关联,所以在工作流定义之前创建的数据记录不会有对应的流程实例。
工作流练习:9-2
工作流:
替换上述的工作流为真实的工作流。调整 Session 的表单视图,使用实体方法替换按钮处理流程。
openacademy/views/openacademy.xml
openacademy/views/session_workflow.xml
提示:为了检测流程实例是否正确创建,可以使用 Settings ‣ Technical ‣ Workflows ‣ Instances 查阅当前的流程实例数据。(必须切换到开发者模式)
工作流练习:9-3
流程自动转换: 当 Session 超过一半的座位被预定时,自动将 Session 的状态从
Draft
切换到Confirmed
状态。
工作流练习:9-4
服务器端操作:
将 Python 同步 Session 状态的方法替换为服务器端的操作。
工作流和服务器端操作将完全由 UI 创建。