Odoo 序列和工作流





Odoo


序列和工作流


 


一序列


 


序号名称


 


序号的显示名称


 


序号类型


 


序号的类型


 


编辑序列


 


前缀


 


生成序号的前缀,可以用一些系统变量


 


后缀


 


生成序号的后缀,可以用一些系统变量


 


数字位数


 


生成序号的数字位数(不含前缀和后缀),不足位时会在前面补


0


 


增量


 


每次序号增加的数字


 


下一编号


 


系统将生成的下一个序号


 


二、工作流


 


一、工作流定义:


 


<?xml version="1.0"?> 


<terp><data> 


<record model="workflow"id=workflow_id> 


<field name="name">workflow.name</field> 


<field name="osv">resource.model</field> 


<field name="on_create">True|False</field> 


</record> 


</data></terp> 


 


model


:固定取值


"workflow" 


id


:任意值,唯一标识本工作流


 


name:


工作流的名称,任意定义


 


osv





本工作流关联的对象类型,





OpenERP


模块中定义的某对象名,


如采购单对象





purchase.order








是本工作流处理的数据对象。


 


on_create


:每当系统新产生一个


osv


中定义的对象的实例时候,是否对应的产生一个和该对象实例关联


的工作流实例。默认是


True. 


 


工作流和工作流实例:工作流定义了对某一类型的对象,如采购订单(


PO


)的处理流程。例如,


PO


单的


一般处理流程也许是:


1


)新建


PO





State=draft





2


)审批


PO


,审批的同时,


a)


系统自动产生收货单,


工仓库收货;


b)


系统自动产生凭据(


Invoice


),供财务确认付款;


c)


系统自动产生


PDF


的采购订单,并自





EMail


给该


PO


单对应的供应商。但对于特定的某个


PO


对象,需要一个工作流实例,以记录本


PO





象处在流程的哪个阶段,如


PO1


尚在


draft


状态,


PO2


已经审批通过。


 


PO


单的审批,以及对应的


a)





b)





c)


的动作,都可以在


OE


的工作流中定义解决,而不需要全编码在


PO


对象上。


即工作流实现了流程处理相关的代码和被处理对象的代码相分离,


降低了不同处理代码的耦合性,


增加了系统功能的柔软性。


 


 


二、活动(


Activity


)定义


 


<record model="workflow.activity"id="activity_id"> 


<field name="wkf_id"ref="workflow_id"/> 


<field name="name">activity.name</field> 


<field name="kind">dummy|function|subflow|stopall</field> 


<field name="subflow_id">subflow_id</field> 


<field name="action">(...)</field> 


<field name="action_id">(...)</field> 


<field name="split_mode">XOR|OR|AND</field> 


<field name="join_mode">XOR|AND</field> 


<field name="signal_send">(...)</field> 


<field name="flow_start">True|False</field> 


<field name="flow_stop">True|False</field> 


</record> 


 


model


:固定取值


workflow.activity 


wkf_id


:本


Activity


所属的工作流


id 


name:





Activity


名称,任意值


 


kind


:本


Activity


类型,有


Dummy,Function,Subflow,Stop All


四种。


kind


说明,如果流程到达本节点,


系统应执行的动作类别。


 


Dummy


表示不执行任何动作,即


action


中定义的代码不会被执行。


 


Function


表示执行


action


中定义的


python


代码,且,执行


action_id


中定义的


server action


。常见情


况是,


action


中定义一个


write


方法,修改流程关联的对象的状态。对于


Function


类型的节点,


action


中定义的代码或者返回


False


,或者返回一个客户端动作


id





A client action should be returned


)。


 


Subflow


类型表示触发“


subflow_id


”中指定的工作流。仔细的读者或许要问,工作流的执行总是和某个


被处理的对象关联,是的,如果定义了


action





subflow


关联的对象


id





action


中定义的代码返回。如


果没有定义


action


,系统默认


subflow


关联的对象和本节点所属的工作流处理的对象


id


一致。


stopall





型表示,流程到此节点则结束,但结束前,系统仍会执行


action


中的代码。


 


 


signal_send





执行完本节点的动作





action





action_id


定义的动作)


后,


应向别的工作流发往的


signal





格式是:


subflow.signal





subflow_id





signal_send


必须配合使用,


subflow_id


表示,触发子工作流


subflow_id


,在该子工作流中,通常必须定义


signal_send





signal_send


定义父流程中的某个


signal





表示,子流程处理结束后触发父流程中的信号


subflow.signal


。注意,用于父子流程通信的工作流


signal


必须是形如


subflow.*


。例如,





HR


模块的


workflow"wkf_expenses"


中,需要开发票时候,它触发流程


account


模块中的工作流“


account.wkf


”(


<field name="subflow_id"ref="account.wkf"/>


)。


