首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Activiti Modeler Web 流程設計器整合指南:SSM 集成與獨立部署雙模式詳解

     編輯:Java 綜合教學

Activiti Modeler Web 流程設計器整合指南

Activiti 作為優秀的工作流引擎,其官方 Web 流程設計器 (Activiti Modeler) 為業務人員提供了可視化建模能力。本文詳細講解 Modeler 5.21.0 版本的兩種整合模式:獨立部署模式與SSM 框架集成模式,幫助你快速落地流程設計功能。

核心架構對比

維度獨立部署模式SSM 集成模式
部署架構Modeler 獨立 WAR 包部署Modeler 整合進業務 WAR 包
數據庫獨立數據源 (H2/MySQL)共用業務數據源
用戶體系獨立認證/單點登錄對接複用業務 Shiro/Spring Security
模型存儲Modeler 自己的表共用 ACT_RE_MODEL 等表
優勢解耦、獨立升級、多系統共享開發簡單、事務一致、無跨域
適用場景多業務系統共享設計器、獨立維護團隊單一業務系統、快速交付、資源受限

模式一:獨立部署模式完整步驟

1. 獲取 Modeler 源碼

# 官方下載地址 (需註冊)
https://www.activiti.org/download-links

# 或從 GitHub 獲取 5.21.0 標簽
git clone https://github.com/Activiti/Activiti.git
cd Activiti
git checkout activiti-5.21.0

2. 修改配置文件

# activiti-modeler/src/main/webapp/editor/app-cfg.js
// 後端 REST API 根路徑
var ACTIVITI_MODELER_CONFIG = {
    contextRoot: '/activiti-modeler',  // 部署上下文路徑
    restRoot: '/activiti-rest',        // activiti-rest 部署路徑
    // ... 其他配置
};

3. 數據庫配置 (共享業務庫)


jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/activiti?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

4. 整合 Spring Security (關鍵)


<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/*.xml</param-value>
</context-param>

5. Maven 打包部署

cd activiti-modeler
mvn clean package -DskipTests
# 生成 activiti-modeler.war 部署到 Tomcat

模式二:SSM 集成模式完整步驟

1. 依賴引入 (Maven)

<dependencies>
    <!-- Activiti 核心 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-engine</artifactId>
        <version>5.21.0</version>
    </dependency>
    
    <!-- Modeler 相關 (需從官方包手動安裝或私服) -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-modeler</artifactId>
        <version>5.21.0</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-rest</artifactId>
        <version>5.21.0</version>
    </dependency>
    
    <!-- JSON 處理 (Modeler 依賴) -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>
</dependencies>

2. 靜態資源拷貝

# 從 activiti-modeler.war 解壓並拷貝到項目
src/main/webapp/editor/          # 核心編輯器頁面
src/main/webapp/stencilset/      # BPMN 2.0 模板定義
src/main/webapp/editor/app-cfg.js # 配置文件 (需修改 contextRoot 為項目路徑)

3. Spring MVC 配置靜態資源訪問

<mvc:resources mapping="/editor/**" location="/editor/"/>
<mvc:resources mapping="/stencilset/**" location="/stencilset/"/>

4. 整合 Activiti 配置


<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource"/>
    <property name="transactionManager" ref="transactionManager"/>
    <property name="databaseSchemaUpdate" value="true"/>
    <property name="jobExecutorActivate" value="true"/>
</bean>

<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
    <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
</bean>

<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>
<bean id="modelService" factory-bean="processEngine" factory-method="getModelService"/>

5. Modeler Controller 實現

關鍵難點解決方案

1. 跨域問題 (獨立部署模式)

# Nginx 反向代理配置
location /activiti-modeler/ {
    proxy_pass https://modeler-server:8080/activiti-modeler/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

location /activiti-rest/ {
    proxy_pass https://rest-server:8080/activiti-rest/;
}

# 或者 Spring Boot CorsConfiguration
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("https://localhost:8080")
            .allowedMethods("*")
            .allowCredentials(true);
    }
}

2. 單點登錄 (SSO) 整合

# 方案一:CAS 統一認證
# 方案二:JWT Token 傳遞
# Modeler 請求攜帶 Token,後端過濾器驗證並設置 SecurityContext

@Component
public class JwtAuthenticationFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, 
                                    HttpServletResponse response, 
                                    FilterChain filterChain) {
        String token = request.getHeader("Authorization");
        if (StringUtils.hasText(token) && token.startsWith("Bearer ")) {
            String jwt = token.substring(7);
            if (jwtUtil.validateToken(jwt)) {
                Authentication auth = jwtUtil.getAuthentication(jwt);
                SecurityContextHolder.getContext().setAuthentication(auth);
            }
        }
        filterChain.doFilter(request, response);
    }
}

3. 中文亂碼/字體問題

# 1. 確保數據庫表字符集 utf8mb4
# 2. Java 環境設置 -Dfile.encoding=UTF-8
# 3. Modeler 導出圖片字體配置
# activiti-modeler/WEB-INF/classes/stencilset/bpmn2.0/jbpm/fonts.properties
# 替換為支持中文字體 (如微軟雅黑、思源黑體)

驗證清單

  1. ✅ 訪問 https://host:port/activiti-modeler/editor.html (獨立) 或 https://host:port/editor.html (集成)
  2. ✅ 創建新模型,拖拽 BPMN 元素 (StartEvent、UserTask、Gateway、EndEvent)
  3. ✅ 設置屬性:ID、Name、Assignee、Expression 等
  4. ✅ 保存模型,檢查 ACT_RE_MODEL 表數據
  5. ✅ 導出 BPMN 2.0 XML,驗證格式正確性
  6. ✅ 發布部署,檢查 ACT_RE_PROCDEF 表生成記錄
  7. ✅ 啟動流程實例,驗證運行流轉正常

版本選型建議

  • Activiti 5.x:成熟穩定,Modeler 5.21.0 為經典版本,文檔資源豐富
  • Activiti 6.x:UI 重構,Modeler 整合更緊密,但社區活躍度下降
  • Flowable:Activiti 分支,積極維護,Modeler 功能更強,推薦新項目使用
  • Camunda:企業級功能豐富,Modeler 獨立且強大,適合複雜業務場景

Activiti Modeler 整合的核心在於 靜態資源正確加載、REST API 路徑映射、用戶認證體系統一、數據庫表結構共享 四大支柱。根據團隊規模、系統架構、維護成本選擇合適模式,並建立標準化的流程建模→發布→運行→監控全鏈路規範,才能真正發揮工作流引擎的業務價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved