zoukankan      html  css  js  c++  java
  • 5分钟接入钉钉工作流之模板配置、钉钉接口流程发起

    一、前言

    自从上次 水了一篇 写了一篇5分钟快速接入钉钉实现考勤后过了1个多月的时间,我福乐里又和大家见面了,今天我来聊聊工作流的那些事。

    20200922181331

    想必各位攻城狮都做过或者接触过OA系统,说到OA系统肯定离不开一个技术话题,那就是工作流~实现的手段五花八门,有公司内部自己独立研发、有结合其他三方插件然后编写业务代码实现的、也有直接采购工作流产品的。那我们今天就来聊下钉钉工作流和如何快速接入。我们分为下面几个步骤来逐步讲解。

    1.为什么选择钉钉工作流?

    2.钉钉工作流的优缺点有哪些?

    3.我们如何对接进行实现?

    二、为什么选择钉钉工作流

    这里就不做长篇描述了,既然你与我能够在这里相见,那就说明你在做技术方案的时候也进行了初步筛选,我们选钉钉的想法很简单,有这样一套产品,又有开放平台文档对接,有钉钉的团队不断的版本升级迭代,而我们又不想重复造轮子所以就选择了相对来说大厂的产品,公司的企业沟通也使用的是钉钉,自带移动端优势,所以就选择了钉钉工作流

    三、钉钉工作流的优缺点有哪些?

    优点:

    1.统一用户体验。

    以前:列如OA系统是有很多业务界面的,不同的流程,用户是需要挑战到系统的不同界面的,用户是需要熟悉每个界面和流程的
    现在:统一使用钉钉智能工作流,审批处理流程体验一致
    20200922181502
    2.提升办公效率
    以前:如果企业内部有多个系统,而多个系统中都用到了工作流,则到了审批环节时,都需要审批人进入多个系统进行流程审批,操作毕竟繁琐,且非常容易遗漏,有的系统甚至是没有移动端的,导致审批人进行审批的难度加大
    现在: 在钉钉工作台待办统一入口,直观查看所有企业待处理事项
    20200922181523
    3.对于开发者价值
    1.无需关注工作流事项内部流程状态同步过程,只需关注产品业务场景,还可以节省企业开发成本
    2.自带移动端,让审批人无需用电脑登录即可一秒审批
    说了这么多优点,那没缺点吗?答案肯定是否定的,缺点肯定有,在我们使用的过程中总结了如下几点
    1.审批的流程节点比较死板,必须发起的时候就要计算全部的流程步骤,中途是不能通过接口进行改变流程的
    2.表单因为是钉钉自带,所以如果你想在钉钉上填写表单发起流程的话难度大,因为不能数据联动以及数据关联,所以复杂的表单还是在自己系统发起,钉钉上只做展示
    四、我们如何对接进行实现?

    20200922181544
    首先有2两种方式,方式一为指定审批人,方式二为复用钉钉审批后台设置的审批流程。 这里我讲下指定审批人的方式。
    1.打开审批管理后台,地址: https://aflow.dingtalk.com/dingtalk/web/query/dashboard?dinghash=aflowSetting#/aflowSetting
    2.创建流程表单:
    20200922181607
    然后填写表单的基础设置,这里我直接填测试流程
    20200922181658
    然后进行钉钉表单的配置,随便配了2个文本框,如下
    20200922181716
    流程设计这里不用管,因为这里我用的是直接指定审批人的方式(通过接口传审批人列表)
    3.第三步开始撸代码,先引用钉钉审批sdk,下载地址如下:
    C#:https://open-dev.dingtalk.com/download/openSDK/cshap
    JAVA:https://open-dev.dingtalk.com/download/openSDK/java
    PHP:https://open-dev.dingtalk.com/download/openSDK/php
    直接上发起的示例代码:

    OapiProcessinstanceCreateRequest request = new OapiProcessinstanceCreateRequest
     {
     ProcessCode = "PROC-0DAD7345-5F92-42D7-A306-D22ABC13D2DA",//刚才创建的表单模板id
     OriginatorUserId = "XXX",//发起人钉钉id
     DeptId = Convert.ToInt64("xxx"),//发起人部门id
     Approvers = "XXX,XX",//多个审批人用逗号分隔,按传入的顺序依次审批 
     CcList = "XX,XX",//抄送人列表
     CcPosition = "START_FINISH",//开始和结束都提醒抄送人 
     };
     //表单集合
     List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain> list = new List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain>();
     //表单内容
     list.Add(new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain() { Name = "标题", Value = "这是一个标题"});
     list.Add(new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain() { Name = "内容", Value = "这是一个内容" });
     request.FormComponentValues_ = list;
     //调用钉钉接口
     var _client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
     var appToken = (await _dingtalkService.GetDingToken()).Access_token;
     var result= _client.Execute(request, appToken);
    

    好了,我们的流程就发起成功了,如下图:
    20200922182231
    文章的最后,顺带分享下几个踩坑问题
    1.钉钉上表单配置控件。如果通过接口发起时没传 则报错
    2.表单模板id需要url上取,没有直观的地方展示
    3.钉钉配置的表单标题名称不能有空格,有空格则报错
    下期预告:打造钉钉分发平台,实现审批事件回写和通讯录事件回写

    福禄ICH·ERP项目部 福乐里
  • 相关阅读:
    TAOCP读书笔记——Search(1)
    JAVA进程间通信
    C++ Primer 阅读总结 (1)
    初来乍到
    [C#]手把手教你打造Socket的TCP通讯连接(二)
    [C#]手把手教你打造Socket的TCP通讯连接(三)
    数字ToString作为货币显示并且带小数
    [C#]手把手教你打造Socket的TCP通讯连接(一)
    [C#]手把手教你打造Socket的TCP通讯连接(四)
    WPF中使用ItemTemplate把所有Item都控制为指定大小
  • 原文地址:https://www.cnblogs.com/fulu/p/13737989.html
Copyright © 2011-2022 走看看