java110 hace 5 años
padre
commit
f98df3864f

+ 0 - 27
service-common/src/main/java/com/java110/common/api/ModelController.java

@@ -1,27 +0,0 @@
-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 {
-
-
-
-}

+ 0 - 136
service-common/src/main/java/com/java110/common/api/ModelRestController.java

@@ -1,136 +0,0 @@
-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.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.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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;
-
-/**
- * @author luobaimang
- * @date 2019/11/28
- */
-@RestController
-@RequestMapping("service")
-public class ModelRestController implements ModelDataJsonConstants {
-
-        protected static final Logger LOGGER = LoggerFactory.getLogger(ModelRestController.class);
-
-        @Autowired
-        private RepositoryService repositoryService;
-
-        @Autowired
-        private ObjectMapper objectMapper;
-
-        /**
-         * 更新流程
-         *
-         * @param modelId     模型ID
-         * @param name        流程模型名称
-         * @param description
-         * @param json_xml    流程文件
-         * @param svg_xml     图片
-         */
-        @RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT)
-        @ResponseStatus(value = HttpStatus.OK)
-        public void saveModel(@PathVariable String modelId
-                , String name, String description
-                , String json_xml, String svg_xml) {
-            try {
-
-                Model model = repositoryService.getModel(modelId);
-
-                ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
-
-                modelJson.put(MODEL_NAME, name);
-                modelJson.put(MODEL_DESCRIPTION, description);
-                modelJson.put(ModelDataJsonConstants.MODEL_REVISION, model.getVersion() + 1);
-                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();
-            } catch (Exception e) {
-                LOGGER.error("Error saving model", e);
-                throw new ActivitiException("Error saving model", e);
-            }
-        }
-
-
-    /**
-     * 获取model的节点信息,编辑器根据返回的json进行绘图
-     *
-     * @param modelId
-     * @return
-     */
-    @SuppressWarnings("deprecation")
-    @RequestMapping(value = "/model/{modelId}/json", method = RequestMethod.GET, produces = "application/json")
-    public ObjectNode getEditorJson(@PathVariable String modelId) {
-        ObjectNode modelNode = null;
-        Model model = repositoryService.getModel(modelId);
-        if (model != null) {
-            try {
-                if (StringUtils.isNotEmpty(model.getMetaInfo())) {
-                    modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
-                } else {
-                    modelNode = objectMapper.createObjectNode();
-                    modelNode.put(MODEL_NAME, model.getName());
-                }
-                modelNode.put(MODEL_ID, model.getId());
-                ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(
-                        new String(repositoryService.getModelEditorSource(model.getId()), "utf-8"));
-                modelNode.put("model", editorJsonNode);
-            } catch (Exception e) {
-                LOGGER.error("Error creating model JSON", e);
-                throw new ActivitiException("Error creating model JSON", e);
-            }
-        }
-        return modelNode;
-    }
-
-    /**
-     * 获取编辑器组件及配置项信息
-     * 获取流程json文件
-     *
-     * @return
-     */
-    @RequestMapping(value = "/editor/stencilset", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
-    @ResponseBody
-    public String getStencilset() {
-        InputStream stencilsetStream = this.getClass().getClassLoader().getResourceAsStream("stencilset.json");
-        try {
-            return IOUtils.toString(stencilsetStream, "utf-8");
-        } catch (Exception e) {
-            throw new ActivitiException("Error while loading stencil set", e);
-        }
-    }
-}

+ 113 - 2
service-common/src/main/java/com/java110/common/api/WorkflowApi.java

@@ -5,20 +5,41 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.java110.common.bmo.workflow.IQueryWorkFlowFirstStaffBMO;
 import com.java110.dto.workflow.WorkflowDto;
 import org.activiti.editor.constants.ModelDataJsonConstants;
+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.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 
 @RestController
 @RequestMapping("/workflow")
 public class WorkflowApi {
+    private static final Logger logger = LoggerFactory.getLogger(WorkflowApi.class);
+
+    @Autowired
+    private RepositoryService repositoryService;
+
+    @Autowired
+    private ObjectMapper objectMapper;
+
+    String MODEL_ID = "modelId";
+    String MODEL_NAME = "name";
+    String MODEL_REVISION = "revision";
+    String MODEL_DESCRIPTION = "description";
+
 
     @Autowired
     private IQueryWorkFlowFirstStaffBMO queryWorkFlowFirstStaffBMOImpl;
@@ -35,8 +56,98 @@ public class WorkflowApi {
     }
 
 
+    /**
+     * 更新流程
+     *
+     * @param modelId     模型ID
+     * @param name        流程模型名称
+     * @param description
+     * @param json_xml    流程文件
+     * @param svg_xml     图片
+     */
+    @RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT)
+    @ResponseStatus(value = HttpStatus.OK)
+    public void saveModel(@PathVariable String modelId
+            , String name, String description
+            , String json_xml, String svg_xml) {
+        try {
+            Model model = repositoryService.getModel(modelId);
+            ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
+            modelJson.put(MODEL_NAME, name);
+            modelJson.put(MODEL_DESCRIPTION, description);
+            modelJson.put(ModelDataJsonConstants.MODEL_REVISION, model.getVersion() + 1);
+            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();
+        } catch (Exception e) {
+            logger.error("Error saving model", e);
+            throw new ActivitiException("Error saving model", e);
+        }
+    }
+
+
+    /**
+     * 获取model的节点信息,编辑器根据返回的json进行绘图
+     * @ServiceCode /workflow/getEditorJson
+     * @param modelId
+     * @return
+     */
+    @SuppressWarnings("deprecation")
+    @RequestMapping(value = "/getEditorJson", method = RequestMethod.GET)
+    public ResponseEntity getEditorJson(@RequestParam(value = "modelId") String modelId) {
+        ObjectNode modelNode = null;
+        Model model = repositoryService.getModel(modelId);
+        if (model != null) {
+            try {
+                if (StringUtils.isNotEmpty(model.getMetaInfo())) {
+                    modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
+                } else {
+                    modelNode = objectMapper.createObjectNode();
+                    modelNode.put(MODEL_NAME, model.getName());
+                }
+                modelNode.put(MODEL_ID, model.getId());
+                ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(
+                        new String(repositoryService.getModelEditorSource(model.getId()), "utf-8"));
+                modelNode.put("model", editorJsonNode);
+            } catch (Exception e) {
+                logger.error("Error creating model JSON", e);
+                throw new ActivitiException("Error creating model JSON", e);
+            }
+        }
+        return new ResponseEntity(modelNode.toString(), HttpStatus.OK);
+    }
+
+    /**
+     * 获取编辑器组件及配置项信息
+     * 获取流程json文件
+     *
+     * @return
+     */
+    @RequestMapping(value = "/editor/stencilset", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
+    @ResponseBody
+    public String getStencilset() {
+        InputStream stencilsetStream = this.getClass().getClassLoader().getResourceAsStream("stencilset.json");
+        try {
+            return IOUtils.toString(stencilsetStream, "utf-8");
+        } catch (Exception e) {
+            throw new ActivitiException("Error while loading stencil set", e);
+        }
+    }
 
 
 }

