|
|
@@ -2,6 +2,8 @@ package com.java110.common.bmo.workflow.impl;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.java110.common.api.WorkflowApi;
|
|
|
import com.java110.common.bmo.workflow.IQueryWorkFlowFirstStaffBMO;
|
|
|
import com.java110.common.dao.IWorkflowServiceDao;
|
|
|
import com.java110.common.dao.IWorkflowStepServiceDao;
|
|
|
@@ -20,25 +22,34 @@ import com.java110.utils.util.StringUtil;
|
|
|
import com.java110.vo.ResultVo;
|
|
|
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.ProcessEngine;
|
|
|
import org.activiti.engine.ProcessEngines;
|
|
|
import org.activiti.engine.RepositoryService;
|
|
|
import org.activiti.engine.repository.Deployment;
|
|
|
import org.activiti.engine.repository.Model;
|
|
|
import org.activiti.engine.repository.ProcessDefinition;
|
|
|
+import org.apache.batik.transcoder.TranscoderInput;
|
|
|
+import org.apache.batik.transcoder.TranscoderOutput;
|
|
|
+import org.apache.batik.transcoder.image.PNGTranscoder;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.InputStream;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@Service("queryWorkFlowFirstStaffServiceImpl")
|
|
|
public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffBMO {
|
|
|
-
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(QueryWorkFlowFirstStaffBMOImpl.class);
|
|
|
@Autowired
|
|
|
private IWorkflowServiceDao workflowServiceDaoImpl;
|
|
|
|
|
|
@@ -54,6 +65,20 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
|
|
|
@Autowired
|
|
|
private IOaWorkflowInnerServiceSMO oaWorkflowInnerServiceSMOImpl;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RepositoryService repositoryService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ObjectMapper objectMapper;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ String MODEL_ID = "modelId";
|
|
|
+ String MODEL_NAME = "name";
|
|
|
+ String MODEL_REVISION = "revision";
|
|
|
+ String MODEL_DESCRIPTION = "description";
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public ResponseEntity<String> query(WorkflowDto workflowDto) {
|
|
|
|
|
|
@@ -163,4 +188,46 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
|
|
|
return ResultVo.success();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public ResponseEntity<String> saveModel(WorkflowModelDto workflowModelDto) {
|
|
|
+ //根据
|
|
|
+ OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
|
|
|
+ oaWorkflowDto.setModelId(workflowModelDto.getModelId());
|
|
|
+ List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
|
|
|
+
|
|
|
+ Assert.listOnlyOne(oaWorkflowDtos, "未包含流程");
|
|
|
+ try {
|
|
|
+ Model model = repositoryService.getModel(workflowModelDto.getModelId());
|
|
|
+ ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
|
|
|
+ modelJson.put(MODEL_NAME, oaWorkflowDtos.get(0).getFlowName());
|
|
|
+ modelJson.put(MODEL_DESCRIPTION, oaWorkflowDtos.get(0).getDescrible());
|
|
|
+ modelJson.put(ModelDataJsonConstants.MODEL_REVISION, model.getVersion() + 1);
|
|
|
+ model.setMetaInfo(modelJson.toString());
|
|
|
+ model.setName(oaWorkflowDtos.get(0).getFlowName());
|
|
|
+ repositoryService.saveModel(model);
|
|
|
+ repositoryService.addModelEditorSource(model.getId(), workflowModelDto.getJson_xml().getBytes("utf-8"));
|
|
|
+
|
|
|
+ InputStream svgStream = new ByteArrayInputStream(workflowModelDto.getSvg_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);
|
|
|
+ }
|
|
|
+
|
|
|
+ return deployModel(workflowModelDto);
|
|
|
+ }
|
|
|
+
|
|
|
}
|