springboot2.2

activiti6.0

activiti-modeler 5.22.0

注明:版本不一样会导致报错

上一篇:springboot整合activiti

效果图

代码分享:https://pan.baidu.com/s/10n9Lmr1YooK8kpcojjhIpw

pom文件

  1. <modelVersion>4.0.0</modelVersion>
  2. <parent>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>2.2.0.RELEASE</version>
  6. <relativePath/> <!-- lookup parent from repository -->
  7. </parent>
  8. <groupId>com</groupId>
  9. <artifactId>springboot_activiti</artifactId>
  10. <version>0.0.1-SNAPSHOT</version>
  11. <name>springboot_activiti</name>
  12. <description>Demo project for Spring Boot</description>
  13.  
  14. <properties>
  15. <springboot.version>2.2.0.RELEASE</springboot.version>
  16. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  18. <java.version>1.8</java.version>
  19. <activiti.version>6.0.0</activiti.version>
  20. </properties>
  21.  
  22. <dependencies>
  23.  
  24. <dependency>
  25. <groupId>org.activiti</groupId>
  26. <artifactId>activiti-engine</artifactId>
  27. <version>${activiti.version}</version>
  28. </dependency>
  29.  
  30. <dependency>
  31. <groupId>org.activiti</groupId>
  32. <artifactId>activiti-spring</artifactId>
  33. <version>${activiti.version}</version>
  34. <exclusions>
  35. <exclusion>
  36. <groupId>org.codehaus.jackson</groupId>
  37. <artifactId>jackson-core-asl</artifactId>
  38. </exclusion>
  39. <exclusion>
  40. <groupId>org.slf4j</groupId>
  41. <artifactId>slf4j-log4j12</artifactId>
  42. </exclusion>
  43. <exclusion>
  44. <artifactId>spring-context</artifactId>
  45. <groupId>org.springframework</groupId>
  46. </exclusion>
  47. <exclusion>
  48. <artifactId>spring-jdbc</artifactId>
  49. <groupId>org.springframework</groupId>
  50. </exclusion>
  51. <exclusion>
  52. <artifactId>spring-tx</artifactId>
  53. <groupId>org.springframework</groupId>
  54. </exclusion>
  55. <exclusion>
  56. <artifactId>spring-orm</artifactId>
  57. <groupId>org.springframework</groupId>
  58. </exclusion>
  59. <exclusion>
  60. <artifactId>spring-beans</artifactId>
  61. <groupId>org.springframework</groupId>
  62. </exclusion>
  63. <exclusion>
  64. <artifactId>mybatis</artifactId>
  65. <groupId>org.mybatis</groupId>
  66. </exclusion>
  67. <exclusion>
  68. <artifactId>activation</artifactId>
  69. <groupId>javax.activation</groupId>
  70. </exclusion>
  71. </exclusions>
  72.  
  73. </dependency>
  74.  
  75. <dependency>
  76. <groupId>org.activiti</groupId>
  77. <artifactId>activiti-spring-boot-starter-basic</artifactId>
  78. <version>${activiti.version}</version>
  79. </dependency>
  80.  
  81. <!-- Activiti 流程图 -->
  82. <dependency>
  83. <groupId>org.activiti</groupId>
  84. <artifactId>activiti-common-rest</artifactId>
  85. <version>${activiti.version}</version>
  86. </dependency>
  87. <!-- Activiti 在线设计 -->
  88. <dependency>
  89. <groupId>org.activiti</groupId>
  90. <artifactId>activiti-modeler</artifactId>
  91. <version>5.22.0</version>
  92. <exclusions>
  93. <exclusion>
  94. <artifactId>spring-beans</artifactId>
  95. <groupId>org.springframework</groupId>
  96. </exclusion>
  97. <exclusion>
  98. <artifactId>spring-context</artifactId>
  99. <groupId>org.springframework</groupId>
  100. </exclusion>
  101. <exclusion>
  102. <artifactId>spring-core</artifactId>
  103. <groupId>org.springframework</groupId>
  104. </exclusion>
  105. <exclusion>
  106. <artifactId>spring-tx</artifactId>
  107. <groupId>org.springframework</groupId>
  108. </exclusion>
  109. <exclusion>
  110. <artifactId>spring-web</artifactId>
  111. <groupId>org.springframework</groupId>
  112. </exclusion>
  113. <exclusion>
  114. <artifactId>spring-security-config</artifactId>
  115. <groupId>org.springframework.security</groupId>
  116. </exclusion>
  117. <exclusion>
  118. <artifactId>spring-security-core</artifactId>
  119. <groupId>org.springframework.security</groupId>
  120. </exclusion>
  121. <exclusion>
  122. <artifactId>spring-security-crypto</artifactId>
  123. <groupId>org.springframework.security</groupId>
  124. </exclusion>
  125. <exclusion>
  126. <artifactId>spring-security-web</artifactId>
  127. <groupId>org.springframework.security</groupId>
  128. </exclusion>
  129. <exclusion>
  130. <artifactId>spring-webmvc</artifactId>
  131. <groupId>org.springframework</groupId>
  132. </exclusion>
  133. <exclusion>
  134. <artifactId>activation</artifactId>
  135. <groupId>javax.activation</groupId>
  136. </exclusion>
  137. <exclusion>
  138. <artifactId>commons-io</artifactId>
  139. <groupId>commons-io</groupId>
  140. </exclusion>
  141. </exclusions>
  142. </dependency>
  143.  
  144. <dependency>
  145. <groupId>org.springframework.boot</groupId>
  146. <artifactId>spring-boot-autoconfigure</artifactId>
  147. <version>${springboot.version}</version>
  148. </dependency>
  149.  
  150. <dependency>
  151. <groupId>org.springframework.boot</groupId>
  152. <artifactId>spring-boot-starter-tomcat</artifactId>
  153. </dependency>
  154. <dependency>
  155. <groupId>org.springframework.boot</groupId>
  156. <artifactId>spring-boot-starter-test</artifactId>
  157. <scope>test</scope>
  158. </dependency>
  159.  
  160. <dependency>
  161. <groupId>org.springframework.boot</groupId>
  162. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  163. </dependency>
  164. <dependency>
  165. <groupId>org.springframework.boot</groupId>
  166. <artifactId>spring-boot-starter-web</artifactId>
  167. </dependency>
  168.  
  169. <dependency>
  170. <groupId>commons-io</groupId>
  171. <artifactId>commons-io</artifactId>
  172. <version>2.3</version>
  173. </dependency>
  174.  
  175. <dependency>
  176. <groupId>com.fasterxml.jackson.core</groupId>
  177. <artifactId>jackson-core</artifactId>
  178. <version>2.10.0</version>
  179. </dependency>
  180.  
  181. <dependency>
  182. <groupId>org.springframework.boot</groupId>
  183. <artifactId>spring-boot-starter-data-jpa</artifactId>
  184. </dependency>
  185. <dependency>
  186. <groupId>mysql</groupId>
  187. <artifactId>mysql-connector-java</artifactId>
  188. <scope>runtime</scope>
  189. </dependency>
  190.  
  191. <dependency>
  192. <groupId>org.junit.jupiter</groupId>
  193. <artifactId>junit-jupiter-api</artifactId>
  194. <version>RELEASE</version>
  195. <scope>compile</scope>
  196. </dependency>
  197.  
  198. </dependencies>
  199.  
  200. <build>
  201. <plugins>
  202. <plugin>
  203. <groupId>org.springframework.boot</groupId>
  204. <artifactId>spring-boot-maven-plugin</artifactId>
  205. </plugin>
  206.  
  207. <plugin>
  208. <groupId>org.apache.tomcat.maven</groupId>
  209. <artifactId>tomcat7-maven-plugin</artifactId>
  210. <configuration>
  211. <port>8081</port>
  212. <path>/activity</path>
  213. <systemProperties>
  214. <com.sun.management.jmxremote.port>4000</com.sun.management.jmxremote.port>
  215. </systemProperties>
  216. </configuration>
  217. </plugin>
  218. </plugins>
  219. </build>

