activiti保存流程设计
来源:互联网 发布:视频压缩的常用算法是 编辑:程序博客网 时间:2024/06/07 05:09
以下代码支持的版本是activiti5-13
流程设计图画完之后,就要保存,保存会操作两个表,act_re_model和act_ge_bytearray。
保存act_re_model记录
Model modelData = repositoryService.getModel(modelId);//先通过modelId去查找Model记录//如果没有就创建if ( modelData == null ){modelData = repositoryService.newModel();}//然后修改属性信息String processName = "流程名称";String processkey = "流程Key";String category = "分类";String documentation = "流程描述";// 创建model需要的MetaInfo属性数据ObjectNode modelObjectNode = objectMapper.createObjectNode();modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, processName); modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);// 版本modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION,documentation); modelData.setMetaInfo(modelObjectNode.toString());// 设置MetaInfo属性数据modelData.setName(processName);modelData.setKey(processkey);modelData.setCategory(category);// 保存模型repositoryService.saveModel(modelData);
保存act_ge_bytearray记录
1)保存二进制源xmlString xml = "";//真实的xml格式数据repositoryService.addModelEditorSource(modelData.getId(),xml.getBytes("UTF-8"));
2)保存流程图片
InputStream in = new ByteArrayInputStream(xml.getBytes("UTF-8"));InputStreamSource xmlSource = new InputStreamSource(in);BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter();BpmnModel bpmnModel = bpmnXMLConverter.convertToBpmnModel(xmlSource, true, false, "UTF-8");ListhighLightedActivities = new ArrayList ();MyDefaultProcessDiagramGenerator defaultProcessDiagramGenerator = new MyDefaultProcessDiagramGenerator();InputStream is = defaultProcessDiagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivities);ByteArrayOutputStream baos = new ByteArrayOutputStream();try {byte[] buff = new byte[1024];while ((is.read(buff)) != -1) {baos.write(buff);}byte[] result = baos.toByteArray();// 添加图片源this.repositoryService.addModelEditorSourceExtra(modelData.getId(), result);} catch (IOException e) {message = "流程图创建失败!";e.printStackTrace();}
因为此代码用的activiti版本是5-13,而图片生成是用5-22版本,需要将activiti-image-generator-5.22.0.jar导入5-13工程,本来图片生成包是独立的,但其中有些方法改动了,所以下面自定义一个图片生成类,集成DefaultProcessDiagramGenerator,代码如下:
import java.io.InputStream;import java.util.Collections;import java.util.List;import org.activiti.bpmn.model.Artifact;import org.activiti.bpmn.model.BpmnModel;import org.activiti.bpmn.model.FlowNode;import org.activiti.bpmn.model.GraphicInfo;import org.activiti.bpmn.model.Lane;import org.activiti.bpmn.model.Pool;import org.activiti.bpmn.model.Process;import org.activiti.bpmn.model.SubProcess;import org.activiti.image.impl.DefaultProcessDiagramCanvas;import org.activiti.image.impl.DefaultProcessDiagramGenerator;/** * @author 竹子 * 自定义流程图管理器 */public class MyDefaultProcessDiagramGenerator extendsDefaultProcessDiagramGenerator {public InputStream generateDiagram(BpmnModel bpmnModel, String imageType,ListhighLightedActivities, List highLightedFlows,String activityFontName, String labelFontName,String annotationFontName, ClassLoader customClassLoader,double scaleFactor) {return generateProcessDiagram(bpmnModel, imageType,highLightedActivities, highLightedFlows, activityFontName,labelFontName, annotationFontName, customClassLoader,scaleFactor).generateImage(imageType);}public InputStream generateDiagram(BpmnModel bpmnModel, String imageType,List highLightedActivities) {return generateDiagram(bpmnModel, imageType, highLightedActivities,Collections. emptyList());}public InputStream generateDiagram(BpmnModel bpmnModel, String imageType,List highLightedActivities, List highLightedFlows) {return generateDiagram(bpmnModel, imageType, highLightedActivities,highLightedFlows, null, null, null, null, 1.0);}protected DefaultProcessDiagramCanvas generateProcessDiagram(BpmnModel bpmnModel, String imageType,List highLightedActivities, List highLightedFlows,String activityFontName, String labelFontName,String annotationFontName, ClassLoader customClassLoader,double scaleFactor) {prepareBpmnModel(bpmnModel);DefaultProcessDiagramCanvas processDiagramCanvas = initProcessDiagramCanvas(bpmnModel, imageType, activityFontName, labelFontName,annotationFontName, customClassLoader);// Draw pool shape, if process is participant in collaborationfor (Pool pool : bpmnModel.getPools()) {GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(pool.getId());processDiagramCanvas.drawPoolOrLane(pool.getName(), graphicInfo);}// Draw lanesfor (Process process : bpmnModel.getProcesses()) {for (Lane lane : process.getLanes()) {GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(lane.getId());processDiagramCanvas.drawPoolOrLane(lane.getName(), graphicInfo);}}// Draw activities and their sequence-flowsfor (Process process : bpmnModel.getProcesses()) {for (FlowNode flowNode : process.findFlowElementsOfType(FlowNode.class)) {drawActivity(processDiagramCanvas, bpmnModel, flowNode,highLightedActivities, highLightedFlows, scaleFactor);}}// Draw artifactsfor (Process process : bpmnModel.getProcesses()) {for (Artifact artifact : process.getArtifacts()) {drawArtifact(processDiagramCanvas, bpmnModel, artifact);}List subProcesses = process.findFlowElementsOfType(SubProcess.class);if (subProcesses != null) {for (SubProcess subProcess : subProcesses) {for (Artifact subProcessArtifact : subProcess.getArtifacts()) {drawArtifact(processDiagramCanvas, bpmnModel,subProcessArtifact);}}}}return processDiagramCanvas;}}
阅读全文
1 0
- activiti保存流程设计
- Activiti流程设计工具
- Activiti流程设计工具
- activiti(5):流程设计
- Activiti流程设计工具
- activiti流程设计器汉化
- 初识Activiti流程设计工具
- Activiti中的流程历史保存流程发起人的方法
- Activiti中的流程历史保存流程发起人的方法
- activiti流程设计器activiti designer在eclipse中的安装。
- activiti,工作流,web流程设计器,SSM,activiti工作流
- activiti,工作流,web流程设计器,SSM,activiti工作流
- activiti,工作流,web流程设计器,SSM,activiti工作流
- activiti,工作流,web流程设计器,SSM,activiti工作流
- activiti,工作流,web流程设计器,SSM,activiti工作流
- activiti 工作流 web 流程设计器 SSM activiti工作流
- activiti modeler流程设计器界面定制
- Activiti 流程设计器下载地址
- 快速排序
- android 新浪微博平台开发之 ——授权登录
- MailUtils 发邮件用法
- PowerShell Credential
- 增强现实技术原理
- activiti保存流程设计
- 九层之台,始于垒土;合抱之木,始于毫末;千里之行,始于足下!
- <C语言>输入某个大写字母,产生一个金字塔图案。(字符与数字间的转换)
- 学会快速的搜索
- @ModelAttribute
- DummyData层--caffe
- thinkphp5中的分层控制器及其使用/tp5分层控制器
- linux vim 去掉 bomb
- bzoj1060 [ZJOI2007]时态同步