拆解钉钉流程审批功能:卡片式配置的审批流是怎样设计的?

有个客户要求我们做个定制开发,客户觉得钉钉的操作体验比较不错(用户使用的惯性),要求我们要实现钉钉的自动配置审批流程,不过幸不辱命,对比个钉钉的流程审批、表单配置的相关功能,做了个Java私有化的版本。 图片

钉钉的流程审批操作确实相对于activity、flowable 更加贴近于业务人员,后面两个常用的流程引擎更加适合于技术人员。 图片

如上图对比,其中,左侧的卡片式的流程配置要比右侧传统的流程配置,操作简洁、流程透明,体验好很多。本篇我们详细拆解审批功能,如果你的产品中涉及到业务审批流的,强烈推荐你了解一下卡片式配置的审批流是如何设计的。相信看完这篇后,你会对审批流有非常清晰的认知。

一、审批流基本内容

做审批流程,我们要思考流程审批的几个基础问题: 1、流程从哪里来?发起流程 2、流程到哪里去?流程的路径 3、参与人是谁?参与人员 4、要干什么事?交互的结果要解决

从上面几个问题,我们就需要深刻理解流程,流程包括集中核心能力拼装而成: 1、发起节点; 2、人工执行节点(审核); 3、路由判断节点; 4、自动化业务节点(触发); 分析我们逐一拆解,分析,讲解我们是如何实现仿钉钉审批功能。

二、流程发起

在日常的企业内部的业务过程中,发起流程的场景可以有 1、在用户的工作台里边发起一个流程 ,通过工作台的业务申请入口创建流程(例如,个人用户主动发起费用报销) 图片

2、在业务执行过程中,需要发起流程审批,这种模式需要在数据管理或者列表管理的中,通过按钮/表单去触发流程 (例如,在创建入库单的时候,需要发起流程审批) 图片

3、系统内部或者外部系统达到某种条件的时候,系统自动创建审批流程,这种模式下需要支持接口创建流程的能力 (例如,设备故障,自动创建一个故障处理的故障单) 这种我们构建了逻辑引擎,在逻辑引擎中实现了 通过接口创建工作流的功能 图片

三、人工审批节点

人工节点审批包括:包括了环节名称、环节关联的表单、环节处理的人员(关联组织/公司/团队/角色/个人)、审批的时限、业务触发按钮等等,如下图所示。 图片

其中,要支持自动审批、审批后触发的关联业务逻辑等等,如下图所示 图片

审批人的表单,是可以独立设计的,点击设计后会进入表单设计器中 图片

审批表单设计采用了“所见即所得”的拖拽式表单设计器。布局上,左侧是表单控件区、右侧是表单的信息和表单控件的属性设置,中间则是表单预览区。设计表单的时候,用户可以直接从左侧的表单控件区拖拽表单到预览区,然后在右侧设置该字段的属性即可完成一个表单字段的增加。删除表单字段只需要点击选中一个字段后,点击小垃圾桶图标删除即可。 图片

除了审批环节,也可以支持抄送环节: 图片

四、分支节点

分支条件:流程会随着表单的内容(分支条件变量)、发起人的信息不同而经过不同的审批环节,控制流程进入不同审批环节的元素称之为分支条件。举个例子,对于借款这个流程,有些公司会设置1000-5000天以内部门负责人审批即可,超过5000需要更高一级领导审批。 图片

审批的条件可以根据表单的数据进行函数加工,灵活实现各种判断条件 图片

五、在线测试

配套列表与测试功能,可以便捷的完成业务的测试与入口的构建。 图片

六、会签功能

图片

七、触发自动化业务

从人工业务联动自动化处理的业务,通过新增自动化业务节点实现。 图片

图片

八、总结

钉钉作为当下国内移动协同办公的老大,能够满足大部分企业的办公需求,当然在很多场景下,客户需要私有化部署、定制化开发、且成本需要控制的情况下,那么就可以考虑JVS快速开发平台。如果想要获得更多了解,可以在 Gitee上搜索“JVS”。

九、获取开源

开源仓库地址:https://gitee.com/software-minister 管理平台(含管理平台、低代码、数据智仓):https://frame.bctools.cn/

全部评论

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
Wy_m:只要不是能叫的上名的公司 去实习没有任何意义 不如好好沉淀自己
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务