activiti前端画图转化_activiti在线画流程图
springboot2.2
activiti6.0
activiti-modeler 5.22.0
注明:版本不一样会导致报错
效果图
代码分享:
链接:https://pan.baidu.com/s/1mDzlm9SdPYAMl2lq0GFPJA
提取码:1234
pom文件
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.0.RELEASE
com
springboot_activiti
0.0.1-SNAPSHOT
springboot_activiti
Demo project for Spring Boot
2.2.0.RELEASE
UTF-8
UTF-8
1.8
6.0.0
org.activiti
activiti-engine
${activiti.version}
org.activiti
activiti-spring
${activiti.version}
org.codehaus.jackson
jackson-core-asl
org.slf4j
slf4j-log4j12
spring-context
org.springframework
spring-jdbc
org.springframework
spring-tx
org.springframework
spring-orm
org.springframework
spring-beans
org.springframework
mybatis
org.mybatis
activation
javax.activation
org.activiti
activiti-spring-boot-starter-basic
${activiti.version}
org.activiti
activiti-common-rest
${activiti.version}
org.activiti
activiti-modeler
5.22.0
spring-beans
org.springframework
spring-context
org.springframework
spring-core
org.springframework
spring-tx
org.springframework
spring-web
org.springframework
spring-security-config
org.springframework.security
spring-security-core
org.springframework.security
spring-security-crypto
org.springframework.security
spring-security-web
org.springframework.security
spring-webmvc
org.springframework
activation
javax.activation
commons-io
commons-io
org.springframework.boot
spring-boot-autoconfigure
${springboot.version}
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
commons-io
commons-io
2.3
com.fasterxml.jackson.core
jackson-core
2.10.0
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
runtime
org.junit.jupiter
junit-jupiter-api
RELEASE
compile
org.springframework.boot
spring-boot-maven-plugin
org.apache.tomcat.maven
tomcat7-maven-plugin
8081
/activity
4000
View Code
页面代码介绍:
springboot静态文件处理
@Configurationpublic class WebConfig implementsWebMvcConfigurer {
@Overridepublic voidaddResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/html/**").addResourceLocations("classpath:/html/");
registry.addResourceHandler("/diagram-viewer/**").addResourceLocations("classpath:/html/");
registry.addResourceHandler("/editor-app/**").addResourceLocations("classpath:/html/");
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/");
}
}
获取json数据的请求
@RestControllerpublic classTest01Controller {
@RequestMapping("/editor/stencilset")publicString test01(){
InputStream stream=this.getClass().getClassLoader().getResourceAsStream("stencilset.json");try{return IOUtils.toString(stream,"utf-8");
}catch(Exception e){
}return null;
}
}
在线设计流程新建model
@Controller
@RequestMapping("model")public classModelTest {
@RequestMapping("create")public voidcreateModel(HttpServletRequest request, HttpServletResponse response){try{
String modelName= "modelName6";
String modelKey= "modelKey66";
String description= "modelKey666";
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService=processEngine.getRepositoryService();
ObjectMapper objectMapper= newObjectMapper();
ObjectNode editorNode=objectMapper.createObjectNode();
editorNode.put("id", "canvas");
editorNode.put("resourceId", "canvas");
ObjectNode stencilSetNode=objectMapper.createObjectNode();
stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
editorNode.put("stencilset", stencilSetNode);
Model modelData=repositoryService.newModel();
ObjectNode modelObjectNode=objectMapper.createObjectNode();
modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, modelName);
modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION,1);
modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
modelData.setMetaInfo(modelObjectNode.toString());
modelData.setName(modelName);
modelData.setKey(modelKey);//保存模型
repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));
response.sendRedirect(request.getContextPath()+ "/html/modeler.html?modelId=" +modelData.getId());
}catch(Exception e){
}
}
}
画流程图保存请求
@RequestMapping("/model/{modelId}/save")
@ResponseStatus(HttpStatus.OK)public voidsaveModel(@PathVariable String modelId, HttpServletRequest req, HttpServletResponse resp) {try{
Model model= this.repositoryService.getModel(modelId);
ObjectNode modelJson= (ObjectNode)this.objectMapper.readTree(model.getMetaInfo());
modelJson.put("name", req.getParameter("name"));
modelJson.put("description",req.getParameter("description"));
model.setMetaInfo(modelJson.toString());
model.setName(req.getParameter("name"));this.repositoryService.saveModel(model);this.repositoryService.addModelEditorSource(model.getId(), (req.getParameter("json_xml")).getBytes("utf-8"));
InputStream svgStream= new ByteArrayInputStream((req.getParameter("svg_xml")).getBytes("utf-8"));
TranscoderInput input= newTranscoderInput(svgStream);
PNGTranscoder transcoder= newPNGTranscoder();
ByteArrayOutputStream outStream= newByteArrayOutputStream();
TranscoderOutput output= newTranscoderOutput(outStream);
transcoder.transcode(input, output);byte[] result =outStream.toByteArray();
System.out.println(new String(result,"utf-8"));this.repositoryService.addModelEditorSourceExtra(model.getId(), result);
outStream.close();
}catch(Exception var11) {
LOGGER.error("Error saving model", var11);throw new ActivitiException("Error saving model", var11);
}
}
流程图查看的请求
@RequestMapping(
value= {"/model/{modelId}/json"},
method={RequestMethod.GET},
produces= {"application/json"}
)publicObjectNode getEditorJson(@PathVariable String modelId) {
ObjectNode modelNode= null;
Model model= this.repositoryService.getModel(modelId);if (model != null) {try{if(StringUtils.isNotEmpty(model.getMetaInfo())) {
modelNode= (ObjectNode)this.objectMapper.readTree(model.getMetaInfo());
}else{
modelNode= this.objectMapper.createObjectNode();
modelNode.put("name", model.getName());
}
modelNode.put("modelId", model.getId());
ObjectNode editorJsonNode= (ObjectNode)this.objectMapper.readTree(new String(this.repositoryService.getModelEditorSource(model.getId()), "utf-8"));
modelNode.put("model", editorJsonNode);
}catch(Exception var5) {
LOGGER.error("Error creating model JSON", var5);throw new ActivitiException("Error creating model JSON", var5);
}
}returnmodelNode;
}
流程图保存成功以后这张表会有数据
流程图部署以后会出现bomn结尾的文件,
部署流程的请求,根据modelId
@RequestMapping("/model/test02")public void test02(Object obj) throwsException {
Model modelData= repositoryService.getModel("40001");
ObjectNode modelNode= (ObjectNode) newObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));byte[] bpmnBytes = null;
BpmnModel model= newBpmnJsonConverter().convertToBpmnModel(modelNode);
bpmnBytes= newBpmnXMLConverter().convertToXML(model);
String processName= modelData.getName() + ".bpmn";
Deployment deployment=repositoryService.createDeployment()
.name(modelData.getName()).addString(processName,new String(bpmnBytes,"UTF-8"))
.deploy();
}
根据这个表的key进行流程启动,指定审批人
随意写了一些demo。。。。
重点步骤 就是新建model,保存提交部署流程,启动流程指定审批人,审批提交
activiti前端画图转化_activiti在线画流程图相关推荐
- activiti前端画图转化_用于Activiti前端显示流程图的插件
因为现在做一个基于Activit的工作流OA,在设计过程中需要显示用户设计出来的流程图. 所以需要使用一个流程图插件,可以用来加载流程,也可以直接通过拖拽的方式设计流程. 思来想去,搜索了很多插件,最 ...
- activiti前端画图转化_记Activiti入门使用-2 流程绘制、导入及开始一个流程
一.流程绘制与导入 百度啥的找了好多bpmn绘制工具,都不尽如人意,大多数都不能编辑网关出口的跳转条件,最后还是选择了activiti官方的那个绘图的app... 啥都好,就是线不能弯,很难受.(后来 ...
- ProcessOn在线画流程图介绍
前言 作为一名专业的程序员,项目中经常需要用到流程图.思维导图.组织结构图.网络拓扑图.BPMN.UML图.UI界面原型设计等,这个时候一个好的画图工具是必不可少了,你可能会使用Microsoft V ...
- 使用ProcessOn在线画流程图
题外话:年后刚换工作,两个月没更新博客了~~ 前言 作为一名专业的程序员,项目中经常需要用到流程图.思维导图.组织结构图.网络拓扑图.BPMN.UML图.UI界面原型设计等,这个时候一个好的画图工具是 ...
- 分享几个在线画流程图的网站
公司的电脑不能安装外面的软件,只能安装内部软件超市的.但是里面又没有好用的流程图软件,如:visio等. 所以只能找找在线的流程图工具,还好找到几个还不错的,推荐给大家: https://www.pr ...
- flowable+tomcat部署flowable项目,在线画流程图
前置条件:jdk8,tomcat8(注意:jdk7可能会报错) flowable下载地址 https://github.com/flowable/flowable-engine/releases/do ...
- 一个非常好用的,在线画图软件。开源的在线画流程图软件,超级棒。draw.io
前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/83689187 未经博主允许不得转载. 博主地址是:http://blog ...
- 介绍几个在线画流程图的工具
目前我们使用的流程图制作软件大体有RFFLOW.FLOW CHARTING.VISIO三种,可是它们的体积和资源占用情况很大,操作复杂,有没有简单易用不需安装的流程图制作软件呢?下面我给大家推荐几款在 ...
- 【在线画流程图】网站
目录 一.迅捷流程图 二.ProcessOn 一.迅捷流程图 点击这里跳转 链接:https://www.liuchengtu.com/lct/ 二.ProcessOn 点击这里跳转 链接:https ...
最新文章
- 仅需2张图,AI便可生成完整运动过程
- 卓讯企业名录搜索软件_还在用卓讯企业名录搜索软件吗?探迹黑科技助力企业提升销售效率...
- JAVA中int、String的类型转换
- 分析Oracle有时会用索引来查找数据的原因-oracle执行计划
- 从Java面试官的角度,如何快速判断程序员的能力
- 如何完全卸载 Sublime Text
- Maven : Maven和jenkins报错 ClassNotFoundException : org.slf4j.Logger
- flask框架_Flask: flask框架是如何实现非阻塞并发的
- Java开发工具(Eclipse工作空间的基本配置)
- 虚伪,不只是形容一个人
- html写法影响加载,html加载顺序以及影响页面二次渲染额的因素
- Luogu3178 [HAOI2015]树上操作
- 杂题收录+简要题解3【杭电多校】
- 轻量级图片批量上传JS插件 imgFileupload.js
- 学计算机高中选那三科,高中选哪三科最吃香
- 驭势领读 | 《让大象飞》:资本寒冬正好能让市场回归理性
- 计算平均成绩和总成绩
- 什么是html超文本语言,什么是超文本?HTML超文本标记语言怎么学?
- OPENGL颜色混合
- 变态反应电子病历软件行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
热门文章
- 学好3D建模之后,找的工作薪资能够达到多少?
- 智能投影的2014:今年它是一碗“杂碎汤”,明年我们期待黑科技
- 代码随想录算法训练Day11 LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)
- win11 “设置”,“任务栏设置”打不开问题解决
- mysql 在linux中使用_mysql-在linux中的使用..
- 【WPF】 BasedOn的用法
- Linux内核KASAN内存检测原理
- recharts中Legend的margin属性设置无效
- 基于Kaldi+GStreamer搭建线上的实时语音识别器
- import datetime