V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yusheng88
V2EX  ›  程序员

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

  •  
  •   yusheng88 · 2023-06-14 11:57:44 +08:00 via Android · 2869 次点击
    这是一个创建于 558 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    准备对外提供接口:

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

    2.用户的任务列表

    3.申请流程

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

    5.查看流程明细

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

    7.预览审批人

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

    想讨论的点:

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

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

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

    2: 目前用的 camunda

    3: 差不多够用了。

    4: 无

    5: 建议回调 url 做成流程里的配置项,由业务自己决定。
    如果都是对内的系统,可以上消息队列,节点的状态变更都扔到消息队列里,让业务自己去订阅想要的消息。
    albin504
        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 系统中放入一个“待审批任务列表”功能,用户点击后能跳转到各个业务平台进行具体的业务流程审批。
    yusheng88
        13
    yusheng88  
    OP
       2023-06-16 00:34:42 +08:00
    感谢各位的意见,目前不考虑对接第三方公司,内部各产品是统一账号。最终权衡下,应该会选择 flowable:实现流程审批功能需要开发和定制成本低。更好的选择应该是 camunda+bpmn.js 。flowable 支持在线简单的表单设计和流程模型设计,也支持流程节点退回[任意跳转未确定]。如果是复杂表单、审批人和业务强耦合,则业务方维护表单,调用接口。如果是简单表单,则由主要由工作流服务的相关人员维护。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 04:39 · PVG 12:39 · LAX 20:39 · JFK 23:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.