最近又要开始弄工作流,出现bug要修改,前同事离职了两个多月了,目前也没有新招到后端java,目前一个人顶着。

Activiti Modeler 是 Activiti 官方提供的一款在线流程设计的前端插件,可以方便流程设计与开发人员绘制流程图,保存流程模型,部署至流程定义等等

记录一下如何在spring boot项目中集成Activiti Modeler。

1、下载activiti-explorer

首先我们需要获取activiti-explorer.zip,这个是activiti-5.22.0才有的,压缩包可以在网络上下载,或者从官网下载https://www.activiti.org/get-started 下载5.x版本

可以先放在tomcat下启动开一下效果

    2.在项目中集成

集成静态文件:

在项目的resources下新建static/modeler目录

将如图3个目录复制到static/modeler目录下

然后去csdn上下载activiti explorer的汉化文件(stencilset.json和en.json),官网下载的项目这两个文件都是纯英文的。

下图是我的百度网盘保存的,现在csdn上好像不能直接分享网盘链接了

  • 将下载好的汉化文件stencilset.json复制到src/main/resources目录下
  • 用下载好的汉化文件en.json替换 static/modeler/editor-app/i18n/en.json文件

在 com/sxdx/workflow/activiti/rest下新建modeler目录。将下载文件的 activiti-5.22.0\Activiti-master\modules\activiti-modeler\src\\main\java\org\activiti\rest\editor 目录下的所有文件(不包含目录)拷贝到 com/sxdx/workflow/activiti/rest/modeler目录下:

 最后效果如下所示:

如果你只是在tomcat上部署的官方项目,则替换路径在如下所示

2.3 代码修改

依次修改如下代码:
1、static/modeler/editor-app/app-cfg.js

2、static/modeler/editor-app/configuration/toolbar-default-actions.js

 3、com/sxdx/workflow/activiti/rest/modeler 下的3个java文件中的所有方法的访问路径前都添加/modeler

4、将ModelSaveRestResourcesaveModel改为POST访问,否则Activiti Modeler无法保存。

@RequestMapping(value="/modeler/model/{modelId}/save", method = RequestMethod.POST)@ResponseStatus(value = HttpStatus.OK)public void saveModel(@PathVariable String modelId, @RequestBody MultiValueMap<String, String> values) {//省略}

3、访问验证

启动服务,访问http://localhost:8080/modeler/modeler.html

会发现只有一个布局,各种功能及组件都没有显示出来。这是因为我们没有定义流程模型

4、创建一个模型

4.1 代码创建一个流程模型

创建一个测试类 ModelerControllerTest

package com.sxdx.workflow.activiti.rest;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;import static org.activiti.editor.constants.ModelDataJsonConstants.MODEL_DESCRIPTION;
import static org.activiti.editor.constants.ModelDataJsonConstants.MODEL_NAME;@SpringBootTest
@RunWith(SpringRunner.class)
public class ModelerControllerTest {@Resourceprivate RepositoryService repositoryService;/*** 创建模型*/@Testpublic void create() {String name = "请假流程";String key = "leave";String description = "这是一个简单的请假流程";try {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);ObjectNode modelObjectNode = objectMapper.createObjectNode();modelObjectNode.put(MODEL_NAME, name);modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);description = StringUtils.defaultString(description);modelObjectNode.put(MODEL_DESCRIPTION, description);Model newModel = repositoryService.newModel();newModel.setMetaInfo(modelObjectNode.toString());newModel.setName(name);newModel.setKey(StringUtils.defaultString(key));repositoryService.saveModel(newModel);repositoryService.addModelEditorSource(newModel.getId(), editorNode.toString().getBytes("utf-8"));System.out.println("生成的moduleId:"+newModel.getId());} catch (Exception e) {}}
}

我们查看一下 act_re_model 表,会看到刚才创建的流程

4.2 再次访问

这次访问:http://localhost:8080/modeler/modeler.html?modelId=1, 这次就显示正常了。接下来我们就可以绘制流程图了。

注意:这个modelId参数是必须的,否则modeler的组件无法显示。

如果出现访问404 ,请查看一下以下文件目录,static和modeler是有层级关系的,如果目录显示static.modeler则会404。