+ 12 - 11
service-common/src/main/java/com/java110/common/smo/impl/WorkflowInnerServiceSMOImpl.java

@@ -29,12 +29,7 @@ import org.activiti.bpmn.model.SequenceFlow;
 import org.activiti.bpmn.model.StartEvent;
 import org.activiti.bpmn.model.UserTask;
 import org.activiti.editor.constants.ModelDataJsonConstants;
-import org.activiti.engine.HistoryService;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.ProcessEngines;
-import org.activiti.engine.RepositoryService;
-import org.activiti.engine.RuntimeService;
-import org.activiti.engine.TaskService;
+import org.activiti.engine.*;
 import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.history.HistoricActivityInstanceQuery;
 import org.activiti.engine.history.HistoricProcessInstance;
@@ -44,12 +39,19 @@ import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.Model;
 import org.activiti.engine.task.Comment;
 import org.activiti.image.ProcessDiagramGenerator;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.PNGTranscoder;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.text.SimpleDateFormat;
@@ -556,9 +558,6 @@ public class WorkflowInnerServiceSMOImpl extends BaseServiceSMO implements IWork
             // 需要转换成HistoricActivityInstance
             HistoricActivityInstance activityInstance = (HistoricActivityInstance) iterator
                     .next();
-//            if (activityInstance.getEndTime() == null) {
-//                continue;
-//            }
 
             tmpWorkflowAuditInfoDto = new WorkflowAuditInfoDto();
             tmpWorkflowAuditInfoDto.setAuditName(activityInstance.getActivityName());
@@ -631,6 +630,8 @@ public class WorkflowInnerServiceSMOImpl extends BaseServiceSMO implements IWork
         logger.info("创建模型完善ModelEditorSource结束");
     }
 
+
+
     /**
      * @param processInstanceId
      * @return

+ 46 - 0
service-front/src/main/java/com/java110/front/controller/activiti/ModelController.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.front.controller.activiti;
+
+import com.java110.front.smo.activiti.IModelSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @desc add by 吴学文 8:38
+ */
+@RestController
+public class ModelController {
+
+    @Autowired
+    private IModelSMO modelSMOImpl;
+
+    /**
+     * 查询工作流json
+     *
+     * @param modelId
+     * @return
+     */
+    @RequestMapping(value = "/model/${modelId}/json", method = RequestMethod.GET)
+    public ResponseEntity<String> queryJson(@PathVariable String modelId) {
+
+        return modelSMOImpl.getJson(modelId);
+    }
+}

+ 28 - 0
service-front/src/main/java/com/java110/front/smo/activiti/IModelSMO.java

@@ -0,0 +1,28 @@
+package com.java110.front.smo.activiti;/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.springframework.http.ResponseEntity;
+
+public interface IModelSMO {
+
+    /**
+     * 获取json 信息
+     *
+     * @param modelId
+     * @return
+     */
+    ResponseEntity<String> getJson(String modelId);
+}

+ 60 - 0
service-front/src/main/java/com/java110/front/smo/activiti/impl/ModelSMOImpl.java

@@ -0,0 +1,60 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.front.smo.activiti.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.component.AbstractComponentSMO;
+import com.java110.core.context.IPageData;
+import com.java110.core.context.PageData;
+import com.java110.dto.app.AppDto;
+import com.java110.front.smo.activiti.IModelSMO;
+import com.java110.utils.constant.ServiceConstant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @desc add by 吴学文 8:53
+ */
+@Service
+public class ModelSMOImpl extends AbstractComponentSMO implements IModelSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ResponseEntity<String> getJson(String modelId) {
+        IPageData pd = PageData.newInstance().builder("-1", "-1", "", "",
+                "", "", "", "", AppDto.WEB_APP_ID);
+        ///workflow/getEditorJson
+       ResponseEntity responseEntity = this.callCenterService(restTemplate, pd, "",
+                ServiceConstant.SERVICE_API_URL + "/api/workflow/getEditorJson?modelId="+modelId,
+                HttpMethod.GET);
+        return responseEntity;
+    }
+
+    @Override
+    protected void validate(IPageData pd, JSONObject paramIn) {
+
+    }
+
+    @Override
+    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws Exception {
+        return null;
+    }
+}