想要开发一个工作流服务,提供给公司内部其他系统使用。 已知: 公司用户体系是统一
准备对外提供接口:
1.用户申请的流程实例列表
2.用户的任务列表
3.申请流程
4.提交审批(同意,拒绝,回退),响应包含是否结束
5.查看流程明细
6.查看流程实例的流程图
7.预览审批人
8.修改表单和回调请求体接口
想讨论的点:
1
zjsxwc 2023-06-14 12:37:04 +08:00
建议还是参考使用一段时间主流的工作流系统,明确自己的需求先,
然后再实现自己需要的工作流系统, 我是用了一年多的钉钉宜答,然后公司需要自己的工作流需求才自己开发。 熟悉业务后,自己实现一个还是很快的, php 用了一周把公司的工作流写了,然后把里面通用框架提取丢 github 上 https://github.com/zjsxwc/WorkflowBundle , 为了快速上线以及由于内部自己使用, 我把图形化交互拖拽配置工作流砍了, 转为直接用 php 的 array 来配置每个新工作流, 能配置循环、能配置 if 、能配置多分支执行,多分支执行能全部节点执行完后才进入下一个、多分支执行也能其中一个节点执行完后就直接进入下一个。 |
2
zjsxwc 2023-06-14 12:40:51 +08:00
Q:工作流系统是否应该维护表单?个人觉得业务系统维护我的任务,我的流程,审批表单界面更好
A:抄宜搭,一个工作流就一个超级大表单,只需要控制每个节点的读写可见权限而已,多个独立工作流有关联需求时就硬编码特殊处理。 |
4
w292614191 2023-06-14 14:00:03 +08:00
@zjsxwc #1 一周能做出工作流我是不信的。
|
5
tedzhou1221 2023-06-14 14:19:02 +08:00
1 ,可以不维护表单,但审核过程中一些审核的数据也需要维护。
2 ,我个人觉得 camunda 会好点。原因:可动态添加流程节点。当然,自己有能力也可以自己实现。 3 ,null 4, null 5, 流程结束,可以发 mq 、推送事件、也可以在 spring framework 的环境中动态调用指定的方便来处理。 |
6
yusheng88 OP @tedzhou1221 审核数据是指?我觉得是审批意见,流程任务明细。这些数据确实是需要工作流系统维护
|
7
wolfie 2023-06-14 15:14:43 +08:00 1
1. 表单业务端 自己维护。
要提供一个 额外 Map 字段,供业务方操作。 2.-- 3. a. 12 结合,流程实例列表,包含我可以审核的流程实例列表。 b. 发起人催办,给当前处理人发消息提醒。 4. -- 5. 比如 3 个节点的流程,业务方不应该判断 每个节点 分别要执行什么业务。 某个节点完结时,要回调 handler 或 url ,这俩没差别。 |
8
yusheng88 OP @wolfie 这种多结果分支的流程,我之前是没考虑到。本来还想在创建流程时传给回调 url 过来就完事了。这样的话,流程结束回调处理就麻烦了。
|
9
jhb 2023-06-15 09:24:18 +08:00
推荐 camunda,
支持外部任务,可以协调多个系统. 天然对微服务和分布式支持. 驳回任意节点实现方便 |
10
Marinaaaa 2023-06-15 10:36:25 +08:00
目前在使用 camunda 二开
|
11
Marinaaaa 2023-06-15 10:42:43 +08:00
@Marinaaaa 没写完就发出去了。
1: 我司是维护了表单的, 与宜搭一致,可以先设计表单,再设计流程, 表单字段可以在流程中用作分支判断。 例如: 表单里有金额, 分支里可以用到这个字段做判断。 表单里有人员字段, 人员可用作某个节点的审批人 2: 目前用的 camunda 3: 差不多够用了。 4: 无 5: 建议回调 url 做成流程里的配置项,由业务自己决定。 如果都是对内的系统,可以上消息队列,节点的状态变更都扔到消息队列里,让业务自己去订阅想要的消息。 |
12
albin504 2023-06-15 11:05:15 +08:00 2
在大厂工作时,对接过厂内工作流平台。
这个平台,有两种模式: 模式一:使用工作流平台完成整个审批流程,业务方不需要做任何开发。 对于简单的工作流场景,可使用该模式,提交表单、审批、流程进度等所有功能,都在工作流平台完成。具体适用的场景: - 表单逻辑简单,和业务平台逻辑没有耦合。 这时候就可以借助第三方低代码工具,用拖拽的方式生成审批表单。 - 审批人较为固定。如审批人是提交人的+n 级 leader ,或者审批是固定的某些人。 这种模式,在厂内使用很流行,因为成本低,随时都可以发起流程。 如跨部门权限申请、团队内敏感操作线上备案,都可以用这种模式。 模式二:通过接口接入 就是你描述的方式。 工作流服务,几个建议: 1 、想清楚用户是谁,未来是否会有外部用户参与审批(如外包人员、供应商)? 外部用户没有公司 erp 账号。因此,工作流中的审批人,不要和 erp 员工信息做强耦合,审批人可以来源于 erp 系统,也可以来源于自定义用户信息。 2 、审批提醒。 ( 1 )最好基于消息模版做,让业务方可以灵活配置消息通知内容。 如“hi ,xxx 你好,xxx 流程当前审批环节 xxx ,请你及时审批”,除了 xxx 这些变量,其他的都是消息模版中的内容,业务可自己配置。 ( 2 )任务超时未处理再次通知功能。经理收到审批提醒(邮件 or IM ),可能会选择在早上或者晚上集中进行审批,也可能存在忘记审批的情况。今天的任务,如果明早 9 点能再提醒一下,用户体验会更好。 3 、公司级待审批任务列表,方便经理在一个地方集中审批所有业务相关流程。 可以在你们的 erp 系统中放入一个“待审批任务列表”功能,用户点击后能跳转到各个业务平台进行具体的业务流程审批。 |
13
yusheng88 OP 感谢各位的意见,目前不考虑对接第三方公司,内部各产品是统一账号。最终权衡下,应该会选择 flowable:实现流程审批功能需要开发和定制成本低。更好的选择应该是 camunda+bpmn.js 。flowable 支持在线简单的表单设计和流程模型设计,也支持流程节点退回[任意跳转未确定]。如果是复杂表单、审批人和业务强耦合,则业务方维护表单,调用接口。如果是简单表单,则由主要由工作流服务的相关人员维护。
|