【Odoo 模块开发】(一)Wokflow 教程

工作流概念:“ 工作流,指的是一系列相互衔接、自动进行的业务活动或任务。” -百度百科
我的个人理解,工作流就是执行一个任务的一系列过程(步骤),每个步骤可能需要设计不同“模块”,而且步骤之间又有着各种各样的联系。以企业的采购为例:采购过程包括 采购申请采购批准采购订单审核采购订单→…… ;其中采购申请可能是A部门申请,批准可能是B部门批准……这就是一个简单的工作流。

  • 本文将使用Odoo框架,开发一个简单的workflow模块,代码解释将嵌套在源码中

文件结构

【Odoo 模块开发】(一)Wokflow 教程_第1张图片
文件结构

Model创建(models.py)

  • 注意在init.py 文件中导入你的“ models.py ”模块
  • Odoo 框架中的代码跟平时开发时代码规范有些许出入
  • 关于@api.one 链接
# -*- coding: utf-8 -*-

from openerp import models, fields, api


class workflow_demo(models.Model):
    """
    Author  : SXY
    Date    : 2016/3/24 9:28
    Version : 1.0
    """
    _name = 'workflow_demo.workflow_demo'

    WORKFLOW_STATE_SELECTION = [
        ('init', '初始'),
        ('start', '开始'),
        ('confirm', '确认'),
        ('complete', '完成'),
    ]

    name = fields.Char(string="姓名")
    state = fields.Selection(WORKFLOW_STATE_SELECTION, default='init', string="状态", readonly=True)

    # 注意使用新版本定义方法是,需要添加装饰器@api.one/@api.multi
    # 将state 置于开始状态
    @api.one
    def do_start(self):
        print "------------self.state = 'start'"
        self.state = 'start'
        return True

    # 将state 置于确认状态
    @api.one
    def do_confirm(self):
        print "------------self.state = 'confirm'"
        self.state = 'confirm'
        return True

    # 将state 置于完成状态
    @api.one
    def do_complete(self):
        print "------------self.state = 'complete'"
        self.state = 'complete'
        return True

View 创建 (workflow_view.xml)

  • 注意,关于field,官网(链接)(参见lists中的field)有如下要求:要求同一个name只能使用一次。如 中这个“state”只能使用一次,如果多次使用,那么只显示最后使用这个"state"的标签


    
        
        
            Workflow
            form
            workflow_demo.workflow_demo
            
                
workflow_demo tree workflow_demo.workflow_demo Workflow ir.actions.act_window workflow_demo.workflow_demo form tree,form

创建Workflow单

Workflow 创建(workflow_demo.xml)

  • workflow 介绍
  • Workflow transitions 中的group 属性可以进行操作权限控制


    
        
        
        
        
            workflow_demo
            
            workflow_demo.workflow_demo
            
            True
        

        
        
            
            
            workflow.demo.activity.one
            
            dummy
            
            True
        

        
            
            workflow.demo.activity.two
            
            function
            
            do_start()
        

        
            
            workflow.demo.activity.three
            function
            do_confirm()
        

        
            
            workflow.demo.activity.four
            function
            do_complete()
        

        
            
            workflow.temp.activity.five
            dummy
            True
        

        
        
            
            
            
            
            
            state == 'init'
            
            workflow_start
        

        
            
            
            state == 'start'
            workflow_confirm
        

        
            
            
            state == 'confirm'
            workflow_end
        

    

xml声明(openerp.py)

部分代码:

'data': [
        # 声明workflow的相关xml
        'views/workflow_view.xml',
        'views/workflow_demo.xml',
    ],

切记添加完workflow之后,一定要在此做一下声明,好让模块加载过程中能够对workflow进行实例化。
到此,workflow 已经基本实现

测试

  • 安装模块
  • 测试
【Odoo 模块开发】(一)Wokflow 教程_第2张图片
test_one.png
【Odoo 模块开发】(一)Wokflow 教程_第3张图片
test_two.png

小结

workflow 该功能的开发要注意,workflow、workflow_activity、workflow_transition三者的关系
Odoo 相比较于现在的workflow声明方式,还有另外一种简单的方式,这种方式要在下一章节给大家介绍。
源码地址 http://git.oschina.net/tobe/OdooDemo (workflow_demo)

你可能感兴趣的:(【Odoo 模块开发】(一)Wokflow 教程)