钉钉开发文档

企业接入流程

更新时间: 2019-2-15

本文档将帮助企业内部开发者快速对接钉钉【审批】,具体步骤如下:

image

步骤一:OA管理后台创建审批表单,该表单用于承载开发者发起的审批实例

1、登录OA管理后台,选择【工作台】,点击【审批】。

image

2、开发者可以在审批管理页面新建并编辑审批表单,也可以对编辑审批分组和导出审批数据。这里我们选择点击【创建新审批】,或者点击【编辑表单】对一个已有的审批进行编辑。

image.png

3、进图表单设计器页面,把控件拖入到表单中,目前如红框显示,只支持四种控件,分别是【单行输入框】、【多行输入框】、【图片】、【明细】,其中【明细】控件里可以添加另外的三种控件。假如审批表单中使用了其他控件(如附件、日期等),在调用发起审批实例的接口时会报错。最后,别忘了点击【保存】。注:process_code就在截图上方的url中,调用发起审批实例接口的时候会用到。


image.png

步骤二:开发者准备接口参数

可以在自己的erp系统或E应用里开发一个自己的审批表单页面(非必须),用于让用户来填写表单信息发起审批。这里的表单控件名需要一一对应开发者在【步骤一】中创建的钉钉【审批】表单控件。如下图中开发者自己编写的审批表单页面,使用了【行程明细】、【交通工具】、【出差事由】、【图片】四个表单名称,与步骤一图中的表单名称一一对应。


image.png

步骤三:开发者调用发起审批实例接口

具体参数,请参考表单参数详解。

步骤四:开发者监听审批事件的回调

什么是回调
回调是开发者在钉钉开放平台注册一个http接口,并订阅相关的事件,当事件发生时,钉钉这边会主动调用开发者注册的http接口,返回对应的事件信息。

你是否需要订阅审批事件的回调
假如您的E应用需要根据审批的结果做进一步的操作,那么您可以订阅下审批的回调(目前审批的回调已经全量开放,不管您是通过接口发起的审批,还是在钉钉客户端上的审批应用里发起的审批,都会产生回调)。订阅以后,您可以知道每个审批人的审批结果,还可以知道审批实例的最终结果。

具体步骤:参考回调相关文档

  1. 创建一个http接口用于接收回调
  2. 调用注册回调接口,该接口需要四个参数:call_back_tag,token,aes_key,url。call_back_tag使用bpms_task_change bpms_instance_change,表示审批任务的回调和审批实例的回调。token和aes_key使用步骤1的http接口中填写的token和aes_key。url使用步骤1生成的http接口url。
  3. 按照审批回调的内容,实现不同的业务逻辑。比如,当收到审批通过的回调时,可以发送工作通知消息给相关的员工

表单参数详解

表单参数采用key,value的形式,其中key是每个控件对应的名字,value可以是普通字符串,也可以是json字符串,具体来说:
1、输入框类型:value是普通字符串
2、图片类型:value是json数组,每个数组元素必须为图片的url,如

["http://url1","http://url2","http://url3"]

我们建议,使用上传图片的jsapi 来生成图片url,这样能在审批详情中展现出小图和大图。
3、明细类型:明细控件内部也只能由输入框控件和图片控件组成,它的value格式如下:

[
    [
        {"name":"开始时间","value":"2018-09-01"},
        {"name":"结束时间","value":"2018-09-03"}
    ],
    [
       {"name":"开始时间","value":"2018-09-05"},
       {"name":"结束时间","value":"2018-09-07"}
    ]
]

对于在【步骤一】中我们创建的表单,对应的发起审批实例时需要传的表单参数(java例子)。

List<FormComponentValueVo> list2 = new ArrayList<FormComponentValueVo>();
FormComponentValueVo obj3 = new FormComponentValueVo();
obj3.setName("交通工具");
obj3.setValue("飞机");
 
FormComponentValueVo obj4 = new FormComponentValueVo();
obj4.setName("出差事由");
obj4.setValue("开会");
 
FormComponentValueVo pic = new FormComponentValueVo();
pic.setName("图片");
pic.setValue("[\"http://aaa/media\"]");
 
FormComponentValueVo mingxi2 = new FormComponentValueVo();
mingxi2.setName("开始时间");
mingxi2.setValue("2018-09-01");
 
FormComponentValueVo mingxi3 = new FormComponentValueVo();
mingxi3.setName("图片");
mingxi3.setValue("[\"http://aaa/media\"]");
 
FormComponentValueVo obj7 = new FormComponentValueVo();
obj7.setName("明细");
obj7.setValue(JSON.toJSONString(Arrays.asList(Arrays.asList(mingxi2, mingxi3))));
 
list2.add(obj3);
list2.add(obj4);
list2.add(pic);
list2.add(obj7);

以上代码,每个setName里面的值就是审批表单里左侧的标签值,每个setValue里的值就是用户在填写审批表单时输入的值。
组装明细的时候,value是数组套数组的格式,推荐使用json转化。

以上内容是否对您有帮助:
在文档使用中是否遇到以下问题(多选):
  • 内容错误
  • 更新不及时
  • 链接错误
  • 缺少代码/图片示例
  • 太简单/步骤待完善
手机号
更多建议
提交成功,感谢您的反馈!