审批流程引擎

[TOC]

概述

企业微信向开发者提供审批流程引擎,此特性可将审批流程相关功能嵌入到自建应用中。
开发者可在自建应用中直接调用接口发起审批申请,系统根据审批流程自动通知相关人员进行审批操作。
提交申请后审批流程的每次状态变化,都会通知开发者,可按需进行拓展开发。

此套接口在自建应用中闭环,与“企业微信审批应用”相关接口无关。

自建应用审批流程引擎示意图

1.创建自建应用审批模板

开发者可在“管理后台-自建应用-审批接口”中,创建审批模板。

功能说明:

参数 说明
模板ID 用于审批申请类型区分。在后续发起审批申请时,将申请和审批流程进行关联。
审批流程 审批流程相关配置。后续以此模板ID发起的审批申请,都将按照设置的流程进行通知和流转。

2.自建应用发起审批

通过JS-SDK,可在自建应用中发起审批。查看JS-SDK调用详细说明
具体步骤:
1.通过config接口注入权限验证配置。查看
2.通过agentConfig注入应用的权限。查看
3.调用审批流程引擎JS-API(如下文请求示例)。

注:企业微信客户端2.5.0及以上版本支持。

请求示例:

wx.invoke('thirdPartyOpenPage', {
    "oaType": "10001",// String
    "templateId": "46af67a118a6ebf000002",// String
    "thirdNo": "thirdNo",// String
    "extData": {
        'fieldList': [{
            'title': '采购类型',
            'type': 'text',
            'value': '市场活动',
        },
        {
            'title': '订单链接',
            'type': 'link',
            'value': 'https://work.weixin.qq.com',
        }],
    }
},
function(res) {
    // 输出接口的回调信息
    console.log(res);
});

参数说明:

参数 必须 说明
oaType 操作类型,目前支持:10001-发起审批;10002-查看审批详情。
templateId 发起审批的模板ID,在自建应用-审批接口中创建模板可获取。
thirdNo 审批单号,由开发者自行定义,不可重复。
extData 详情数据,Json格式,用于审批详情页信息展示。

extData数据说明:
extData在发起时由开发者传入,其中数据将全部展示在审批申请中:
1.开发者可利用此特性,在发起审批时,传入需要申请人、审批人、抄送人看到的信息;
2.若需用户填写数据,可在自行使用表单收集,并传入extData中,用于展示。

{  
    "extData": {
        'fieldList': [
            {
                'title': '采购类型',
                'type': 'text',
                'value': '市场活动',
            },
            {
                'title': '采购说明',
                'type': 'text',
                'value': '购买个人办公电脑',
            },
            {
                'title': '采购金额',
                'type': 'text',
                'value': '4839.00元',
            },
            {
                'title': '申请时间',
                'type': 'text',
                'value': '2018/06/20',
            },
            {
                'title': '订单链接',
                'type': 'link',        // link类型,用于在审批详情页展示第三方订单跳转地址
                'value': 'https://www.qq.com',
            },
        ],

    },
}

参数说明:

参数 必须 说明
title 字段标题,将会在审批详情页中展示。
type 字段类型,目前支持:text-文本;link:链接。link仅展示在审批详情页。
value 字段值,将会在审批详情页中展示。

错误说明:

错误提示 说明
已存在相同的审批编号 oaType为10001时,传入的thirdNo已经被其他审批单占用。
审批申请不存在 oaType为10002时,在历史记录中,传入的thirdNo对应的审批单不存在。
审批模板ID不正确 调用接口时传入了错误的templateId
应用ID不正确 使用了错误的 agentId

3.自建应用审批状态变化通知回调

企业可以在管理后台-自建应用-设置API接收中,设置并开启审批状态通知事件。
开启后,自建应用每一个审批申请的审批状态变化,都会通知给开发者。查看事件回调详细说明

回调通知示例:

