对象和视图修改
1. 添加xml文件引用
在__openerp__.py文件data中添加工作流文件引用。
2. 对象修改
在车辆管理对象中添加state字段,保存车辆审批状态。
可以看出,车辆有草稿,待审批,审批通过和审批拒绝四个状态。
3. 视图修改
在列表中添加atate字段,在表单中增加下述三个按钮。
工作流定义
model:固定取值"workflow"
id:任意值,唯一标识本工作流
name:工作流的名称,任意定义
osv:工作流关联的对象类型,是OpenERP模块中定义的对象名。
on_create:每当系统新产生一个osv 中定义的对象的实例时候,是否对应的产生一个和该对象实例关联的工作流实例。默认是True。
活动
model:固定取值workflow.activity
wkf_id:活动所属的工作流id
name: 活动名称,任意值
kind:活动类型,有Dummy, Function, Subflow,Stop All 四种。Kind表明如果流程到达本节点,系统应执行的动作类别。Function 表示执行action中定义的python代码。通常action中定义一个write方法,修改流程关联的对象的状态。
flow_start:表示流程的开始节点。
flow_stop:表示流程的结束节点。
注:代码只列出草稿活动状态。
迁移
act_from:本迁移的起始节点,引用之前定义的Activity。
act_to:本迁移的结束节点,引用之前定义的Activity。
group_id:权限组,表示只有该权限组可以触发本迁移,提交迁移不涉及权限,审批迁移需要加入权限控制。
signal: 触发本迁移的信号,表示,如果系统收到signal定义的信号,则触发本迁移。用户点击视图中的“name = 本处定义的signal”的button,此时相当于向系统发送迁移信号量。系统会根据视图中的对象id,找到对象关联的workflow,再找到与 button name相同的signal,触发之。
condition:迁移的条件,是一段Python代码,通常是一个函数调用。当系统收到signal中定义的信号时候,检查此处的条件,条件为真则实际触发迁移。
注:代码只列出点击提交按钮迁移。
测试
1. 新建车辆
2. 点击保存
3. 点击toprove按钮,会出现审批按钮,权限控制会在另一篇中介绍。
4.点击同意或拒绝按钮,流程结束。