odoo10学习笔记六:工作流、安全机制、向导

 

转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189289.html 

 

一:工作流

 工作流是与业务流程相关联的模型,可用于跟踪工序的动态演变过程。

工作流、活动(节点或操作)、转换通常在xml里以record定义。在工作流中处理的单个流程称为工作项。

与模型关联的工作流是在创建模型记录时生成的,工作流定义之前创建的模型记录是没有相应的工作流的。

工作流的一般开发流程:

1:新建workflow.xml视图文件,并在manifest中注册。

2:模型内定义工作流状态以及节点点击事件:用下拉列表保存节点状态,点击相应节点就转换为相应状态

复制代码
复制代码
wkf = fields.Selection([
        ('节点值', "节点显示内容"),
        ('节点值', "显示内容"),
        ('节点值', "显示内容"),
    ], default='默认节点值')
    #函数:改变工作流节点为XX节点值
    @api.multi
    def action_节点值(self):
        self.wkf = '节点值'
.....
复制代码
复制代码

3:在工作流所在模型的form表单头定义工作流按钮以及工作流状态条,显示工作流:

odoo中位置:

复制代码
复制代码
#views.xml
......
复制代码
复制代码

4:在1中新建的workflow.xml文件中,定义工作流,定义3中form表单头的工作流按钮点击事件,定义工作流转换。

分为:定义工作流——定义按钮点击事件(根据前面form表单中button名作为信号,调用模型中的点击函数)——定义节点间的转换(起点/终点,分别引用前面定义的节点点击事件id)

复制代码
复制代码

    
        
            
                
                
                    wfk.
                    数据模型
                    True
                
                
                
                
                    
                    
                    
                    function
                    数据模型中起点状态的点击函数()
                
                
                
                     
                    
                    function
                    节点函数()
                
                
                
                    
                    
                    function
                    
                    节点点击函数()
                
              

                
                
                    
                    
                    btn_节点2(在另一个视图的form表单定义的工作流按钮id)
                    一个条件或一个boolean字段
                
        
            
        
    
复制代码
复制代码

 

5:也可以定义工作流根据某些值而自动转换:


    
    
    条件表达式

 6:也可以使用服务器动作来定义节点转换函数,把   起点——>终点   简化为   ?——>终点  的转换:

复制代码
复制代码

    
    
    
model.search([domain表达式,过滤出需要变化工作流的记录])]).action_节点值()//节点按钮点击事件
    



    
    
    
    dummy
    
复制代码
复制代码

 

二:安全机制

Odoo对数据的访问权限管理有两种机制:模型访问权限管理(access rule)、记录规则管理(record rule)。记录规则管理是对模型访问权限管理的细化。

模型权限访问管理:模型级的权限控制,该模型的所有记录,对于群组内用户(如无定义,则对所有用户)的读写改删权限控制。

access rule是通过security文件夹下的ir.model.access.csv文件来控制的:

这个文件第一行指明了需要控制的内容:

id,name,model_id,group_id,perm_read,perm_write,perm_create,perm_unlink

 然后,在下面各行,对数据模型进行访问权限控制即可,主要有:

id:一般格式为 access_模型名

name:模型名,把 . 换成 _

model_id:模型id,模型名前加 model_ 即可。如: model_todo_task

group_id:群组id,访问这个模型的用户属于那个群组。如果不确定,可以不写

perm_read,write,create,unlink:用户对这个数据模型的读/写/新建/删除 操作权限。

一个例子:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_todo_task,todo.task,model_todo_task,,1,1,1,1

 

记录控制:记录级别的权限控制,可以为某模型的记录定义权限条件,对于某群组中(如无指定,则所有用户)符合过滤条件的用户,赋予模型记录的读写改删权限。

基于记录的权限可以控制指定模型的实例对象(数据纪录)的访问权限:

复制代码
复制代码
//设置为1,则更新模块不会更新该文件。
[domain表达式:表示该权限控制生效的条件]
复制代码
复制代码

 

三:向导

向导的视图位置:

odoo10学习笔记六:工作流、安全机制、向导_第1张图片

定义好的向导表单视图示例:

odoo10学习笔记六:工作流、安全机制、向导_第2张图片

一个向导是一个继承自TransientModel的模型,TransientModel又继承自model

向导的主要作用:可以通过many2one、many2many关联其他模型纪录,从而可以在向导表单视图中操作其它模型的数据。

1:创建向导模型

复制代码
复制代码
class 向导名(models.TransientModel):
   _name = '模块.模型名'
   var = fields.Many2one('被关联字段', string="", required=True)
   vars = fields.Many2many('被关联字段', string="")

def 对上面字段的操作函数():
......
复制代码
复制代码

2:在视图层定义向导的form表单

复制代码
复制代码
 
            wizard.form
            
            
                
//位于form表单底部的按钮
复制代码
复制代码

3:在视图层定义向导启动:在新窗口启动向导(即:在新窗口打开向导form视图)

向导可以通过ir.actions.act_window记录来启动,将target字段值设置为new即可。

src_model属性指定某个模型的向导操作可用

复制代码
复制代码
复制代码
复制代码

向导使用的是常规视图,我们可以给它的按钮添加special="cancel"属性来实现不保存任何数据的情况下关闭向导。

 

转载于:https://www.cnblogs.com/ygj0930/p/11189289.html

你可能感兴趣的:(ui)