<xml>
 <ToUserName>wwd08c8e7c775abaaa</ToUserName>  
  <FromUserName>sys</FromUserName>  
  <CreateTime>1527838022</CreateTime>  
  <MsgType>event</MsgType>  
  <Event>open_approval_change</Event>
  <AgentID>1</AgentID>
  <ApprovalInfo> 
    <ThirdNo>201806010001</ThirdNo>  
    <OpenSpName>付款</OpenSpName>  
    <OpenTemplateId>1234567111</OpenTemplateId> 
    <OpenSpStatus>1</OpenSpStatus>  
    <ApplyTime>1527837645</ApplyTime>  
    <ApplyUserName>jackiejjwu</ApplyUserName>  
    <ApplyUserId>WuJunJie</ApplyUserId>  
    <ApplyUserParty>产品部</ApplyUserParty>  
    <ApplyUserImage>http://www.qq.com/xxx.png</ApplyUserImage>  
    <ApprovalNodes> 
      <ApprovalNode> 
        <NodeStatus>1</NodeStatus>  
        <NodeAttr>1</NodeAttr> 
        <NodeType>1</NodeType>  
        <Items> 
          <Item> 
            <ItemName>chauvetxiao</ItemName>  
            <ItemUserid>XiaoWen</ItemUserid> 
            <ItemParty>产品部</ItemParty>  
            <ItemImage>http://www.qq.com/xxx.png</ItemImage>  
            <ItemStatus>1</ItemStatus>  
            <ItemSpeech></ItemSpeech>  
            <ItemOpTime>0</ItemOpTime> 
          </Item> 
        </Items> 
      </ApprovalNode> 
    </ApprovalNodes>  
    <NotifyNodes> 
      <NotifyNode> 
        <ItemName>jinhuiguo</ItemName>  
        <ItemUserid>GuoJinHui</ItemUserid> 
        <ItemParty>行政部</ItemParty>  
        <ItemImage>http://www.qq.com/xxx.png</ItemImage>  
      </NotifyNode> 
    </NotifyNodes> 
    <ApproverStep >0</ApproverStep >  
  </ApprovalInfo> 
</xml>

参数说明:

参数 说明
ToUserName 接收方企业Corpid
FromUserName 发送方:企业微信
CreateTime 消息发送时间
MsgType 消息类型
Event 事件名称:审批状态变化
AgentID 企业应用的id,整型。可在应用的设置页面查看
ApprovalInfo 审批信息
ThirdNo 审批单编号,由开发者在发起申请时自定义
OpenSpName 审批模板名称
OpenTemplateId 审批模板id
OpenSpStatus 申请单当前审批状态:1-审批中;2-已通过;3-已驳回;4-已取消
ApplyTime 提交申请时间
ApplyUserName 提交者姓名
ApplyUserId 提交者userid
ApplyUserParty 提交者所在部门
ApplyUserImage 提交者头像
ApprovalNodes 审批流程信息
ApprovalNode 审批流程信息,可以有多个审批节点
NodeStatus 节点审批操作状态:1-审批中;2-已同意;3-已驳回;4-已转审
NodeAttr 审批节点属性:1-或签;2-会签
NodeType 审批节点类型:1-固定成员;2-标签;3-上级
Items 审批节点信息,当节点为标签或上级时,一个节点可能有多个分支
Item 审批节点分支,当节点为标签或上级时,一个节点可能有多个分支
ItemName 分支审批人姓名
ItemUserid 分支审批人userid
ItemParty 分支审批人所在部门
ItemImage 分支审批人头像
ItemStatus 分支审批审批操作状态:1-审批中;2-已同意;3-已驳回;4-已转审
ItemSpeech 分支审批人审批意见
ItemOpTime 分支审批人操作时间
NotifyNodes 抄送信息,可能有多个抄送人
NotifyNode 抄送人信息
ItemName 抄送人姓名
ItemUserid 抄送人userid
ItemParty 抄送人所在部门
ItemImage 抄送人头像
ApproverStep 当前审批节点:0-第一个审批节点;1-第二个审批节点…以此类推

