import org.activiti.engine.RepositoryService; //导入方法依赖的package包/类
@RequestMapping("modeler-deploy")
public String deploy(@RequestParam("id") String id,
org.springframework.ui.Model theModel) throws Exception {
String tenantId = tenantHolder.getTenantId();
RepositoryService repositoryService = processEngine
.getRepositoryService();
Model modelData = repositoryService.getModel(id);
byte[] bytes = repositoryService
.getModelEditorSource(modelData.getId());
if (bytes == null) {
theModel.addAttribute("message", "模型数据为空,请先设计流程并成功保存,再进行发布。");
return "modeler/failure";
}
JsonNode modelNode = (JsonNode) new ObjectMapper().readTree(bytes);
byte[] bpmnBytes = null;
BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
bpmnBytes = new BpmnXMLConverter().convertToXML(model);
String processName = modelData.getName() + ".bpmn20.xml";
Deployment deployment = repositoryService.createDeployment()
.name(modelData.getName())
.addString(processName, new String(bpmnBytes, "UTF-8"))
.tenantId(tenantId).deploy();
modelData.setDeploymentId(deployment.getId());
repositoryService.saveModel(modelData);
List processDefinitions = repositoryService
.createProcessDefinitionQuery()
.deploymentId(deployment.getId()).list();
for (ProcessDefinition processDefinition : processDefinitions) {
processEngine.getManagementService().executeCommand(
new SyncProcessCmd(processDefinition.getId()));
}
return "redirect:/modeler/modeler-list.do";
}