package com.java110.common.api; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.activiti.editor.constants.ModelDataJsonConstants; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.Model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author luobaimang * @date 2019/11/28 */ @Controller public class ModelController { private static final Logger logger = LoggerFactory.getLogger(ModelController.class); @Autowired private RepositoryService repositoryService; @Autowired private ObjectMapper objectMapper; /** * 创建模型 * @param response * @param name 模型名称 * @param key 模型key */ @RequestMapping("/create") @ResponseBody public String create(HttpServletResponse response, String name, String key) throws IOException { logger.info("创建模型入参name:{},key:{}",name,key); Model model = repositoryService.newModel(); ObjectNode modelNode = objectMapper.createObjectNode(); modelNode.put(ModelDataJsonConstants.MODEL_NAME, name); modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, ""); modelNode.put(ModelDataJsonConstants.MODEL_REVISION, 1); model.setName(name); model.setKey(key); model.setMetaInfo(modelNode.toString()); repositoryService.saveModel(model); createObjectNode(model.getId()); logger.info("创建模型结束,返回模型ID:{}",model.getId()); return model.getId(); } /** * 创建模型时完善ModelEditorSource * @param modelId */ @SuppressWarnings("deprecation") private void createObjectNode(String modelId){ logger.info("创建模型完善ModelEditorSource入参模型ID:{}",modelId); ObjectNode editorNode = objectMapper.createObjectNode(); editorNode.put("id", "canvas"); editorNode.put("resourceId", "canvas"); ObjectNode stencilSetNode = objectMapper.createObjectNode(); stencilSetNode.put("namespace","http://b3mn.org/stencilset/bpmn2.0#"); editorNode.put("stencilset", stencilSetNode); try { repositoryService.addModelEditorSource(modelId,editorNode.toString().getBytes("utf-8")); } catch (Exception e) { logger.info("创建模型时完善ModelEditorSource服务异常:{}",e); } logger.info("创建模型完善ModelEditorSource结束"); } }