更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio
演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/
更多nbcio-boot功能请看演示系统
gitee源代码地址
后端代码: https://gitee.com/nbacheng/nbcio-boot
前端代码:https://gitee.com/nbacheng/nbcio-vue.git
在线演示(包括H5) : http://122.227.135.243: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();