account.wkf


处理完成后,发出信号


subflow.paid


通知


wkf_expenses


流程(


<field 


name="signal_send">subflow.paid</field>


)。


wkf_expenses


中定义了信号


subflow.paid





<field 


name="signal">subflow.paid</field>


)。


 


 


split_mode


:有三个选项,


XOR





OR





AND


,默认是


XOR





XOR


表示,由本节点始发的出迁移中,沿


着第一个满足迁移条件的迁移跳转。


OR


表示由本节点始发的出迁移中,只要满足迁移条件即沿该迁移跳


转。


AND


表示由本节点始发的出迁移中,


只有所有迁移皆满足迁移条件才跳转,


而且是同时沿所有迁移跳


转。


XOR


只有一个跳转,


OR


有零或多个跳转,


AND


有零或全部跳转。


 


join_mode


:有两个选项,


XOR





AND


,默认是


XOR





XOR


表示,以本节点为终点的入迁移中,只要有


一个跳至本节点,即执行本节点的


action





AND


表示,以本节点为终点的入迁移中,只有所有迁移都已


经跳至本节点,才执行本节点的


action





 


flow_start


:表示流程的开始节点。


 


flow_stop


:表示流程的结束节点。


 


 


三、迁移(


Transition


)的定义


 


迁移的完整


XML


定义格式如下。


 


<record model="workflow.transition"id="transition_id"> 


<field name="act_from"ref="activity_id_1"/> 


<field name="act_to"ref="activity_id_2"/> 


<field name="signal">(...)</field> 


<field name="condition">(...)</field> 


<field name="trigger_model">(...)</field> 


<field name="trigger_expr_id">(...)</field> 


</record> 


 


act_from


:本迁移的起始节点,引用之前定义的


Activity





 


act_to


:本迁移的结束节点,引用之前定义的


Activity





 


signal


:触发本迁移的信号,表示,如果系统收到


signal


定义的信号,则触发本迁移。触发信号有三种方


式,


1


)最常见的是用户点击视图中的“


name=


本处定义的


signal


”的


button


,此时相当于向系统发送迁


移信号量。


系统会根据视图中的对象


id





找到对象关联的


workflow





再找到与


button name


相同的


signal





触发之。


2


)调用


workflow_service


的方法:


trg_validate(self,uid,res_type,res_id,signal,cr)


,此方法表


示,触发对象类型


res_type


关联的


workflow





signal


信号,工作流实例关联的对象实例是


res_id





3





子流程的


signal_send


发出的信号,此种情况前文已说过。


 


 


condition


:迁移的条件,是一段


Python


代码,通常是一个函数调用。当系统收到


signal


中定义的信号


时候,检查此处的条件,条件为真则实际触发迁移。


 


trigger_model





trigger_expr_id





此二字段表示启动一个新工作流实例。


trigger_model


定义对象类型,


trigger_expr_id


定义一段


Python


代码,


返回


trigger_model


类型的对象


id





此二字段表示,


如果


act_from


中的


action


执行完毕,





condition


条件


OK





则系统中插入一个


trigger_model


类型,


trigger_expr_id


返回的对象


id


关联的工作流实例。然后,可以调用


workflow_service


的方法


trg_trigger(self,uid,res_type,res_id,cr)


实际执行该工作流。实际使用例子请参考


Sale


模块的工作流定义


wkf_sale





 


<field name="trigger_model">procurement.order</field> 


<field name="trigger_expr_id">procurement_lines_get()</field>


 


迁移(


Transition


)的定义漏了权限组


group_id


,修正如下。表示只有该权限组可以触发本迁移。


 


迁移的完整


XML


定义格式如下。


 


<record model="workflow.transition"id="transition_id"> 


<field name="act_from"ref="activity_id_1"/> 


<field name="act_to"ref="activity_id_2"/> 


<field name="group_id"ref="groupid"/> 


<field name="signal">(...)</field> 
1234567890ABCDEFGHIJKLMNabcdefghijklmn!@#$%^&&*()_+.一三五七九贰肆陆扒拾,。青玉案元夕东风夜放花千树更吹落星如雨宝马雕车香满路凤箫声动玉壶光转一夜鱼龙舞蛾儿雪柳黄金缕笑语盈盈暗香去众里寻他千百度暮然回首那人却在灯火阑珊处
您的评论


240
发布评论
用户评价


    暂无评论


©2016 Baidu 使用百度前必读 | 文库协议 | 广告服务 | 企业文库 | 网站地图
3
下载1 下载券
用手机扫此二维码:×
以下结果由提供:×
百度翻译
百科词条:×
百度百科
分享到:
QQ空间新浪微博人人网微信
评价文档:
领取
下载券 新版反馈
/4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值