1. 程式人生 > >SpringBoot搭建Activiti整合流程設計器(一步一步教你配置)

SpringBoot搭建Activiti整合流程設計器(一步一步教你配置)

轉載請註明出處:猿小雷,https://blog.csdn.net/qq_34638225

1、框架搭建

在IDE裡新建SpringBoot專案,在pom.xml裡引入如下依賴 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion> <groupId>com.jerryl</groupId> <artifactId>spring-boot-with-activiti</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot-with-activiti</name
>
<description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath
/>
<!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <activiti.version>5.22.0</activiti.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>1.9.22</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--activiti begin--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-modeler</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-diagram-rest</artifactId> <version>${activiti.version}</version> </dependency> <!--activiti end--> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

在pom檔案中引入Activiti的依賴,mysql的依賴(Activiti預設使用H2記憶體資料庫),thymeleaf依賴(用於和前端頁面結合)

2、整合流程設計器

Activiti官網下載Activiti Explorer的WAR檔案

進入activiti-explorer資料夾,將下圖檔案複製到SpringBoot專案的resource/static下 這裡寫圖片描述

其中的editor-app就是編輯器,modeler.html是編輯器的入口頁面。 diagram-viewer是流程跟蹤外掛。

還有一個介面元件檔案,在resource下,名稱叫stencilset.json。本身是英文的,可以通過替換它來達到漢化的效果。但現在還是先把它放到專案中去。 這裡寫圖片描述

介面元件

在editor-app/app-cfg.js中配置一下專案url。這個url是編輯器相關的後臺服務的url。去掉activiti-explorer

ACTIVITI.CONFIG = {
    'contextRoot' : '/service',
};

後端

StencilsetRestResource #獲取編輯器元件及配置項資訊。
ModelEditorJsonRestResource #根據modelId獲取model的節點資訊,編輯器根據返回的json進行繪圖。
ModelSaveRestResource #編輯器製圖之後,將節點資訊以json的形式提交給這個Controller,然後由其進行持久化操作。

需要修改的地方就三個,在每個Controller類上加上@RequestMapping註解,並指定值為”service”(對應前臺app-cfg.js中配置的url)。

@RequestMapping("service")
public class StencilsetRestResource {
@RequestMapping("service")
public class ModelEditorJsonRestResource implements ModelDataJsonConstants {
@RequestMapping("service")
public class ModelSaveRestResource implements ModelDataJsonConstants {

最後別忘了新增包掃描,掃描activiti提供的這些controller(這裡涉及到的org.activiti到下載)

@SpringBootApplication
@ComponentScan({"org.activiti","com"})
@EnableAutoConfiguration(exclude={SecurityAutoConfiguration.class})

這裡寫圖片描述

記住在.properies檔案或者.yml檔案里加上

spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false

不然會報錯(thymeleaf對html的檢查過於嚴格,通常會設定spring.thymeleaf.mode=LEGACYHTML5)

這樣整合部分就基本結束了,此時編輯器已經可以使用了。

至於介面的漢化,介面上各個元件,各個標籤上的文字都是在resource下的stencilset.json檔案中設定的,可以在網上找一個漢化後的stencilset.json檔案替換掉,就能看到中文介面了。

3、前端配置

resource下的資源目錄如下圖所示 這裡寫圖片描述

index.html裡為啟動時訪問的首頁面 這裡寫圖片描述

index.html介面 這裡寫圖片描述

對應的controller都在ModelerController.java裡

關注公眾號:猿小雷 獲取更多文章,第一之間掌握技術。 有問題請在公眾號內回覆,小雷會一一回答。 這裡寫圖片描述