package com.izouma.awesomeadmin.web; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.izouma.awesomeadmin.dto.Result; import org.activiti.editor.constants.ModelDataJsonConstants; import org.activiti.engine.*; import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.activiti.engine.repository.Model; import org.activiti.engine.repository.ModelQuery; import org.apache.commons.lang.StringUtils; 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.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller @RequestMapping("/activiti") public class ActivitiController { @Autowired protected IdentityService identityService; @Autowired protected RepositoryService repositoryService; @Autowired protected RuntimeService runtimeService; @Autowired protected TaskService taskService; @Autowired protected ManagementService managementService; @Autowired protected ProcessEngineConfigurationImpl processEngineConfiguration; @RequestMapping(value = "/processList", method = RequestMethod.GET) @ResponseBody public Result processList(String name) { ModelQuery query = repositoryService.createModelQuery(); if (StringUtils.isNotEmpty(name)) { query = query.modelNameLike(name); } List models = query.list(); return new Result(true, models); } @RequestMapping(value = "/createModel", method = RequestMethod.GET) @ResponseBody public Result createModel(String name, String description) { Model newModel = repositoryService.newModel(); try { ObjectMapper objectMapper = new ObjectMapper(); ObjectNode modelObjectNode = objectMapper.createObjectNode(); modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, name); modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1); modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description); newModel.setMetaInfo(modelObjectNode.toString()); newModel.setName(name); repositoryService.saveModel(newModel); 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.set("stencilset", stencilSetNode); repositoryService.addModelEditorSource(newModel.getId(), editorNode.toString().getBytes("utf-8")); return new Result(true, newModel.getId()); } catch (Exception e) { e.getStackTrace(); } return new Result(false, "创建失败"); } }