页面代码介绍:

springboot静态文件处理

  1. @Configuration
  2. public class WebConfig implements WebMvcConfigurer {
  3.  
  4. @Override
  5. public void addResourceHandlers(ResourceHandlerRegistry registry){
  6. registry.addResourceHandler("/html/**").addResourceLocations("classpath:/html/");
  7. registry.addResourceHandler("/diagram-viewer/**").addResourceLocations("classpath:/html/");
  8. registry.addResourceHandler("/editor-app/**").addResourceLocations("classpath:/html/");
  9. registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
  10. registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/");
  11. }
  12. }

获取json数据的请求

  1. @RestController
  2. public class Test01Controller {
  3.  
  4. @RequestMapping("/editor/stencilset")
  5. public String test01(){
  6. InputStream stream=this.getClass().getClassLoader().getResourceAsStream("stencilset.json");
  7. try{
  8. return IOUtils.toString(stream,"utf-8");
  9. }catch (Exception e){
  10.  
  11. }
  12. return null;
  13. }
  14. }

在线设计流程新建model

  1. @Controller
  2. @RequestMapping("model")
  3. public class ModelTest {
  4.  
  5. @RequestMapping("create")
  6. public void createModel(HttpServletRequest request, HttpServletResponse response){
  7. try{
  8. String modelName = "modelName6";
  9. String modelKey = "modelKey66";
  10. String description = "modelKey666";
  11.  
  12. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  13.  
  14. RepositoryService repositoryService = processEngine.getRepositoryService();
  15.  
  16. ObjectMapper objectMapper = new ObjectMapper();
  17. ObjectNode editorNode = objectMapper.createObjectNode();
  18. editorNode.put("id", "canvas");
  19. editorNode.put("resourceId", "canvas");
  20. ObjectNode stencilSetNode = objectMapper.createObjectNode();
  21. stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
  22. editorNode.put("stencilset", stencilSetNode);
  23. Model modelData = repositoryService.newModel();
  24.  
  25. ObjectNode modelObjectNode = objectMapper.createObjectNode();
  26. modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, modelName);
  27. modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
  28. modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
  29. modelData.setMetaInfo(modelObjectNode.toString());
  30. modelData.setName(modelName);
  31. modelData.setKey(modelKey);
  32.  
  33. //保存模型
  34. repositoryService.saveModel(modelData);
  35. repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));
  36. response.sendRedirect(request.getContextPath() + "/html/modeler.html?modelId=" + modelData.getId());
  37. }catch (Exception e){
  38. }
  39. }
  40.  
  41. }

