activiti在线画流程图
springboot2.2
activiti6.0
activiti-modeler 5.22.0
注明:版本不一样会导致报错
效果图
代码分享:https://pan.baidu.com/s/10n9Lmr1YooK8kpcojjhIpw
pom文件
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.2.0.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <groupId>com</groupId>
- <artifactId>springboot_activiti</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>springboot_activiti</name>
- <description>Demo project for Spring Boot</description>
- <properties>
- <springboot.version>2.2.0.RELEASE</springboot.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- <activiti.version>6.0.0</activiti.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-engine</artifactId>
- <version>${activiti.version}</version>
- </dependency>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-spring</artifactId>
- <version>${activiti.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-core-asl</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- <exclusion>
- <artifactId>spring-context</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-jdbc</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-tx</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-orm</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-beans</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>mybatis</artifactId>
- <groupId>org.mybatis</groupId>
- </exclusion>
- <exclusion>
- <artifactId>activation</artifactId>
- <groupId>javax.activation</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-spring-boot-starter-basic</artifactId>
- <version>${activiti.version}</version>
- </dependency>
- <!-- Activiti 流程图 -->
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-common-rest</artifactId>
- <version>${activiti.version}</version>
- </dependency>
- <!-- Activiti 在线设计 -->
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-modeler</artifactId>
- <version>5.22.0</version>
- <exclusions>
- <exclusion>
- <artifactId>spring-beans</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-context</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-core</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-tx</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-web</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-security-config</artifactId>
- <groupId>org.springframework.security</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-security-core</artifactId>
- <groupId>org.springframework.security</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-security-crypto</artifactId>
- <groupId>org.springframework.security</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-security-web</artifactId>
- <groupId>org.springframework.security</groupId>
- </exclusion>
- <exclusion>
- <artifactId>spring-webmvc</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- <exclusion>
- <artifactId>activation</artifactId>
- <groupId>javax.activation</groupId>
- </exclusion>
- <exclusion>
- <artifactId>commons-io</artifactId>
- <groupId>commons-io</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-autoconfigure</artifactId>
- <version>${springboot.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-thymeleaf</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.3</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>2.10.0</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- <version>RELEASE</version>
- <scope>compile</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <configuration>
- <port>8081</port>
- <path>/activity</path>
- <systemProperties>
- <com.sun.management.jmxremote.port>4000</com.sun.management.jmxremote.port>
- </systemProperties>
- </configuration>
- </plugin>
- </plugins>
- </build>
页面代码介绍:
springboot静态文件处理
- @Configuration
- public class WebConfig implements WebMvcConfigurer {
- @Override
- public void addResourceHandlers(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数据的请求
- @RestController
- public class Test01Controller {
- @RequestMapping("/editor/stencilset")
- public String 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 class ModelTest {
- @RequestMapping("create")
- public void createModel(HttpServletRequest request, HttpServletResponse response){
- try{
- String modelName = "modelName6";
- String modelKey = "modelKey66";
- String description = "modelKey666";
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
- RepositoryService repositoryService = processEngine.getRepositoryService();
- ObjectMapper objectMapper = new ObjectMapper();
- 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 void saveModel(@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 = new TranscoderInput(svgStream);
- PNGTranscoder transcoder = new PNGTranscoder();
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- TranscoderOutput output = new TranscoderOutput(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"}
- )
- public ObjectNode 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);
- }
- }
- return modelNode;
- }
流程图保存成功以后这张表会有数据
流程图部署以后会出现bomn结尾的文件,
部署流程的请求,根据modelId
- @RequestMapping("/model/test02")
- public void test02(Object obj) throws Exception {
- Model modelData = repositoryService.getModel("40001");
- ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
- byte[] bpmnBytes = null;
- BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
- bpmnBytes = new BpmnXMLConverter().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在线画流程图的更多相关文章
- flowable+tomcat部署flowable项目,在线画流程图
参考: flowable+tomcat部署flowable项目,在线画流程图
- activiti 5.17 流程图中文乱码问题
1. 流程图中任务中的中文乱码显示问题. 解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...
- 使用网站websequencediagrams在线画时序图
在线画时序图的网站:https://www.websequencediagrams.com/ 该网站提供拖拉图形和编写脚本代码2个方式来制作时序图,同时提供多种显示风格. 实例: 1.脚本代码: ti ...
- canvas画流程图
用canvas画流程图: 需求:最后一个圆圈无直线 遇到问题:需要画多个圆圈时,画布超出显示屏加滚动条,解决方法是<canvas>外层<div>的width=100%,且ove ...
- 在线画UML图的工具
工作需要在线画各种UML图,类图.协作图.用例图等等,调查了一些在线画UML图的工具,有的做的很好但要收费,例如:http://www.gliffy.com/,发现现在免费好用的是ProcessOn: ...
- 使用mermain用Markdown的语法画流程图和UML图
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用mermain用Markdown的语法画流程图和UML图.
- Activiti 5.16 流程图高亮追踪 中文乱码问题解决方法
最近研究activiti的高亮流程图,发现中文是乱码,为了让大家少走弯路共享出来. 本文包含三个主要技术点: 1.spring MVC架构下输出动态图片 2.获得activiti流程图的stream流 ...
- 使用sublime+platUML快速画流程图
程序员难免要经常画流程图,状态图,时序图等.以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋.有时候修改文字后,为了较好的显示效果不得不再去修改图形.今天介绍的工具是如何使用 Sub ...
- 使用 Markdown Flow 画流程图
使用 Markdown Flow 画流程图 好处是可以方便的使用 Git 管理版本 st=>start: 开始 e=>end: 结束 c1=>condition: A c2=> ...
随机推荐
- 异步IO/协程/数据库/队列/缓存(转)
原文:Python之路,Day9 - 异步IO\数据库\队列\缓存 作者:金角大王Alex add by zhj: 文章很长 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这 ...
- 解决FastCGI 进程超过了配置的活动超时时限的问题
近日,需要满足测试需求,进行大数据并发测试时,报出[HTTP 错误 500.0 - Internal Server Error E:\PHP\php-cgi.exe - FastCGI 进程超过了配置 ...
- 十一:外观模式详解(Service,action与dao)
定义:外观模式是软件工程中常用的一种软件设计模式.它为子系统中的一组接口提供一个统一的高层接口.这一接口使得子系统更加容易使用. 该定义引自百度百科,它的表现很简单,将一系列子接口的功能进行整理,从而 ...
- Dikstra 堆优化板子
#include <bits/stdc++.h> #define MAXN 10005 using namespace std; typedef long long LL; vector& ...
- CTF必备技能丨Linux Pwn入门教程——ROP技术(下)
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- 那些年我们走过的坑,对Fortify的漏洞进行总结
1.修复方案,过滤引起Log Forging漏洞的敏感字符的公共方法 /** * Log Forging漏洞校验 * @param logs * @return */ public static St ...
- 谈谈<? extends T> 和<? super T>理解
项目中遇到<? extends T> 和<? super T> 这两者,来说说自己的理解.首先我们先了解什么是泛型 什么是泛型 泛型是在编译阶段一种防止错误对象输入的机制.编译 ...
- Nginx配置实验反向代理
l 实验要求 浏览器访问 8083.mine.com:8081 地址,(Nginx端口是8081)通过Nginx服务器反向代理监听请求,将请求转发到tomcat服务器上,实现真正内容的访问. l ...
- Java代码实现定时器
一 import java.util.Timer; import java.util.TimerTask; public class time { public static void main(St ...
- Odoo 启动选项总结
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189209.html 一:启动选项用在哪里 如果你是用Pycharm进行odoo二次开发的话,可以通过 R ...