V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whnoob
V2EX  ›  Java

SpringBoot 整合 Camunda, 自定义表单问题

  •  
  •   whnoob · 166 天前 · 1472 次点击
    这是一个创建于 166 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1. 需求

    • 定义流程时,用户任务需要设置表单做数据输入,但是表单信息想通过代码的方式做注册
    • 例如:pkM5UhR.png

    这里选择了 camnuda forms , 然后设置 reference 绑定 user_info 这个表单,然后在业务中通过界面配置的方式定义一个 user_info 的表单供当前这个流程去使用。

    • 目前网上大多数都是定义 html 或者 json 至文件中进行发布绑定,这种动态的方式不知道怎么去实现,希望各位大佬指点一下
    10 条回复    2024-05-24 10:35:21 +08:00
    0xD800
        1
    0xD800  
       166 天前
    从后端视角来看,需要表单的有两个接口:
    发起流程:startProcessInstanceXX
    审核流程:taskService.complete

    参数都是 Map<String, Object>,也就是表单形式无所谓,你只需要前端把这个 Map<String, Object>传给你,你再传给流程引擎(Camunda)即可。

    举例子:
    具体业务要求可能会有表单字段的权限控制,不同节点展现的表单不一样。

    此时可以基于 bpmnjs 扩展设计器,在 userTask 上绑定表单标识,然后前端通过表单标识来决定渲染哪个表单即可。

    实际运作流程:

    1. 流程管理员配置好流程图和启动表单及各个用户任务的表单后
    2. 普通业务员发起流程
    2.1 通过流程标识去获取启动表单,
    2.2 输入表单内容,并提交发起流程接口(runtimeService.startProcessInstanceByXX)
    3. 审批人查询待办获取到任务后,通过 taskId 和 processInstanceId 拿到该 userTask 绑定的表单
    4. 审批人输入表单内容后提交审批( taskService.complete 接口)
    whnoob
        2
    whnoob  
    OP
       166 天前
    @0xD800 我可以理解成 complete 提交的时候按照这种结构提交? {"user_info": {"name": "test "}}。[![pkMja6J.png]( https://s21.ax1x.com/2024/05/23/pkMja6J.png)]( https://imgse.com/i/pkMja6J)
    但是这个要和 task form 里的属性对应,貌似映射不了 form 表单的 reference
    0xD800
        3
    0xD800  
       166 天前
    你的 taskForm 是用 camunda 的 form 吗? bpmn.io 的那个 form 定义?
    whnoob
        4
    whnoob  
    OP
       166 天前
    @0xD800 要用自定义的,选的是:Embedded or External Task Forms
    0xD800
        5
    0xD800  
       165 天前
    @whnoob 这个我不太清楚他们的集成机制了,也许是用 FormService ,然后内部约定一些变量规则。具体得看文档或者源码啦
    whnoob
        6
    whnoob  
    OP
       165 天前
    @0xD800 我理解错了,我看到的那个自定义表单貌似没有用 camunda 表单的能力,自定义表单的数据是单独做的管理,然后在网关需要的时候,作为变量提交到 task 上去,camunda 只利用了流程相关的东西

    多谢大佬耐心讲解,刚开始学习,可能概念不是很清晰,我的疑问大概理清楚了,多谢
    Marinaaaa
        7
    Marinaaaa  
       165 天前
    emm 我们公司用的自定义的 form 。

    前端表单编辑使用 formily ,表单编辑提交,后端存储这个 schema 。

    流程发布( deploy )的时候,把这个 schema 也存一份,实现版本控制。

    然后后端再根据这个 schema 进行一些简单的校验之类的, 前端渲染表单也使用这份 schema 。

    whnoob
        8
    whnoob  
    OP
       165 天前
    @Marinaaaa 嗯,类似,表单和流程分开,只利用 camunda 的流程能力
    0xD800
        9
    0xD800  
       165 天前
    @whnoob 我有个集成 flowable 开源的项目,如果你感兴趣可以参考一下,有问题可以私聊我
    whnoob
        10
    whnoob  
    OP
       165 天前
    @0xD800 大佬可以发出来学习一下😁多个方案多个参考
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3592 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:33 · PVG 12:33 · LAX 20:33 · JFK 23:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.