Odoo工作流
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281264.html
一:工作流
工作流是与业务流程相关联的模型,可用于跟踪工序的动态演变过程。
工作流、活动(节点或操作)、转换 通常在xml里以record定义。
在工作流中处理的单个流程称为工作项。
二:工作流的开发流程
1:新建workflow.xml视图文件,并在manifest中注册。
2:模型内定义工作流状态以及节点点击事件:用下拉列表保存节点状态,点击相应节点就转换为相应状态
wkf = fields.Selection([ ('节点值', "节点显示内容"), ('节点值', "显示内容"), ('节点值', "显示内容"), ], default='默认节点值') #函数:改变工作流节点为XX节点值 @api.multi def action_节点值(self): self.wkf = '节点值' .....
3:在工作流所在模型的form表单头定义工作流按钮以及工作流状态条,显示工作流:
工作流在视图中的位置:
#views.xml <form string="模型的form表单"> <header> <button name="改变工作流状态所调用的函数名" type="workflow" states="在什么状态下显示该按钮" string="(上图左侧显示按钮显示文字)" class="oe_highlight"/> <field name="state(数据模型中的状态下拉列表字段)" widget="statusbar" statusbar_visible="draft,confirmed,accepted,rejected(状态列表中可以在状态条显示的部分)"/> </header> ...... </form>
4:在1中新建的workflow.xml文件中,定义工作流,定义3中form表单头的工作流按钮点击事件,定义工作流转换。
分为:定义工作流——定义按钮点击事件(根据前面form表单中button名作为信号,调用模型中的点击函数)——定义节点间的转换(起点/终点,分别引用前面定义的节点点击事件id)
<odoo> <data> <odoo> <data> <!--定义工作流--> <record model="workflow" id="wkf_工作流id"> <field name="name"></field> <field name="osv">数据模型</field> <field name="on_create">True</field> </record> <!--定义按钮的点击事件--> <!--工作流起点--> <record model="workflow.activity" id="act_"> <field name="name"></field> <field name="wkf_id" ref="工作流id"/> <field name="flow_start" eval="True"/> <field name="kind">function</field> <field name="action">数据模型中起点状态的点击函数()</field> </record> <!--定义中间点--> <record model="workflow.activity" id="act_"> <field name="name"> <field> <field name="wkf_id" ref="wkf_工作流id"/> <field name="kind">function</field> <field name="action">节点函数()</field> </record> <!--工作流终点--> <record model="workflow.activity" id="act_"> <field name="name"></field> <field name="wkf_id" ref="wkf_"/> <field name="kind">function</field> <field name="flow_stop" eval="True"/> <field name="action">节点点击函数()</field> </record> <!--定义工作流转换动作--> <record model="workflow.transition" id="模块名_节点1_to_节点2"> <field name="act_from" ref="act_上面节点1id"/> <field name="act_to" ref="act_节点2 id"/> <field name="signal">btn_节点2(在另一个视图的form表单定义的工作流按钮id)</field> <field name="condition">一个条件或一个boolean字段</field> </record> </data> </odoo> </data> </odoo>
5:也可以定义工作流根据某些值而自动转换:
<record model="workflow.transition" id="session_auto_"> <field name="act_from" ref=""/> <field name="act_to" ref=""/> <field name="condition">条件表达式</field> </record>
6:也可以使用服务器动作来定义节点转换函数,把 起点——>终点 简化为 ?——>终点 的转换:
<!--1:定义一个服务器动作--> <record model="ir.actions.server" id="set_session_to_"> <field name="name"></field> <field name="model_id" ref=""/> <field name="code"> model.search([domain表达式,过滤出需要变化工作流的记录])]).action_节点值()//节点按钮点击事件 </field> </record> <!--2:定义一个工作流节点,并指定其点击动作为上面的服务器动作--> <record model="workflow.activity" id="节点值"> <field name="name"></field> <field name="wkf_id" ref="工作流"/> <field name="flow_start" eval="True"/> <field name="kind">dummy</field> <field name="action_id" ref="set_session_to_节点值(引用上面的定义好的响应)"/> </record>
Odoo工作流的更多相关文章
- odoo 工作流
odoo工作流 介绍 新版本的odoo开始减少workflow的使用,推荐使用workflow-ish的方式来处理工作流过程 很多模块中还是使用到工作流,这里我记录一个简单的实例,欢迎大家给出建议. ...
- (09)odoo工作流
--------------修订时间14:54 2016-09-18 星期日21:59 2016-06-12 星期日10:06 2016-02-24 星期三17:14 2016-01-29 星期五-- ...
- odoo开发笔记--工作流
虽然odoo10里边取消了工作流 Odoo Workflow http://www.jeffzhang.cn/Odoo-Workflow-Notes/
- odoo 在原有工作流中添加审批流
odoo 在原有工作流中添加审批流 步骤: 1.加入所需的工作流节点以及相连的线(即所添加的审批流),代码如下: <?xml version="1.0" encoding=& ...
- 【转】Odoo开发之:工作流 workflow
在OpenERP中,工作流是管理一组“所做的事情”(与一些数据模型的记录关联)的人为现象.工作流提供了高级别的方式来组织记录要上做的事情. 具体地说,工作流是一个定向的路径,这里节点称为活动并且弧线称 ...
- Odoo Web Service API
来自 Odoo Web服务暴露出相关的服务,路由分别是 /xmlrpc/ /xmlrpc/2/ /jsonrpc 根据 services 调用 后端对应服务的 方法method [定义 openerp ...
- odoo模块
odoo模块包括 业务对象,web控制器,数据文件,前面2个是Python模块,而数据文件则是odoo特有的文件,例如,odoo数据文件,web数据.这些数据文件在 __odoo__.py 进行定义, ...
- 第三章 Odoo基本设置
登录 正常访问http://localhost:8069后,登录的界面如下: 这是Odoo默认的认证方式,也是我们最常见最熟悉的认证方式,7.0以前,数据库中的密码都是以明文方式存储,可以很轻松地在r ...
- Odoo 开发者模式
这里我们以Odoo V9介绍下Odoo的开发者模式: 进入开发者模式: 登录odoo系统后,点击右上角登陆账号下拉菜单,选择About,然后在弹出菜单里点击Activate the developer ...
随机推荐
- 删除弹出提示框_MVC
<td> @Ajax.ActionLink(@shared.Delete, "DeleteServicetag", new { id = item.ID }, new ...
- FisherYates费雪耶兹随机置乱算法
public class FisherYates { public static void main(String[] args) { int[] arr = new int[10]; // 初始有序 ...
- 【SSH网上商城项目实战24】Struts2中如何处理多个Model请求
转自: https://blog.csdn.net/eson_15/article/details/51465067 1. 问题的提出 Struts2中如果实现了ModelDriven<m ...
- Java 运行时数据区域
1. 整体分类 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 运行时常量池 直接内存 2. 程序计数器 每个线程一个计数器,线程的私有内存 指向的是字节码的内存地址? 如果线程执行的是 Ja ...
- PowerDesigner16使用方法
网上下载一个破解版的PowerDesigner https://www.cnblogs.com/longshiyVip/p/4643871.html 1.新建一个Physical Data Model ...
- Sublime Text3之安裝Emmet及使用技巧
首先准备工作: 如果你的Sublime Text3没有Package Control组件先看一下这里,如果以安装请忽略: 1.按Ctrl+`调出sublime text的console 2.粘贴以下代 ...
- drupal7在page中直接输出区块
//正规方法:$block = block_load('block', '1');// block_load($module, $delta) block.module 行 714 $output = ...
- Kali 防火墙配置
Kali操作系统安装时默认已经安装了"iptables",配置前先检查有没有安装,命令如下:iptables -L显示如下(图1),则表示已经安装了,如果没有安装,使用命令:apt ...
- 手动替换WORDPRESS的GOOGLE字体等加速【非插件】
手动替换WORDPRESS的GOOGLE字体等加速[非插件] 179 看过 | 2015年3月4日 | Linux, 随意Coding | 暂无评论 查找需要替换的地方 Linux下,在网站文件夹中, ...
- 检查 NaN 数据值 (C/C++/Python 实现)
NaN 是 Not a Number 的缩写.它是一个数值类型值,通常在浮点计算中,表示未定义或无法表示的值.而且,不能直接使用相等运算符 (==) 检查 NaN.由于在程序中,nan == nan ...