转载请注明原文地址: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工作流的更多相关文章

  1. odoo 工作流

    odoo工作流 介绍 新版本的odoo开始减少workflow的使用,推荐使用workflow-ish的方式来处理工作流过程 很多模块中还是使用到工作流,这里我记录一个简单的实例,欢迎大家给出建议. ...

  2. (09)odoo工作流

    --------------修订时间14:54 2016-09-18 星期日21:59 2016-06-12 星期日10:06 2016-02-24 星期三17:14 2016-01-29 星期五-- ...

  3. odoo开发笔记--工作流

    虽然odoo10里边取消了工作流 Odoo Workflow http://www.jeffzhang.cn/Odoo-Workflow-Notes/

  4. odoo 在原有工作流中添加审批流

    odoo 在原有工作流中添加审批流 步骤: 1.加入所需的工作流节点以及相连的线(即所添加的审批流),代码如下: <?xml version="1.0" encoding=& ...

  5. 【转】Odoo开发之:工作流 workflow

    在OpenERP中,工作流是管理一组“所做的事情”(与一些数据模型的记录关联)的人为现象.工作流提供了高级别的方式来组织记录要上做的事情. 具体地说,工作流是一个定向的路径,这里节点称为活动并且弧线称 ...

  6. Odoo Web Service API

    来自 Odoo Web服务暴露出相关的服务,路由分别是 /xmlrpc/ /xmlrpc/2/ /jsonrpc 根据 services 调用 后端对应服务的 方法method [定义 openerp ...

  7. odoo模块

    odoo模块包括 业务对象,web控制器,数据文件,前面2个是Python模块,而数据文件则是odoo特有的文件,例如,odoo数据文件,web数据.这些数据文件在 __odoo__.py 进行定义, ...

  8. 第三章 Odoo基本设置

    登录 正常访问http://localhost:8069后,登录的界面如下: 这是Odoo默认的认证方式,也是我们最常见最熟悉的认证方式,7.0以前,数据库中的密码都是以明文方式存储,可以很轻松地在r ...

  9. Odoo 开发者模式

    这里我们以Odoo V9介绍下Odoo的开发者模式: 进入开发者模式: 登录odoo系统后,点击右上角登陆账号下拉菜单,选择About,然后在弹出菜单里点击Activate the developer ...

随机推荐

  1. 撩课-Java每天5道面试题第14天

    101.请解释下 ORM? 对象关系映射(Object Relational Mapping)模式 是一种为了解决面向对象与关系数据库 存在的互不匹配的现象的技术. 简单来说, ORM是通过使用描述对 ...

  2. 《JavaWeb从入门到改行》很好的复习资料: SQL语句到底怎么写 ?

    本文用到的数据库如下: CREATE DATABASE exam; /创建部门表/ CREATE TABLE dept( deptno INT PRIMARY KEY, dname ), loc ) ...

  3. 03.CSS选择器-->交集并集选择器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Laravel基本使用

    laravel一.简介二.运行环境要求 1.php 版本>=5.5.9 2.Mcrypt PHP扩展 php的加密扩展,提供多种加密算法 3.openssl扩展 对传输的数据进行加密 4.mbs ...

  5. Django—Form两种解决表单数据无法动态刷新的方法

    一.无法动态更新数据的实例 1. 如下,数据库中创建了班级表和教师表,两张表的对应关系为“多对多” from django.db import models class Classes(models. ...

  6. js 基于可视区域 创建展示区域对应的经纬度二维数组

    本篇文章主要是分享下基于地图区域创建经纬度二维数组,需要的朋友可以过来参考下 接上个文章, 基于 地图区域,算出这个展示区域对应的点. 经纬度的变化关系:  XY页面展示上, 从左到右维度是增加 如: ...

  7. 【转】PHP如何快速读取大文件

    在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...

  8. Linux常用命令(三)————创建+删除+设置权限

    1. mkdir mkdir [选项] DirName 命令中的[选项]: -m    用于对新建目录设置存取权限,也可以用 chmod 命令进行设置. -p     需要时创建上层文件夹(或目录), ...

  9. 中间件(WAS、WMQ)运维 9个常见难点解析

    本文由社区中间件达人wangxuefeng266.ayy216226分享整理,包括WAS.WMQ在安装.巡检.监控.优化过程中的常见难点. 安装 1.was 负载均衡的机制的粘连性,was负载均衡异常 ...

  10. sql查询学习和实践点滴积累

    https://blog.rjmetrics.com/2008/10/28/correlated-subqueries-in-mysql/ http://www.mysqltutorial.org/m ...