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)
系统自动产生
的采购订单,并自
动
给该
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
Odoo 序列和工作流相关推荐
- odoo10 工作流、安全机制、向导
一:工作流 工作流是与业务流程相关联的模型,可用于跟踪工序的动态演变过程. 工作流.活动(节点或操作).转换通常在xml里以record定义.在工作流中处理的单个流程称为工作项. 与模型关联的工作流是 ...
- 链锯:基于链接的自动化工作流漏洞生成
摘要 我们解决了web应用程序的自动漏洞生成问题.在这方面,我们提出了一种方法,该方法显著提高了web注入漏洞识别和漏洞生成的技术水平.我们的漏洞生成方法解决了与典型web应用程序特征相关的各种挑战: ...
- python Pipelines(管道)
https://blog.csdn.net/cheng9981/article/details/63279807 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库. 它 ...
- 一套较完整的技术框架
一套较完整的技术框架 转载自http://blog.csdn.net/phenixiii/article/month/2007/11 1 引言 1.1 前言 本文将基于目前现有的软件开发架构(以下简称 ...
- workflow是什么?
workflow是为了完成一些预定的目的,根据一组规则,而制定的一系列步骤.对于一个开发者来说,workflow则是将复杂的业务规则以及控制流程以图形化的方法声明出来,组成一个高度可视化的图形环境. ...
- odoo中的序列(自动增长的序列以及有条件的序列,ir.sequence)
1.模块下面的data文件夹里面新建一个XML文件 如图:main_data_seq.xml <?xml version="1.0" encoding="utf-8 ...
- Odoo10参考系列--工作流
在Odoo中,一个工作流是一个和一个去管理与模型记录关联的一套"要做的事"的技术产品.工作流提供了一种更高级别的方法来组织任务,以便在记录中执行. 更具体地说,工作流是一个有向图, ...
- Odoo 8.0深入浅出开发教程
转自:http://blog.sunansheng.com/python/odoo/odoo.html Table of Contents 1. ERP简介 1.1. Odoo历史 1.2. ERPⅡ ...
- Odoo免费开源信息化平台满足所有企业应用场景与需求
本文节选 Odoo亚太金牌服务·开源智造 老杨 所编写的<免费开源企业信息化快速开发平台·Odoo14开发指南(第四版)>第一章企业信息化首选开发平台Odoo介绍篇的节选内容,本书籍持续创 ...
- [精]Odoo 8.0深入浅出开发教程-模块开发基础
參考资料点击这里. 构建Odoo模块 模块组成 业务对象 业务对象声明为Python类, 由Odoo自己主动加载. 数据文件 XML或CSV文件格式, 在当中声明了元数据(视图或工作流).配置数据(模 ...
最新文章
- PurgeComm()函数_清空缓冲区 收藏
- Visual C#3.0新特性概览
- kernelbasedll下载_kernel32.dll
- WCF+AJAX最佳实践
- 专访 | 阿里前辈李智慧:如何培养架构思维,我把20年的架构经讲给你听
- win10桌面简洁化(自定义鼠标右键菜单)
- 云服务器如何发送邮件
- 阿里云的yum源配置
- spark学习9:sparkStreaming
- APP打包后上传遇到ERROR ITMS-90096解决办法
- 金属,还是Disturbed的好。
- node.js 基础(含mongodb,express,express-art-template)
- 如何有效减少全局变量的使用
- 诺基亚 索爱 低端手机及智能手机 与 QQ邮箱或MyTT 通讯录同步 介绍
- 《计算机网络——自顶向下方法》学习笔记——网络层:数据平面
- 我们不再是冷暖自知的个体
- QT界面树形浏览与界面切换简单设计
- AI模型看看视频,就学会了玩《我的世界》:砍树、造箱子、制作石镐样样不差...
- box-shadow的使用
- protobuf 自定义extend
热门文章
- EasyRecovery易恢复文件数据恢复软件详解介绍安装
- 错误报告函数:strerror和perror
- java webservice 500_Webservice调用返回错误500
- 第十章 DirectX 绘制简单场景,地形,天空盒和跟随摄像机(上)
- js小游戏之锅打灰太狼
- qcom内存大小配置及调频测试
- u盘无法格式化不在计算机中,u盘被写保护无法格式化怎么办 u盘无法格式化原因及解决...
- Micropython——使用PS2手柄实现远程遥控
- Python怎么注册和调用大漠插件
- ZXP个人美工作品---->