Springboot整合Activiti流程设计器完成⼀个简单的请假流程1.前⾔
完成这个功能之前,我负责公司的流程管理模板,在众多的解决⽅案当中,我选择了Activiti 原因有:
1. 开源、免费
2. 整合Springboot较容易
Springboot已经成为开发后端不可缺少的⼀部分,它是如此完美,如此优秀!
2.准备
这⾥选择旧版本的原因是:新的版本会如果突然出现⼀些不知名的错误,或者是版本问题,会让你头⽪发⿇不知道怎么解决,⽹上新版本这⼀类的错误博客也很少,很浪费时间!
3.下载解压
打开wars⽂件夹,复制war⽂件包到tomcat,利⽤tomcat对war包进⾏⼀个解压,我们也可以不着急,可以登录官⽅的demo进⾏尝试⼀把
放置到tomcat启动后产⽣的⽂件夹
地址:htpp://localhost:你的端⼝号/activiti-explorer
⽤户名:kermit 密码:kermit
4.开始整合 mysql + activiti + thymeleaf
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
按照官⽹⽂档的指⽰,我们引⼊springboot-starter 依赖 就是这么⽅便2.配置⽂件
spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.sql.cj.jdbc.Driver
##每次应⽤启动不检查Activiti数据表是否存在及版本号是否匹配第⼀次设置为true 会⾃动创建表结构,之后即可设置为false 提⾼运⾏速度spring.activiti.database-schema-update=true
3.复制⽂件
复制我们刚才放到tomcat解压后的⽂件,选择以下⽂件夹和⽂件复制到springboot static⽂件夹下
diagram-viewer ⽂件夹
editor-app ⽂件夹
modeler.html
4.加⼊控制器
复制这三个⽂件到任意包下,并且为这三个⽂件加⼊注解:@RequestMapping("/service")
5.修改配置⽂件
修改editor-app/app-cfg.js⽂件,修改其请求路径 和刚才修改的请求路径保持⼀致
6.剔除启动类⾥⾯的安全校验
@SpringBootApplication(exclude = {
org.activiti.spring.boot.SecurityAutoConfiguration.class, org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class })
7.项⽬启动完毕,查看数据库
25张表结构创建完毕,我简单引⽤⼀下别⼈的博客内容如下:
u ACT_GE_* : “GE”代表“General”(通⽤),⽤在各种情况下;
u ACT_HI_* : “HI”代表“History”(历史),这些表中保存的都是历史数据,⽐如执⾏过的流程实例、变量、任务,等等。Activit默认提供了4种历史级别:
Ø none: 不保存任何历史记录,可以提⾼系统性能;
Ø activity:保存所有的流程实例、任务、活动信息;
Ø audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
Ø full:最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。
8.访问静态资源被拦截问题--》加⼊资源处理器
@Configuration
@EnableWebMvc
public class StaticResourceConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
开始流程代码以及逻辑
1.⾸先是创建模型
创建模型呢可谓是流程管理的第⼀项,创建⼀个模型,我们呢需要在这个模型上进⾏流程图的设计与修改,⾸先把模型创建好
这⾥只展⽰部分代码,展⽰主要的功能,其他的具体内容,在⽂章尾部clone项⽬后进⾏查看
1 @RequestMapping("createModel")
2public String createModel(HttpServletRequest request, HttpServletResponse response){
3
4 String name = "请假流程";
5 String description = "这是⼀个请假流程";
6
7 String id = null;
8try {
9 Model model = wModel();
10 String key = name;
11//版本号
12 String revision = "1";
13 ObjectNode modelNode = ateObjectNode();
14 modelNode.put(ModelDataJsonConstants.MODEL_NAME, name);
15 modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
16 modelNode.put(ModelDataJsonConstants.MODEL_REVISION, revision);
17
18 model.setName(name);
19 model.setKey(key);
20//模型分类结合⾃⼰的业务逻辑
21//model.setCategory(category);
22
23 model.String());
24
25 repositoryService.saveModel(model);
26 id = Id();
27
28//完善ModelEditorSource
29 ObjectNode editorNode = ateObjectNode();
30 editorNode.put("id", "canvas");springboot是啥
31 editorNode.put("resourceId", "canvas");
32 ObjectNode stencilSetNode = ateObjectNode();
33 stencilSetNode.put("namespace",
34 "/stencilset/bpmn2.0#");
35 editorNode.put("stencilset", stencilSetNode);
36 repositoryService.addModelEditorSource(id, String().getBytes("utf-8"));
37
38 response.ContextPath() + "/static/modeler.html?modelId=" + id);
39 } catch (Exception e) {
40 e.printStackTrace();
41 }
42
43return "index";
44 }
View Code
PS 模型建好了肯定要进⾏画模型我对流程设计器进⾏了,这样操作起来⽅便多了我简单画⼀个
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论