| | |
| | | package com.java110.common.api; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.node.ObjectNode; |
| | | import com.java110.common.bmo.workflow.IQueryWorkFlowFirstStaffBMO; |
| | | import com.java110.dto.workflow.WorkflowDto; |
| | | import com.java110.dto.workflow.WorkflowModelDto; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.activiti.editor.constants.ModelDataJsonConstants; |
| | | import org.activiti.engine.ActivitiException; |
| | | import org.activiti.engine.ProcessEngine; |
| | | import org.activiti.engine.ProcessEngines; |
| | | 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.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 org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestHeader; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.ResponseStatus; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.ByteArrayOutputStream; |
| | |
| | | @Autowired |
| | | private ObjectMapper objectMapper; |
| | | |
| | | |
| | | |
| | | String MODEL_ID = "modelId"; |
| | | String MODEL_NAME = "name"; |
| | | String MODEL_REVISION = "revision"; |
| | | String MODEL_DESCRIPTION = "description"; |
| | | |
| | | |
| | | |
| | | @Autowired |
| | |
| | | /** |
| | | * 更新流程 |
| | | * |
| | | * @param modelId 模型ID |
| | | * @param name 流程模型名称 |
| | | * @param description |
| | | * @param json_xml 流程文件 |
| | | * @param svg_xml 图片 |
| | | * @param reqJson 模型ID |
| | | * @ServiceCode /workflow/saveModel |
| | | */ |
| | | @RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT) |
| | | @RequestMapping(value = "/saveModel", method = RequestMethod.POST) |
| | | @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")); |
| | | public ResponseEntity<String> saveModel( |
| | | @RequestBody JSONObject reqJson) { |
| | | WorkflowModelDto workflowModelDto = BeanConvertUtil.covertBean(reqJson, WorkflowModelDto.class); |
| | | |
| | | InputStream svgStream = new ByteArrayInputStream(svg_xml.getBytes("utf-8")); |
| | | TranscoderInput input = new TranscoderInput(svgStream); |
| | | //部署model |
| | | return queryWorkFlowFirstStaffBMOImpl.saveModel(workflowModelDto); |
| | | |
| | | 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 |
| | | * @ServiceCode /workflow/getEditorJson |
| | | */ |
| | | @SuppressWarnings("deprecation") |
| | | @RequestMapping(value = "/getEditorJson", method = RequestMethod.GET) |
| | |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | |