泛微工作流集成指南

需要集成 泛微OA工作流的模块, 必须依赖 weaver sun_base 2个模块, Weaver模块实现了工作流数据组装, 发送, 以及工作流审批结果回调接口, sun_base 实现了 组织架构元素在 泛微系统的内码ID查询功能.

   

1, 流程定义

   

泛微工作流模块 维护工作流 基本信息

   

需要 准备的资料, 包括

字段

显示名称

说明

workflowName

流程名称

流程名称

workflowId

流程ID

泛微工作流流程ID, 泛微指定的

model_id

模型

发起 工作流流程的odoo业务模型,

callback_method

回调方法名

odoo业务模型实现的回调方法, 默认为 callback_method.

factory_id

工厂

流程适用的 工厂

company_id

公司

流程适用公司, 自动跟随工厂纠正

   

流程定义, 也可以用data 文件进行准备

   

   

   

2, 在业务 发送 工作流请求

   

第一步, 继承 weaver.workflow.request 模型, 扩展 源单据 字段, 业务模型加入进去, 例如

class WeaverWorkflowRequest(models.Model):

_inherit = 'weaver.workflow.request'

   

document_id = fields.Reference(

selection_add=[

('quality.disposal', u'不良处置'),

]

)

   

第二步, 建立 weaver.workflow.request.info 对象, 此对象为 工作流请求的基本数据

   

   

此对象的 数据 包括

字段

显示名称

说明

creator

创建人

创建人, odoo用户

creatorId

创建人id

创建人在泛微系统的 内码ID [ 可以通过 employee.get_employee_weaver_id() 得到 ]

requestLevel

紧急程度

流程的紧急程度 [ 0,1,2 依次优先级递增]

requestName

流程名称

流程的名称, 按照 泛微给出的要求拼装

workflowBaseInfo

流程基础信息

流程的基本信息, 流程定义阶段 建立的 泛微工作流流程, 可以 使用 company_id.workflow_ids.filtered( lambda x: x.model_id.model == '业务魔模型名' ) 获取

   

例如

workflow_request_info = self.env['weaver.workflow.request.info'].create(

{

"creator": self.create_uid.id,

"creatorId": employee.get_employee_weaver_id(),

"requestLevel": '0',

"requestName": requestName,

"workflowBaseInfo": workflow_base_info.id,

}

)

   

第三步, 建立 weaver.workflow.request 对象

   

此对象在创建时, 主要提供以下 数据

字段

显示名称

说明

request_info

流程信息

第二步 建立的 对象

document_id

业务源单据对象

业务单据, fileds.Reference 格式组装

   

例如

workflow_request = self.env['weaver.workflow.request'].create(

{

"request_info": workflow_request_info.id,

"document_id": '%s,%s' % (self._name, self.id)

}

)

   

第四步, 调用 weaver.workflow.request 对象的方法create_workflow_request( ) 将封装好的业务数据作为 参数 发送 工作流请求

   

工作流的内容 "业务表单", 通常, 表单 分为2个部分, 表头, 表体, 因此, create_workflow_request( ) 需要传递的 参数以 json 格式封装, 它包含 2部分, 一部分是 表头, key workflowMainTableInfo, 另外一部分是 表体, 它的内容应该是 list, key workflowDetailTableInfos

   

例如

data = {

'workflowMainTableInfo': order_data,

'workflowDetailTableInfos': order_line_data

}

   

   

   

每一项数据的 拼装, 请遵照 具体泛微工作流表单的要求

   

create_workflow_request( ) 创建工作流成功时, 将会把 "泛微工作流实例ID" 保存到 weaver.workflow.request 对象, 返回 True , 否则返回 False

   

   

3, 在业务单据实现 工作流 回调 方法

   

Weaver模块实现了 统一的回调http 接口, 网址是 http://odoo.url/weaver/notify, 泛微工作流处理完成的时候, 调用此接口, 将流程数据按以下格式以POST方法提交.

   

POST数据结构如下:

{

'workflow_instance_id' : 泛微工作流流程实例ID

   

'data': {

   

   

}

   

}

泛微与业务功能开发者约定的业务数据, 封装在 data部分

   

业务功能实现者, 必须在 自己的业务模块实现 流程定义里面约定的 callback_method 方法. 如果不存在此方法, 则抛出异常消息 [例如, 业务单据" 不良处置 "没有实现callback_method()方法! ], callback_method方法将对 泛微回传的 data 进行处理.

   

   

   

4, 问题排查

   

每一个工作流请求, 都可以 泛微工作流请求列表查看

状态条, 显示了 工作流请求的状态

状态

说明

draft

工作流请求创建成功, 尚未发送给泛微

pending

工作流在泛微创建成功, 流程进行中

done

工作流在泛微创中已完成, 流程已结束

error

工作流请求创建成功, 发送泛微失败

canceled

工作流请求取消

   

   

jeffery 2024年4月23日
标签
存档
Work Center 性能指标 - OEE