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

195 天前
 whnoob

1. 需求

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

1538 次点击
所在节点    Java
10 条回复
0xD800
195 天前
从后端视角来看,需要表单的有两个接口:
发起流程: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
194 天前
@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
194 天前
你的 taskForm 是用 camunda 的 form 吗? bpmn.io 的那个 form 定义?
whnoob
194 天前
@0xD800 要用自定义的,选的是:Embedded or External Task Forms
0xD800
194 天前
@whnoob 这个我不太清楚他们的集成机制了,也许是用 FormService ,然后内部约定一些变量规则。具体得看文档或者源码啦
whnoob
194 天前
@0xD800 我理解错了,我看到的那个自定义表单貌似没有用 camunda 表单的能力,自定义表单的数据是单独做的管理,然后在网关需要的时候,作为变量提交到 task 上去,camunda 只利用了流程相关的东西

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

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

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

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

whnoob
194 天前
@Marinaaaa 嗯,类似,表单和流程分开,只利用 camunda 的流程能力
0xD800
193 天前
@whnoob 我有个集成 flowable 开源的项目,如果你感兴趣可以参考一下,有问题可以私聊我
whnoob
193 天前
@0xD800 大佬可以发出来学习一下😁多个方案多个参考

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

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

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

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

© 2021 V2EX