声明:该博客主要是Springboot1.X和Springboot2.X集成Activiti5.22版本,并说一下两个版本的搭建不同的地方
技术:Springboot2.0.3+mysql+jpa(自动生成25张表)+Activiti5.22 /然后Springboot1.5.9重新集成一下
1、创建工程,勾选Web模块,然后修改为2.0.3的版本
2、pom文件中添加关于Activiti的依赖包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--activiti-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-modeler</artifactId>
<version>5.22.0</version>
</dependency>
<!--jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
3、添加配置文件application.yml
#整合Activit
spring:
jpa:
hibernate:
ddl-auto: update # first:create table ,next :update table
database: MYSQL
#整合JPA
show-sql: true
activiti:
check-process-definitions: false
datasource:
url: jdbc:mysql://192.138.3.15:3306/testMdxl?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
username:
password:
driver-class-name: com.mysql.jdbc.Driver
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
testWhileIdle: true
security:
user:
name: user
password: 1234
4、导入Activiti相关的源码
就是下载activiti的框架,然后从里面拿出部分代码作为自己项目的一部分全的。
一会我上传到码云上面吧,我发现文件挺多的,尴尬,码云地址==》点击 三个java文件,一个public文件夹,还有一个json文件:三部分。
5、编写controller层
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by mujiuitan on 2018/12/17.
*/
@RestController
@RequestMapping(value = "/activiti")
public class ActivitiController {
//创建模型,这个模型数据写死,主要是没有前台技术支持啊
@RequestMapping("/create")
public void create(HttpServletRequest request, HttpServletResponse response) {
try {
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, "hello1111");
modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
String description = "hello1111";
modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
modelData.setMetaInfo(modelObjectNode.toString());
modelData.setName("hello1111");
modelData.setKey("12313123");
//保存模型
repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));
response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + modelData.getId());
} catch (Exception e) {
System.out.println("创建模型失败:");
}
}
}
6、在启动类上添加
@EnableAutoConfiguration(exclude = {
//org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.activiti.spring.boot.SecurityAutoConfiguration.class
})
7、启动,测试!
访问路径:http://localhost:8080/activiti/create
刚开始访问的时候会有一个弹框:提供用户名和密码,刚刚在配置文件已经写了,user 和 1234 填写这两个就好了,暂时没有想到怎么解决这个麻烦的弹框方法
然后生成的25张表,我记忆里好像是21张,至于多出来不知道哈,用Jpa实现的。
8、Springboot1.X集成Activiti5.22 的不同之处
8.1 在配置文件中,Springboot1.X就不用写下面的配置,也不会有弹框
security:
user:
name: user
password: 1234
7.2 在启动类,Springboot1.X需要多添加一个类
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.activiti.spring.boot.SecurityAutoConfiguration.class
})
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class 这个类在Springboot2.X已经注释了,因为版本升级已经找不到这个类了,但是1.X还有,把这个加上就不会有弹框出现让填写用户名和密码了。
结束,感谢!
转载于:https://my.oschina.net/mdxlcj/blog/2989622