开发喵星球

若依框架分模块集成 UFLO2(390)

UFLO2 是由 BSTEK 开发的基于 Java 的工作流引擎。它是一款轻量级的流程引擎,构建在 Spring 框架上,使用 Hibernate 作为持久化层,能够运行于主流的应用服务器和数据库之上。本文将详细介绍在 RuoYi 框架中集成 UFLO2 的步骤。

1:创建新模块并导入依赖

1.1 创建子模块 ruoyi-uflo

可以参考[RuoYi 创建子模块详细教程]来创建新的子模块。

1.2 导入 UFLO2 依赖

在新模块的 pom.xml 文件中添加以下依赖:

<description>
    UFLO2 流程管理模块
</description>

<dependencies>
    <!-- 通用工具 -->
    <dependency>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-common</artifactId>
    </dependency>

    <!-- UFLO2 依赖 -->
    <dependency>
        <groupId>com.bstek.uflo</groupId>
        <artifactId>uflo-console</artifactId>
        <version>2.1.4</version>
    </dependency>
</dependencies>

2:配置模块

2.1 配置 UFLO Servlet

ruoyi-uflo/src/main/java/com/ruoyi/ruoyiuflo/config/ServletConfig.java 中配置 UFLO Servlet:

package com.ruoyi.ruoyiuflo.config;

import com.bstek.uflo.console.UfloServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ServletConfig {
    @Bean
    public ServletRegistrationBean buildUfloServlet(){
        return new ServletRegistrationBean(new UfloServlet(),"/uflo/*");
    }
}

ServletConfig 示例

这样可以在应用中访问 UFLO 控制台的 /uflo/* 路径。

2.2 创建 UFLO 配置类

ruoyi-uflo/com/ruoyi/ruoyiuflo/config/ 中创建 UfloConfig.java,用于配置 Hibernate 会话工厂和事务管理:

package com.ruoyi.ruoyiuflo.config;

import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
public class UfloConfig  {

    @Bean("localSessionFactoryBean")
    public LocalSessionFactoryBean localSessionFactoryBean(DataSource dataSource) {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setPackagesToScan("com.bstek.uflo.model*");
        Properties prop = new Properties();
        prop.put("hibernate.dialect","org.hibernate.dialect.MySQL5Dialect");
        prop.put("hibernate.show_sql",false);
        prop.put("hibernate.hbm2ddl.auto","update");
        prop.put("hibernate.jdbc.batch_size",100);
        sessionFactoryBean.setHibernateProperties(prop);

        return sessionFactoryBean;
    }

    @Bean("ufloTransactionManager")
    public HibernateTransactionManager ufloTransactionManager(SessionFactory sessionFactory){
        HibernateTransactionManager hi = new HibernateTransactionManager();
        hi.setSessionFactory(sessionFactory);
        return hi;
    }
}

UfloConfig 示例

2.3 添加环境提供者

ruoyi-uflo/com/ruoyi/ruoyiuflo/env/ 目录下创建 TestEnviromentProvider.java,用于配置 UFLO 的会话和事务管理:

package com.ruoyi.ruoyiuflo.env;

import com.bstek.uflo.env.EnvironmentProvider;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;

@Component
public class TestEnviromentProvider implements EnvironmentProvider {
    @Autowired
    private SessionFactory sessionFactory;

    @Autowired
    private PlatformTransactionManager platformTransactionManager;

    @Override
    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    @Override
    public PlatformTransactionManager getPlatformTransactionManager() {
        return platformTransactionManager;
    }

    @Override
    public String getLoginUser() {
        return null;
    }

    @Override
    public String getCategoryId() {
        return "anonymous";
    }
}

3:导入 UFLO 配置文件

ruoyi-admin 模块的主配置类 RuoYiApplication.java 中,引入 UFLO 的配置文件:

@ImportResource("classpath:uflo-console-context.xml")

配置文件引入示例

4:访问 UFLO 控制台

成功配置并运行项目后,UFLO 会自动在数据库中生成相应的数据表。

UFLO 数据表生成示例

至此,您已成功在 RuoYi 项目中集成了 UFLO2,实现了流程管理和任务处理功能。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-11-14 14:52:40 阅读量:57
<<   >>


powered by kaifamiao