画流程图保存请求

  1. @RequestMapping("/model/{modelId}/save")
  2. @ResponseStatus(HttpStatus.OK)
  3. public void saveModel(@PathVariable String modelId, HttpServletRequest req, HttpServletResponse resp) {
  4. try {
  5. Model model = this.repositoryService.getModel(modelId);
  6. ObjectNode modelJson = (ObjectNode)this.objectMapper.readTree(model.getMetaInfo());
  7. modelJson.put("name", req.getParameter("name"));
  8. modelJson.put("description",req.getParameter("description"));
  9. model.setMetaInfo(modelJson.toString());
  10. model.setName(req.getParameter("name"));
  11. this.repositoryService.saveModel(model);
  12. this.repositoryService.addModelEditorSource(model.getId(), (req.getParameter("json_xml")).getBytes("utf-8"));
  13. InputStream svgStream = new ByteArrayInputStream((req.getParameter("svg_xml")).getBytes("utf-8"));
  14. TranscoderInput input = new TranscoderInput(svgStream);
  15. PNGTranscoder transcoder = new PNGTranscoder();
  16. ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  17. TranscoderOutput output = new TranscoderOutput(outStream);
  18. transcoder.transcode(input, output);
  19. byte[] result = outStream.toByteArray();
  20. System.out.println(new String(result,"utf-8"));
  21. this.repositoryService.addModelEditorSourceExtra(model.getId(), result);
  22. outStream.close();
  23. } catch (Exception var11) {
  24. LOGGER.error("Error saving model", var11);
  25. throw new ActivitiException("Error saving model", var11);
  26. }
  27. }

流程图查看的请求

  1. @RequestMapping(
  2. value = {"/model/{modelId}/json"},
  3. method = {RequestMethod.GET},
  4. produces = {"application/json"}
  5. )
  6. public ObjectNode getEditorJson(@PathVariable String modelId) {
  7. ObjectNode modelNode = null;
  8. Model model = this.repositoryService.getModel(modelId);
  9. if (model != null) {
  10. try {
  11. if (StringUtils.isNotEmpty(model.getMetaInfo())) {
  12. modelNode = (ObjectNode)this.objectMapper.readTree(model.getMetaInfo());
  13. } else {
  14. modelNode = this.objectMapper.createObjectNode();
  15. modelNode.put("name", model.getName());
  16. }
  17.  
  18. modelNode.put("modelId", model.getId());
  19. ObjectNode editorJsonNode = (ObjectNode)this.objectMapper.readTree(new String(this.repositoryService.getModelEditorSource(model.getId()), "utf-8"));
  20. modelNode.put("model", editorJsonNode);
  21. } catch (Exception var5) {
  22. LOGGER.error("Error creating model JSON", var5);
  23. throw new ActivitiException("Error creating model JSON", var5);
  24. }
  25. }
  26.  
  27. return modelNode;
  28. }

流程图保存成功以后这张表会有数据

流程图部署以后会出现bomn结尾的文件,

