有个系统涉及到申请、审批,看起来常规工作流引擎应该都支持,但是有几点拿不准,想请教下大家:
1 用户体系不一样:申请的用户和审批的用户不是一个来源。比如申请人可以是整个互联网用户,审批的人可能是公司那些带有领导职务的人员,一层一层那种。这和我理解的传统业务如 OA 、钉钉请假这种不太一样,后面这些貌似申请、审批人员都是一个租户内的。
2 某些节点需要进行可选分发:比如某个节点,当前岗位的处理人员可以自行处理后往下一步流转,也可以分发给其他人员审核,等所有人返回后再决定是否往下一步走。(理论上,如果有某个分发人员拒绝了,那就不能继续走下去)
3 节点处理既要读也要写:节点处理的时候,不仅仅可以看到信息,也需要补充一些信息,比如给当前用户打个标签等等。此外,不同节点可以读的信息也是有区别的,用户申请填了很多信息,那么节点 1 可能就只关心性别、年龄等信息,节点 2 可能只关心学历等,从用户体验上来说,每个节点的处理人员只看到自己的是合适的。
基于以上几点,想问问现有的工作流支持如何? 收费方案也行
1
wangxiaoaer OP 有没有熟悉工作流的指点一下?
|
2
wangxiaoaer OP 补充:
5 节点流转的存在掉头的动作:一般一层层向上传递(审批),但是到某个环节后可能启动了签合同动作,又会流转到起初的申请用户那边。 |
3
timethinker 2022-09-22 10:17:38 +08:00
1 、工作流引擎实际上是没有用户这个概念的,工作流说白了只是一个状态机的实现,这个实现帮我们搭建了一个最底层的基本平台。我们所说的用户和审批只是在上面进行了业务封装而已。因此你可以设计一种数据结构来表示用户来自哪里以及他的一些相关的信息,然后将数据存放到流程实例当中。
2 、关于审批签名,这个属于审批流程的概念,比如“会签”与“或签”,还有转交、加减签、回退审批等等,同上,工作流引擎也并不知道这些概念,这些都是上层封装的,只不过审批的场景太过于常见,因此在工作流引擎和最终的应用之间,建立了一套审批的抽象和机制,所有实现这些抽象的数据结构和行为,都是需要预先定义的(自定义封装),然后提供给外部基于这些抽象的编程接口。 3 、工作流引擎的流程实例提供了一个上下文环境,可以存放各种的变量信息,你可以通过设定各种各样的变量和条件判断来执行逻辑以及分支跳转。但是不要忘了,你使用工作流的目的是什么?工作流应该仅仅只处理流程上的某一个环节通过与否,以及下一个环节的状态跳转。其他的完全可以通过外部的 CRUD 管理系统来提供更多的操作内容。因此需要外部应用与工作流进行集成。试想一下,如果没有工作流,没有审批,你如何实现这个功能?答案可能就是自己建几张表,然后提供一些 CRUD 的接口而已。 4 、同我说的第 2 点。 5 、同我说的第 2 点。至于回到申请用户那边,说白了也只是在流程设计里面有一个环节需要发起人来完成而已。 |
4
wangxiaoaer OP 关于第 3 点,我的想法是这个可选的审批分发不要放到工作流里面,而是业务实现,然后结合分发返回状态决定能否提交下一步。
关于第 5 点,我想表达的是这样套娃(循环)感觉会导致整个工作流非常复杂,有没有什么推荐的做法。 最后,有没有推荐的工作流引擎?开源、收费都可以考虑。 |
5
timethinker 2022-09-22 10:43:51 +08:00
我已经很久没有关注这一块了,开源的可以选择的不多,基本上都是 Activiti 系的,Flowable 看起来比较活跃,Camunda 是魔改版,提供很多特性,国产的很多工作流引擎更加符合国内的审批流程。
如果是我的话,可能会选择 Flowable 来进行定制,不过最终这一块还是得自己多比较一下才能知道哪一个更适合当前的业务。 |
6
wangxiaoaer OP 多谢哈。
|