4.查询自建应用审批单当前状态

开发者也可主动查询审批单的当前审批状态。

请求方式: POST(HTTPS
请求地址: https://qyapi.weixin.qq.com/cgi-bin/corp/getopenapprovaldata?access_token=ACCESS_TOKEN

请求示例:

{
    "thirdNo": "201806010001"
}

参数说明:

参数 必须 说明
access_token 调用接口凭证
thirdNo 开发者发起申请时定义的审批单号

返回结果:

{
    "errcode": 0,
    "errmsg": "ok",
    "data": {
        "ThirdNo": "201806010001",
        "OpenTemplateId": "1234567111",
        "OpenSpName": "付款",
        "OpenSpstatus": 1,
        "ApplyTime": 1527837645,
        "ApplyUsername": "jackiejjwu",
        "ApplyUserParty": "产品部",
        "ApplyUserImage": "http://www.qq.com/xxx.png",
        "ApplyUserId": "WuJunJie",
        "ApprovalNodes": {
            "ApprovalNode": [
                {
                    "NodeStatus": 1,
                    "NodeAttr": 1,
                    "NodeType": 1,
                    "Items": {
                        "Item": [
                            {
                                "ItemName": "chauvetxiao",
                                "ItemParty": "产品部",
                                "ItemImage": "http://www.qq.com/xxx.png",
                                "ItemUserId": "XiaoWen",
                                "ItemStatus": 1,
                                "ItemSpeech": "",
                                "ItemOpTime": 0
                            }
                        ]
                    }
                }
            ]
        },
        "NotifyNodes": {
            "NotifyNode": [
                {
                    "ItemName": "jinhuiguo",
                    "ItemParty": "行政部",
                    "ItemImage": "http://www.qq.com/xxx.png",
                    "ItemUserId": "GuoJinHui"
                }
            ]
        },
        "ApproverStep": 0
    }
}

参数说明:

参数 说明
ToUserName 接收方企业Corpid
FromUserName 发送方:企业微信
CreateTime 消息发送时间
MsgType 消息类型
Event 事件名称:审批状态变化
ApprovalInfo 审批信息
ThirdNo 审批单编号,由开发者在发起申请时自定义
OpenSpName 审批模板名称
OpenTemplateId 审批模板id
OpenSpStatus 申请单当前审批状态:1-审批中;2-已通过;3-已驳回;4-已取消
ApplyTime 提交申请时间
ApplyUserName 提交者姓名
ApplyUserId 提交者userid
ApplyUserParty 提交者所在部门
ApplyUserImage 提交者头像
ApprovalNodes 审批流程信息
ApprovalNode 审批流程信息,可以有多个审批节点
NodeStatus 节点审批操作状态:1-审批中;2-已同意;3-已驳回;4-已转审
NodeAttr 审批节点属性:1-或签;2-会签
NodeType 审批节点类型:1-固定成员;2-标签;3-上级
Items 审批节点信息,当节点为标签或上级时,一个节点可能有多个分支
Item 审批节点分支,当节点为标签或上级时,一个节点可能有多个分支
ItemName 分支审批人姓名
ItemUserid 分支审批人userid
ItemParty 分支审批人所在部门
ItemImage 分支审批人头像
ItemStatus 分支审批审批操作状态:1-审批中;2-已同意;3-已驳回;4-已转审
ItemSpeech 分支审批人审批意见
ItemOpTime 分支审批人操作时间
NotifyNodes 抄送信息,可能有多个抄送人
NotifyNode 抄送人信息
ItemName 抄送人姓名
ItemUserid 抄送人userid
ItemParty 抄送人所在部门
ItemImage 抄送人头像
ApproverStep 当前审批节点:0-第一个审批节点;1-第二个审批节点…以此类推
© 1998 - 2020 Tencent Inc. All Rights Reserved