Ver código fonte

修复导出失败!

zdd 3 anos atrás
pai
commit
880e117e4a

+ 7 - 14
src/main/java/com/activiti6/controller/ModelerController.java

@@ -16,6 +16,7 @@ import org.activiti.engine.RepositoryService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.Model;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,10 +31,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import java.io.*;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.List;
@@ -185,7 +183,7 @@ public class ModelerController extends BaseController {
      * @param modelId
      */
     @GetMapping("export/{modelId}")
-    @ResponseBody
+    //@ResponseBody
     public void exportModel(HttpServletResponse response, @PathVariable String modelId) {
         BufferedOutputStream bos = null;
         try {
@@ -201,18 +199,13 @@ public class ModelerController extends BaseController {
             } catch (Exception e) {
                 bpmnBytes = new byte[10];
             }
-
+            String filename = modelData.getKey() + ".bpmn";
             // 封装输出流
-            bos = new BufferedOutputStream(response.getOutputStream());
-            bos.write(bpmnBytes);// 写入流
-            String filename = modelData.getName();
-            if (StringUtils.isNoneBlank(filename) && filename.length() > 20) {
-                filename = filename.substring(0, 20);
-            }
-            filename = modelData.getKey() + ".bpmn";
-            response.setContentType("application/x-msdownload;");
+            ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes);
             response.setHeader("Content-Disposition",
                     "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
+            IOUtils.copy(in, response.getOutputStream());
+            response.setContentType("application/x-msdownload;");
             response.flushBuffer();
         } catch (Exception e) {
             logger.error("下载模板失败:" + modelId + "erro:" + e);

+ 34 - 17
src/main/java/com/activiti6/controller/editor/ModelSaveRestResource.java

@@ -1,10 +1,12 @@
 package com.activiti6.controller.editor;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
+import java.io.*;
 
+import com.alibaba.fastjson.JSON;
+import org.activiti.bpmn.converter.BpmnXMLConverter;
+import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.editor.constants.ModelDataJsonConstants;
+import org.activiti.editor.language.json.converter.BpmnJsonConverter;
 import org.activiti.engine.ActivitiException;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.repository.Model;
@@ -23,6 +25,11 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
 /**
  * 流程信息入库
  * liuzhize 2019年3月7日下午3:32:32
@@ -62,27 +69,37 @@ public class ModelSaveRestResource implements ModelDataJsonConstants {
       modelJson.put(MODEL_DESCRIPTION, description);
       model.setMetaInfo(modelJson.toString());
       model.setName(name);
+
       repositoryService.saveModel(model);
       
       repositoryService.addModelEditorSource(model.getId(), json_xml.getBytes("utf-8"));
-      
-      InputStream svgStream = new ByteArrayInputStream(svg_xml.getBytes("utf-8"));
-      TranscoderInput input = new TranscoderInput(svgStream);
-      
-      PNGTranscoder transcoder = new PNGTranscoder();
-      // Setup output
-      ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-      TranscoderOutput output = new TranscoderOutput(outStream);
-      
-      // Do the transformation
-      transcoder.transcode(input, output);
-      final byte[] result = outStream.toByteArray();
-      repositoryService.addModelEditorSourceExtra(model.getId(), result);
-      outStream.close();
+//      test(modelId);
+//
+//      InputStream svgStream = new ByteArrayInputStream(svg_xml.getBytes("utf-8"));
+//      TranscoderInput input = new TranscoderInput(svgStream);
+//
+//      PNGTranscoder transcoder = new PNGTranscoder();
+//      // Setup output
+//      ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+//      TranscoderOutput output = new TranscoderOutput(outStream);
+//
+//      // Do the transformation
+//      transcoder.transcode(input, output);
+//      final byte[] result = outStream.toByteArray();
+//      repositoryService.addModelEditorSourceExtra(model.getId(), result);
+//      outStream.close();
     } catch (Exception e) {
       LOGGER.error("Error saving model", e);
       throw new ActivitiException("Error saving model", e);
     }
   }
+
+  public void test(String modelId) throws XMLStreamException, IOException {
+    Model modelData = repositoryService.getModel(modelId);
+    ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));// readTree(这里面是json)
+    BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);// 转model
+    System.err.println(JSON.toJSONString(model));
+  }
+
   
 }

+ 5 - 5
src/main/java/com/activiti6/test/TestActiviti.java

@@ -13,6 +13,7 @@ import org.activiti.editor.constants.ModelDataJsonConstants;
 import org.activiti.editor.language.json.converter.BpmnJsonConverter;
 import org.activiti.engine.ProcessEngine;
 import org.activiti.engine.RepositoryService;
+import org.activiti.engine.delegate.event.ActivitiEventListener;
 import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.Model;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -35,6 +36,7 @@ import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import java.io.*;
+import java.util.ArrayList;
 import java.util.List;
 
 @SpringBootTest
@@ -42,12 +44,9 @@ import java.util.List;
 public class TestActiviti {
 
     @Autowired
-    ProcessEngine processEngine;
+    private ProcessEngine processEngine;
     @Autowired
     private RepositoryService repositoryService;
-    @Autowired
-    private ObjectMapper objectMapper;
-
     @Autowired
     private ActivitiService activitiService;
 
@@ -157,7 +156,6 @@ public class TestActiviti {
     }
 
 
-
     private void runtimeSave(ActivitiRule activitiRule, String userHomeDir) throws IOException {
         // 4. 启动流程
         ProcessInstance processInstance = activitiRule.getRuntimeService()
@@ -211,7 +209,9 @@ public class TestActiviti {
     protected EndEvent createEndEvent() {
         EndEvent endEvent = new EndEvent();
         endEvent.setId("end");
+        //流程结束监听
         return endEvent;
     }
 
+
 }