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在线画流程图相关推荐

  1. activiti前端画图转化_用于Activiti前端显示流程图的插件

    因为现在做一个基于Activit的工作流OA,在设计过程中需要显示用户设计出来的流程图. 所以需要使用一个流程图插件,可以用来加载流程,也可以直接通过拖拽的方式设计流程. 思来想去,搜索了很多插件,最 ...

  2. activiti前端画图转化_记Activiti入门使用-2 流程绘制、导入及开始一个流程

    一.流程绘制与导入 百度啥的找了好多bpmn绘制工具,都不尽如人意,大多数都不能编辑网关出口的跳转条件,最后还是选择了activiti官方的那个绘图的app... 啥都好,就是线不能弯,很难受.(后来 ...

  3. ProcessOn在线画流程图介绍

    前言 作为一名专业的程序员,项目中经常需要用到流程图.思维导图.组织结构图.网络拓扑图.BPMN.UML图.UI界面原型设计等,这个时候一个好的画图工具是必不可少了,你可能会使用Microsoft V ...

  4. 使用ProcessOn在线画流程图

    题外话:年后刚换工作,两个月没更新博客了~~ 前言 作为一名专业的程序员,项目中经常需要用到流程图.思维导图.组织结构图.网络拓扑图.BPMN.UML图.UI界面原型设计等,这个时候一个好的画图工具是 ...

  5. 分享几个在线画流程图的网站

    公司的电脑不能安装外面的软件,只能安装内部软件超市的.但是里面又没有好用的流程图软件,如:visio等. 所以只能找找在线的流程图工具,还好找到几个还不错的,推荐给大家: https://www.pr ...

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

    前置条件:jdk8,tomcat8(注意:jdk7可能会报错) flowable下载地址 https://github.com/flowable/flowable-engine/releases/do ...

  7. 一个非常好用的,在线画图软件。开源的在线画流程图软件,超级棒。draw.io

    前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/83689187 未经博主允许不得转载. 博主地址是:http://blog ...

  8. 介绍几个在线画流程图的工具

    目前我们使用的流程图制作软件大体有RFFLOW.FLOW CHARTING.VISIO三种,可是它们的体积和资源占用情况很大,操作复杂,有没有简单易用不需安装的流程图制作软件呢?下面我给大家推荐几款在 ...

  9. 【在线画流程图】网站

    目录 一.迅捷流程图 二.ProcessOn 一.迅捷流程图 点击这里跳转 链接:https://www.liuchengtu.com/lct/ 二.ProcessOn 点击这里跳转 链接:https ...

最新文章

  1. 仅需2张图,AI便可生成完整运动过程
  2. 卓讯企业名录搜索软件_还在用卓讯企业名录搜索软件吗?探迹黑科技助力企业提升销售效率...
  3. JAVA中int、String的类型转换
  4. 分析Oracle有时会用索引来查找数据的原因-oracle执行计划
  5. 从Java面试官的角度,如何快速判断程序员的能力
  6. 如何完全卸载 Sublime Text
  7. Maven : Maven和jenkins报错 ClassNotFoundException : org.slf4j.Logger
  8. flask框架_Flask: flask框架是如何实现非阻塞并发的
  9. Java开发工具(Eclipse工作空间的基本配置)
  10. 虚伪,不只是形容一个人
  11. html写法影响加载,html加载顺序以及影响页面二次渲染额的因素
  12. Luogu3178 [HAOI2015]树上操作
  13. 杂题收录+简要题解3【杭电多校】
  14. 轻量级图片批量上传JS插件 imgFileupload.js
  15. 学计算机高中选那三科,高中选哪三科最吃香
  16. 驭势领读 | 《让大象飞》:资本寒冬正好能让市场回归理性
  17. 计算平均成绩和总成绩
  18. 什么是html超文本语言,什么是超文本?HTML超文本标记语言怎么学?
  19. OPENGL颜色混合
  20. 变态反应电子病历软件行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)

热门文章

  1. 学好3D建模之后,找的工作薪资能够达到多少?
  2. 智能投影的2014:今年它是一碗“杂碎汤”,明年我们期待黑科技
  3. 代码随想录算法训练Day11 LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)
  4. win11 “设置”,“任务栏设置”打不开问题解决
  5. mysql 在linux中使用_mysql-在linux中的使用..
  6. 【WPF】 BasedOn的用法
  7. Linux内核KASAN内存检测原理
  8. recharts中Legend的margin属性设置无效
  9. 基于Kaldi+GStreamer搭建线上的实时语音识别器
  10. import datetime