1.演示
2.导入方法
先验证导入文件格式是否已.bpmn20.xml结尾,再实现部署。
- 检查流程文件格式
RetBeanData retBeanData = new RetBeanData();
Map<String, Object> map = new HashMap<>();
map.put("name", file.getOriginalFilename());
boolean temp = Objects.requireNonNull(file.getOriginalFilename()).endsWith(FlowEngineConstant.SUFFIX);
map.put("success", temp);
retBeanData.setData(map);
return retBeanData;
- 上传部署流程文件
public Object managerDeployUpload(MultipartFile file, String category, String[] tenantIds) {
try {
String fileName = file.getOriginalFilename();
InputStream fileInputStream = file.getInputStream();
byte[] bytes = this.copyToByteArray(fileInputStream);
if (!StringUtil.isEmpty(tenantIds)) {
for (String tenantId : tenantIds) {
Deployment deployment = repositoryService.createDeployment().addBytes(fileName, bytes).tenantId(tenantId).deploy();
deploy(deployment, category);
}
} else {
Deployment deployment = repositoryService.createDeployment().addBytes(fileName, bytes).deploy();
deploy(deployment, category);
}
} catch (IOException e) {
e.printStackTrace();
}
return new RetBean();
}
public byte[] copyToByteArray(InputStream in) throws IOException {
if (in == null) {
return new byte[0];
} else {
ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
Assert.notNull(in, "No InputStream specified");
Assert.notNull(out, "No OutputStream specified");
int var2;
try {
var2 = StreamUtils.copy(in, out);
} finally {
in.close();
out.close();
}
return out.toByteArray();
}
}
public Object deploy(Deployment deployment, String category) {
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();
// 设置流程分类
for (ProcessDefinition processDefinition : list) {
if (!StringUtil.isEmpty(category)) {
repositoryService.setProcessDefinitionCategory(processDefinition.getId(), category);
}
}
if (list.size() == 0) {
return new RetBean().backError();
} else {
return new RetBean();
}
}