ModelSaveRestResource.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package com.activiti6.controller.editor;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.InputStream;
  5. import org.activiti.editor.constants.ModelDataJsonConstants;
  6. import org.activiti.engine.ActivitiException;
  7. import org.activiti.engine.RepositoryService;
  8. import org.activiti.engine.repository.Model;
  9. import org.apache.batik.transcoder.TranscoderInput;
  10. import org.apache.batik.transcoder.TranscoderOutput;
  11. import org.apache.batik.transcoder.image.PNGTranscoder;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.http.HttpStatus;
  16. import org.springframework.web.bind.annotation.PathVariable;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RequestMethod;
  19. import org.springframework.web.bind.annotation.ResponseStatus;
  20. import org.springframework.web.bind.annotation.RestController;
  21. import com.fasterxml.jackson.databind.ObjectMapper;
  22. import com.fasterxml.jackson.databind.node.ObjectNode;
  23. /**
  24. * 流程信息入库
  25. * liuzhize 2019年3月7日下午3:32:32
  26. */
  27. @RestController
  28. @RequestMapping("service")
  29. public class ModelSaveRestResource implements ModelDataJsonConstants {
  30. protected static final Logger LOGGER = LoggerFactory.getLogger(ModelSaveRestResource.class);
  31. @Autowired
  32. private RepositoryService repositoryService;
  33. @Autowired
  34. private ObjectMapper objectMapper;
  35. /**
  36. * 保存流程
  37. * @param modelId 模型ID
  38. * @param name 流程模型名称
  39. * @param description
  40. * @param json_xml 流程文件
  41. * @param svg_xml 图片
  42. */
  43. @RequestMapping(value="/model/{modelId}/save", method = RequestMethod.PUT)
  44. @ResponseStatus(value = HttpStatus.OK)
  45. public void saveModel(@PathVariable String modelId
  46. , String name, String description
  47. , String json_xml, String svg_xml) {
  48. try {
  49. Model model = repositoryService.getModel(modelId);
  50. ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
  51. modelJson.put(MODEL_NAME, name);
  52. modelJson.put(MODEL_DESCRIPTION, description);
  53. model.setMetaInfo(modelJson.toString());
  54. model.setName(name);
  55. repositoryService.saveModel(model);
  56. repositoryService.addModelEditorSource(model.getId(), json_xml.getBytes("utf-8"));
  57. InputStream svgStream = new ByteArrayInputStream(svg_xml.getBytes("utf-8"));
  58. TranscoderInput input = new TranscoderInput(svgStream);
  59. PNGTranscoder transcoder = new PNGTranscoder();
  60. // Setup output
  61. ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  62. TranscoderOutput output = new TranscoderOutput(outStream);
  63. // Do the transformation
  64. transcoder.transcode(input, output);
  65. final byte[] result = outStream.toByteArray();
  66. repositoryService.addModelEditorSourceExtra(model.getId(), result);
  67. outStream.close();
  68. } catch (Exception e) {
  69. LOGGER.error("Error saving model", e);
  70. throw new ActivitiException("Error saving model", e);
  71. }
  72. }
  73. }