JeecgBoot工作流引擎集成教程:Activiti与表单设计器无缝对接
一、集成背景与价值
企业级应用开发中,工作流引擎与表单系统的对接是核心需求。JeecgBoot作为企业级低代码平台,通过Activiti工作流引擎与内置表单设计器的无缝集成,实现业务流程可视化配置与数据表单的联动管理。该集成方案已在JoaDemo流程测试模块中验证,支持请假审批、报销流程等典型场景。
二、核心技术组件
2.1 工作流引擎
JeecgBoot采用Activiti作为流程引擎核心,通过流程状态常量定义流程生命周期,包括FLOW_STATUS_RUNNING(运行中)、FLOW_STATUS_FINISH(已完成)等状态标识。
2.2 表单设计器
平台内置可视化表单设计器,支持主表/子表结构设计,相关配置通过CommonConstant定义表单类型常量,如FORM_DESIGNER_MAIN_TABLE(主表类型)和FORM_DESIGNER_SUB_TABLE(子表类型)。
三、集成实现步骤
3.1 环境准备
- 引入Activiti依赖(pom.xml配置)
- 初始化流程数据库表结构,执行jeecgboot-mysql-5.7.sql中的Activiti相关脚本
3.2 流程定义与表单关联
通过表单设计器创建业务表单,在流程设计时通过以下代码实现表单数据绑定:
// 流程任务与表单数据关联示例 [JoaDemoServiceImpl.java]
@Override
public void startProcess(String id, String procDefKey) {
JoaDemo entity = baseMapper.selectById(id);
// 设置流程状态为运行中
entity.setFlowStatus(DataBaseConstant.FLOW_STATUS_RUNNING);
baseMapper.updateById(entity);
// 表单数据转换为流程变量
Map<String, Object> variables = new HashMap<>();
variables.put("formData", JSON.toJSONString(entity));
// 启动流程实例
runtimeService.startProcessInstanceByKey(procDefKey, variables);
}
3.3 流程任务与表单权限控制
利用表单设计器URL授权常量实现权限校验:
// 权限校验示例 [JwtUtil.java]
public boolean checkFormPermission(String url) {
// 检查表单设计器授权状态
if(CommonConstant.FORM_DESIGNER_AUTH_PASS.equals(getFormAuthStatus(url))) {
return true;
}
return false;
}
四、关键功能模块
4.1 流程表单数据交互
通过DictModel实现表单数据字典翻译,支持流程节点中的数据联动:
// 表单字典翻译示例
DictModel dictModel = new DictModel();
dictModel.setLabel("请假申请");
dictModel.setValue("leave_apply");
// 存储表单关联记录
dictModel.setTable("joa_demo");
dictModel.setPk(id);
4.2 流程事件监听
实现Activiti的TaskListener接口,处理表单数据自动填充:
// 任务创建监听示例
public class FormDataListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
String formData = (String) delegateTask.getVariable("formData");
JoaDemo formEntity = JSON.parseObject(formData, JoaDemo.class);
// 处理任务创建时的表单数据初始化
delegateTask.setVariable("applicant", formEntity.getCreateBy());
}
}
五、常见问题解决
5.1 表单数据与流程变量同步
问题:流程任务审批后表单数据未更新
解决:在流程状态更新方法中添加数据同步逻辑
5.2 子表数据流程可见性
问题:流程审批时无法查看表单子表数据
解决:通过QueryRuleEnum的表单设计器专用查询规则实现子表数据关联查询
六、最佳实践
- 推荐使用流程测试模块作为集成模板
- 复杂表单建议采用主表+子表结构,通过
FORM_DESIGNER_MAIN_TABLE和FORM_DESIGNER_SUB_TABLE常量区分 - 流程变量中表单数据建议使用JSON格式存储,便于前后端数据交互
七、拓展应用
通过集成Online表单设计器,可实现流程表单的在线配置与动态发布,无需重启应用即可更新流程表单结构。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