SpringBoot集成Activiti Explorer相关推荐

  1. Springboot 集成 Activiti时启动报错!'org.activiti.spring.boot.SecurityAutoConfiguration

    Springboot 集成 Activiti时启动报错! org.springframework.beans.factory.BeanCreationException: Error creating ...

  2. SpringBoot集成activiti工作流

    SpringBoot集成activiti工作流(模拟请假流程) 链接:https://pan.baidu.com/s/10BT_Zertm1WBBrlrdE-QWQ  提取码:zsq6 学习视频地址见 ...

  3. springboot集成activiti汉化

    activiti的modeler汉化. 汉化步骤: 将en.json(路径:editor-app/i18n/en.json)文件汉化,改名zh-CN.json,放在en.json同目录. 同时将汉化后 ...

  4. SpringBoot - 工作流Activiti开发

    1.工作流 1.1 开发前奏 介绍 当前系统activit开发以springboot+mybatis开发为准, 1.1.1 IDEA安装actiBPM 通过File -> Settings -& ...

  5. springboot2.0集成activiti modeler

    项目采用Springboot 2.0.3.RELEASE版本以及activiti 5.22.0版本 在acitiviti官网下载完整包https://github.com/Activiti/Activ ...

  6. Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化

    Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化 7大服务与核心表 23张表概览 7大核心服务(重要) 加依赖 内部 ...

  7. activiti 工作流_springboot+activiti+angular 集成activiti工作流实现,源码分享

    springboot+activiti+angular 这是spring boot框架集成activiti工作流实现,采用目前流行的restful api接口调用,前端使用angular js框架实现 ...

  8. # SpringBoot 整合 Activiti 工作流框架

    SpringBoot 整合 Activiti 工作流框架 Activiti 介绍 Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调 ...

  9. Spring 3.2.5 集成 Activiti Modeler 5.17.0

    Activiti 5.17.0在Modeler上做了很大的变化,集成比以前貌似简单些,参考集成activiti 5.16.4中modeler,完成集成. 1.下载Activiti 5.17的源代码 2 ...

最新文章

  1. Linux系统性能分析: I/O栈 优化
  2. Altium Designer笔记2
  3. Class对象和Java反射机制
  4. 【图解】一图了解《上海市推进新一代信息基础设施建设 助力提升城市能级和核心竞争力三年行动计划(2018-2020年)》...
  5. 使用独立mysql_MYSQL建立独立数据库以及独立数据库用户详细教程,利用PHPstudy自带的MySQL-Front...
  6. vue 学习笔记—路由篇
  7. np.vstack与np.newaxis的含义
  8. Java 18 就要来了,新功能很多!
  9. CBA公布对北京首钢处罚结果 相关工作人员遭重罚
  10. html的表格怎么设置样式,html 静态表格样式的设置
  11. java微信获取临时素材_java实现微信获取/下载临时素材
  12. 为什么amd显卡便宜却买的人少_为什么不推荐人选择AMD?
  13. 【第三届蓝桥杯】手机尾号
  14. APC计算机大赛,2019全国职业院校技能大赛计算机网络应用赛项题库C卷 2c.docx
  15. 关于linux的进程中的各个线程cpu占用情况的分析和查看
  16. (原创)CRC计算流程分析(RefIn,Init,RefOut,XorOut)
  17. OpenMV颜色阈值设置
  18. 加入新公司,怎样快速熟悉业务和项目?
  19. 17、简单的企业人事管理系统(ssh)
  20. node.js命令行程序在Windows系统和Linux系统下的部署

热门文章

  1. 为什么this()和super()必须是构造函数中的第一条语句?
  2. flink 本地_Flink 01 | 十分钟搭建第一个Flink应用和本地集群
  3. 华硕笔记本重装系统按哪个键进u盘启动项
  4. Android运行时权限,设置帮助类BaseActivity;电话权限,短信权限,
  5. java试卷_Java测试题及答案(Java干货完整试卷)
  6. 查看mysql单个表大小限制_查看单个mysql数据库中各个表的大小
  7. Gcc:gcc -o操作
  8. android中上拉下滑布局,3年以上勿进!最简单的Android自定义ListView下拉刷新与上拉加载,代码直接拿去用~...
  9. python venv jenkins_Jenkins+Pytest+Allure集成测试环境
  10. 绝对定位水平垂直居中(HTML、CSS)