部署流程的请求,根据modelId

  1. @RequestMapping("/model/test02")
  2. public void test02(Object obj) throws Exception {
  3. Model modelData = repositoryService.getModel("40001");
  4. ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
  5. byte[] bpmnBytes = null;
  6.  
  7. BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
  8. bpmnBytes = new BpmnXMLConverter().convertToXML(model);
  9.  
  10. String processName = modelData.getName() + ".bpmn";
  11.  
  12. Deployment deployment = repositoryService.createDeployment()
  13. .name(modelData.getName()).addString(processName, new String(bpmnBytes,"UTF-8"))
  14. .deploy();
  15.  
  16. }

根据这个表的key进行流程启动,指定审批人

随意写了一些demo。。。。

重点步骤 就是新建model,保存提交部署流程,启动流程指定审批人,审批提交

activiti在线画流程图的更多相关文章

  1. flowable+tomcat部署flowable项目,在线画流程图

    参考: flowable+tomcat部署flowable项目,在线画流程图

  2. activiti 5.17 流程图中文乱码问题

    1. 流程图中任务中的中文乱码显示问题.   解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...

  3. 使用网站websequencediagrams在线画时序图

    在线画时序图的网站:https://www.websequencediagrams.com/ 该网站提供拖拉图形和编写脚本代码2个方式来制作时序图,同时提供多种显示风格. 实例: 1.脚本代码: ti ...

  4. canvas画流程图

    用canvas画流程图: 需求:最后一个圆圈无直线 遇到问题:需要画多个圆圈时,画布超出显示屏加滚动条,解决方法是<canvas>外层<div>的width=100%,且ove ...

  5. 在线画UML图的工具

    工作需要在线画各种UML图,类图.协作图.用例图等等,调查了一些在线画UML图的工具,有的做的很好但要收费,例如:http://www.gliffy.com/,发现现在免费好用的是ProcessOn: ...

  6. 使用mermain用Markdown的语法画流程图和UML图

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用mermain用Markdown的语法画流程图和UML图.

  7. Activiti 5.16 流程图高亮追踪 中文乱码问题解决方法

    最近研究activiti的高亮流程图,发现中文是乱码,为了让大家少走弯路共享出来. 本文包含三个主要技术点: 1.spring MVC架构下输出动态图片 2.获得activiti流程图的stream流 ...

  8. 使用sublime+platUML快速画流程图

    程序员难免要经常画流程图,状态图,时序图等.以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋.有时候修改文字后,为了较好的显示效果不得不再去修改图形.今天介绍的工具是如何使用 Sub ...

  9. 使用 Markdown Flow 画流程图

    使用 Markdown Flow 画流程图 好处是可以方便的使用 Git 管理版本 st=>start: 开始 e=>end: 结束 c1=>condition: A c2=> ...

随机推荐

  1. 异步IO/协程/数据库/队列/缓存(转)

    原文:Python之路,Day9 - 异步IO\数据库\队列\缓存 作者:金角大王Alex add by zhj: 文章很长 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这 ...

  2. 解决FastCGI 进程超过了配置的活动超时时限的问题

    近日,需要满足测试需求,进行大数据并发测试时,报出[HTTP 错误 500.0 - Internal Server Error E:\PHP\php-cgi.exe - FastCGI 进程超过了配置 ...

  3. 十一:外观模式详解(Service,action与dao)

    定义:外观模式是软件工程中常用的一种软件设计模式.它为子系统中的一组接口提供一个统一的高层接口.这一接口使得子系统更加容易使用. 该定义引自百度百科,它的表现很简单,将一系列子接口的功能进行整理,从而 ...

  4. Dikstra 堆优化板子

    #include <bits/stdc++.h> #define MAXN 10005 using namespace std; typedef long long LL; vector& ...

  5. CTF必备技能丨Linux Pwn入门教程——ROP技术(下)

    Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...

  6. 那些年我们走过的坑,对Fortify的漏洞进行总结

    1.修复方案,过滤引起Log Forging漏洞的敏感字符的公共方法 /** * Log Forging漏洞校验 * @param logs * @return */ public static St ...

  7. 谈谈<? extends T> 和<? super T>理解

    项目中遇到<? extends T> 和<? super T> 这两者,来说说自己的理解.首先我们先了解什么是泛型 什么是泛型 泛型是在编译阶段一种防止错误对象输入的机制.编译 ...

  8. Nginx配置实验反向代理

    l  实验要求 浏览器访问 8083.mine.com:8081 地址,(Nginx端口是8081)通过Nginx服务器反向代理监听请求,将请求转发到tomcat服务器上,实现真正内容的访问. l  ...

  9. Java代码实现定时器

    一 import java.util.Timer; import java.util.TimerTask; public class time { public static void main(St ...

  10. Odoo 启动选项总结

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189209.html 一:启动选项用在哪里 如果你是用Pycharm进行odoo二次开发的话,可以通过 R ...