更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio
演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/
更多nbcio-boot功能请看演示系统
gitee源代码地址
后端代码: https://gitee.com/nbacheng/nbcio-boot
前端代码:https://gitee.com/nbacheng/nbcio-vue.git
在线演示(包括H5) : http://218.75.87.38:9888
flowable流程支持多租户
ruoyi-nbcio-plus支持多租户,所以需要对流程的相关功能也支持多租户,可以利用Flowable的多租户字段tenantId,包括流程定义、发布与发起,都要带上tenantId,同时在流程查询等过程都要过滤tenantId这个字段,以便支持多租户。
1、流程定义
如下:需要增加 newModel.setTenantId(TenantHelper.getTenantId());
Model newModel; if (Boolean.TRUE.equals(modelBo.getNewVersion())) { newModel = repositoryService.newModel(); newModel.setName(processName); newModel.setKey(model.getKey()); newModel.setCategory(model.getCategory()); newModel.setMetaInfo(model.getMetaInfo()); newModel.setVersion(model.getVersion() + 1); newModel.setTenantId(TenantHelper.getTenantId()); } else { newModel = model; // 设置流程名称 newModel.setName(processName); } // 保存流程模型 repositoryService.saveModel(newModel);
2、流程发布
如下:需要增加 .tenantId(TenantHelper.getTenantId())
// 部署流程 Deployment deployment = repositoryService.createDeployment() .name(model.getName()) .key(model.getKey()) .tenantId(TenantHelper.getTenantId()) .category(model.getCategory()) .addBytes(processName, bpmnBytes) .deploy();
3、发起流程
// 发起流程实例 ProcessInstance processInstance = runtimeService.startProcessInstanceByKeyAndTenantId(procDef.getKey(), dataId, variables, TenantHelper.getTenantId());
4、流程定义数据查询
// 流程定义列表数据查询 ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() .processDefinitionTenantId(TenantHelper.getTenantId()) .latestVersion() .active() .orderByProcessDefinitionKey()
5、历史流程实例查询
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() .processInstanceTenantId(TenantHelper.getTenantId()) .includeProcessVariables() .startedBy(TaskUtils.getUserName()) .orderByProcessInstanceStartTime()
6、任务查询
TaskQuery taskQuery = taskService.createTaskQuery() .active() .includeProcessVariables() .taskCandidateOrAssigned(TaskUtils.getUserName()) .taskCandidateGroupIn(TaskUtils.getCandidateGroup()) .taskTenantId(TenantHelper.getTenantId()) .orderByTaskCreateTime().desc();
7、流程实例查询
// 获取流程实例 ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() .processInstanceTenantId(TenantHelper.getTenantId()) .processInstanceId(taskBo.getProcInsId()) .singleResult();
8、流程模型查询
ModelQuery modelQuery = repositoryService.createModelQuery() .modelTenantId(TenantHelper.getTenantId()) .modelKey(modelBo.getModelKey()) .orderByModelVersion() .desc();