关于工作流系统开发的一些疑惑

2023-06-14 11:57:44 +08:00
 yusheng88

想要开发一个工作流服务,提供给公司内部其他系统使用。 已知: 公司用户体系是统一

准备对外提供接口:

1.用户申请的流程实例列表

2.用户的任务列表

3.申请流程

4.提交审批(同意,拒绝,回退),响应包含是否结束

5.查看流程明细

6.查看流程实例的流程图

7.预览审批人

8.修改表单和回调请求体接口

想讨论的点:

  1. 工作流系统是否应该维护表单?个人觉得业务系统维护我的任务,我的流程,审批表单界面更好
  2. 使用那个工作流引擎更好? activiti flowable camunda
  3. 是否还需要提供其他接口
  4. 有没有工作流相关的交流群,求推荐
  5. 流程结束,是业务系统根据提交结果进行实际业务处理好,还是工作流系统通过回调 url 处理好?我觉得前者好些
2826 次点击
所在节点    程序员
13 条回复
zjsxwc
2023-06-14 12:37:04 +08:00
建议还是参考使用一段时间主流的工作流系统,明确自己的需求先,
然后再实现自己需要的工作流系统,
我是用了一年多的钉钉宜答,然后公司需要自己的工作流需求才自己开发。

熟悉业务后,自己实现一个还是很快的,
php 用了一周把公司的工作流写了,然后把里面通用框架提取丢 github 上 https://github.com/zjsxwc/WorkflowBundle
为了快速上线以及由于内部自己使用,
我把图形化交互拖拽配置工作流砍了,
转为直接用 php 的 array 来配置每个新工作流,
能配置循环、能配置 if 、能配置多分支执行,多分支执行能全部节点执行完后才进入下一个、多分支执行也能其中一个节点执行完后就直接进入下一个。
zjsxwc
2023-06-14 12:40:51 +08:00
Q:工作流系统是否应该维护表单?个人觉得业务系统维护我的任务,我的流程,审批表单界面更好
A:抄宜搭,一个工作流就一个超级大表单,只需要控制每个节点的读写可见权限而已,多个独立工作流有关联需求时就硬编码特殊处理。
yusheng88
2023-06-14 13:50:10 +08:00
@zjsxwc 流程结束后,通过 url 回调通知业务系统?
w292614191
2023-06-14 14:00:03 +08:00
@zjsxwc #1 一周能做出工作流我是不信的。
tedzhou1221
2023-06-14 14:19:02 +08:00
1 ,可以不维护表单,但审核过程中一些审核的数据也需要维护。
2 ,我个人觉得 camunda 会好点。原因:可动态添加流程节点。当然,自己有能力也可以自己实现。
3 ,null
4, null
5, 流程结束,可以发 mq 、推送事件、也可以在 spring framework 的环境中动态调用指定的方便来处理。
yusheng88
2023-06-14 15:03:02 +08:00
@tedzhou1221 审核数据是指?我觉得是审批意见,流程任务明细。这些数据确实是需要工作流系统维护
wolfie
2023-06-14 15:14:43 +08:00
1. 表单业务端 自己维护。
要提供一个 额外 Map 字段,供业务方操作。
2.--
3.
a. 12 结合,流程实例列表,包含我可以审核的流程实例列表。
b. 发起人催办,给当前处理人发消息提醒。
4. --
5. 比如 3 个节点的流程,业务方不应该判断 每个节点 分别要执行什么业务。
某个节点完结时,要回调 handler 或 url ,这俩没差别。
yusheng88
2023-06-14 15:46:35 +08:00
@wolfie 这种多结果分支的流程,我之前是没考虑到。本来还想在创建流程时传给回调 url 过来就完事了。这样的话,流程结束回调处理就麻烦了。
jhb
2023-06-15 09:24:18 +08:00
推荐 camunda,
支持外部任务,可以协调多个系统.
天然对微服务和分布式支持.
驳回任意节点实现方便
Marinaaaa
2023-06-15 10:36:25 +08:00
目前在使用 camunda 二开
Marinaaaa
2023-06-15 10:42:43 +08:00
@Marinaaaa 没写完就发出去了。

1: 我司是维护了表单的, 与宜搭一致,可以先设计表单,再设计流程, 表单字段可以在流程中用作分支判断。
例如: 表单里有金额, 分支里可以用到这个字段做判断。 表单里有人员字段, 人员可用作某个节点的审批人

2: 目前用的 camunda

3: 差不多够用了。

4: 无

5: 建议回调 url 做成流程里的配置项,由业务自己决定。
如果都是对内的系统,可以上消息队列,节点的状态变更都扔到消息队列里,让业务自己去订阅想要的消息。
albin504
2023-06-15 11:05:15 +08:00
在大厂工作时,对接过厂内工作流平台。
这个平台,有两种模式:
模式一:使用工作流平台完成整个审批流程,业务方不需要做任何开发。
对于简单的工作流场景,可使用该模式,提交表单、审批、流程进度等所有功能,都在工作流平台完成。具体适用的场景:
- 表单逻辑简单,和业务平台逻辑没有耦合。 这时候就可以借助第三方低代码工具,用拖拽的方式生成审批表单。
- 审批人较为固定。如审批人是提交人的+n 级 leader ,或者审批是固定的某些人。
这种模式,在厂内使用很流行,因为成本低,随时都可以发起流程。 如跨部门权限申请、团队内敏感操作线上备案,都可以用这种模式。

模式二:通过接口接入
就是你描述的方式。


工作流服务,几个建议:
1 、想清楚用户是谁,未来是否会有外部用户参与审批(如外包人员、供应商)?
外部用户没有公司 erp 账号。因此,工作流中的审批人,不要和 erp 员工信息做强耦合,审批人可以来源于 erp 系统,也可以来源于自定义用户信息。

2 、审批提醒。
( 1 )最好基于消息模版做,让业务方可以灵活配置消息通知内容。 如“hi ,xxx 你好,xxx 流程当前审批环节 xxx ,请你及时审批”,除了 xxx 这些变量,其他的都是消息模版中的内容,业务可自己配置。
( 2 )任务超时未处理再次通知功能。经理收到审批提醒(邮件 or IM ),可能会选择在早上或者晚上集中进行审批,也可能存在忘记审批的情况。今天的任务,如果明早 9 点能再提醒一下,用户体验会更好。

3 、公司级待审批任务列表,方便经理在一个地方集中审批所有业务相关流程。
可以在你们的 erp 系统中放入一个“待审批任务列表”功能,用户点击后能跳转到各个业务平台进行具体的业务流程审批。
yusheng88
2023-06-16 00:34:42 +08:00
感谢各位的意见,目前不考虑对接第三方公司,内部各产品是统一账号。最终权衡下,应该会选择 flowable:实现流程审批功能需要开发和定制成本低。更好的选择应该是 camunda+bpmn.js 。flowable 支持在线简单的表单设计和流程模型设计,也支持流程节点退回[任意跳转未确定]。如果是复杂表单、审批人和业务强耦合,则业务方维护表单,调用接口。如果是简单表单,则由主要由工作流服务的相关人员维护。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/948618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX