OpenERP工作流浅析

来源:互联网 发布:jstor数据库怎么查询 编辑:程序博客网 时间:2024/06/16 22:15

对象和视图修改

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.点击同意或拒绝按钮,流程结束。

 

 



0 0