Parcourir la source

集成activity工作流引擎。

周浩 il y a 9 ans
Parent
commit
ad5149d1fd

+ 78 - 1
hsweb-web-workflow/pom.xml

@@ -12,7 +12,84 @@
     <artifactId>hsweb-web-workflow</artifactId>
 
     <properties>
-        <activiti.version>5.19.0</activiti.version>
+        <mule.version>3.5.0</mule.version>
+        <cxf.version>2.6.14</cxf.version>
+        <batik.version>1.7</batik.version>
     </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-spring-boot-starter-basic</artifactId>
+        </dependency>
 
+        <!--<dependency>-->
+            <!--<groupId>org.activiti</groupId>-->
+            <!--<artifactId>activiti-modeler</artifactId>-->
+        <!--</dependency>-->
+        <dependency>
+            <groupId>org.webbuilder</groupId>
+            <artifactId>wb-utils</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.webbuilder</groupId>
+            <artifactId>wb-sql-util</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-parser</artifactId>
+            <version>${batik.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-transcoder</artifactId>
+            <version>${batik.version}</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-logging</artifactId>
+                    <groupId>commons-logging</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-bridge</artifactId>
+            <version>${batik.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-codec</artifactId>
+            <version>${batik.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-css</artifactId>
+            <version>${batik.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-svg-dom</artifactId>
+            <version>${batik.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-svggen</artifactId>
+            <version>${batik.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.imgscalr</groupId>
+            <artifactId>imgscalr-lib</artifactId>
+            <version>4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>math.geom2d</groupId>
+            <artifactId>javaGeom</artifactId>
+            <version>0.11.1</version>
+        </dependency>
+    </dependencies>
 </project>

+ 11 - 0
hsweb-web-workflow/src/main/java/org/hsweb/web/workflow/controller/BasicController.java

@@ -0,0 +1,11 @@
+package org.hsweb.web.workflow.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Created by zhouhao on 16-4-30.
+ */
+
+public abstract class BasicController {
+}

+ 87 - 0
hsweb-web-workflow/src/main/java/org/hsweb/web/workflow/controller/model/ActivityModelController.java

@@ -0,0 +1,87 @@
+package org.hsweb.web.workflow.controller.model;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.repository.Model;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.PNGTranscoder;
+import org.apache.commons.lang3.StringUtils;
+import org.hsweb.web.workflow.controller.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/workflow")
+public class ActivityModelController extends BasicController {
+    @Autowired
+    private RepositoryService repositoryService;
+    static String MODEL_ID = "modelId";
+    static String MODEL_NAME = "name";
+    static String MODEL_DESCRIPTION = "description";
+
+    @RequestMapping(value = "/model/{modelId}/json", method = RequestMethod.GET)
+    @ResponseBody
+    public Object getEditorJson(@PathVariable String modelId) throws Exception {
+        JSONObject modelNode = null;
+        Model model = repositoryService.getModel(modelId);
+        if (model != null) {
+            if (StringUtils.isNotEmpty(model.getMetaInfo())) {
+                modelNode = (JSONObject) JSON.parse(model.getMetaInfo());
+            } else {
+                modelNode = JSON.parseObject("{}");
+                modelNode.put(MODEL_NAME, model.getName());
+            }
+            modelNode.put(MODEL_ID, model.getId());
+            modelNode.put("model", JSON.parse(new String(repositoryService.getModelEditorSource(model.getId()))));
+        }
+        return modelNode;
+    }
+
+
+    @RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT)
+    @ResponseStatus(value = HttpStatus.OK)
+    public void saveModel(@PathVariable String modelId,
+                          @RequestParam Map<String, String> values) {
+        try {
+            Model model = repositoryService.getModel(modelId);
+            JSONObject modelJson = JSON.parseObject(model.getMetaInfo());
+
+            modelJson.put(MODEL_NAME, values.get("name"));
+            modelJson.put(MODEL_DESCRIPTION, values.get("description"));
+            model.setMetaInfo(modelJson.toString());
+            model.setName(values.get("name"));
+
+            repositoryService.saveModel(model);
+
+            repositoryService.addModelEditorSource(model.getId(), values.get("json_xml").getBytes("utf-8"));
+
+            InputStream svgStream = new ByteArrayInputStream(values.get("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) {
+            throw new ActivitiException("Error saving model", e);
+        }
+    }
+
+
+}