若依集成Uflo2工作流引擎

文章目录

    1. 创建子模块并添加依赖
    • 1.1 新建子模块 ruoyi-uflo
    • 1.2 引入 Uflo2 相关依赖
    1. 配置相关 config
    • 2.1 配置 ServletConfig
    • 2.2 配置 UfloConfig
    • 2.3 配置 TestEnvironmentProvider
    1. 引入Uflo配置文件
    1. 启动并访问

Uflo2 是由 BSTEK 自主研发的一款基于 Java 的轻量级工作流引擎,采用 Spring 作为核心框架,并以 Hibernate 作为数据持久层,能够在大多数主流应用服务器和数据库上运行。本文将详细介绍如何在若依项目中集成 Uflo2 工作流引擎。

1. 创建子模块并添加依赖

1.1 新建子模块 ruoyi-uflo

可以参照若依框架的创建子模块教程来新建子模块。

1.2 引入 Uflo2 相关依赖

在新建的 ruoyi-uflo 模块的 pom.xml 中,添加 uflo2 的依赖配置:

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. 配置相关 config

2.1 配置 ServletConfig

在 ruoyi-uflo/src/main/java/com/ruoyi/ruoyiuflo/config/ 路径下,创建 ServletConfig.java 文件,注册 UfloServlet:

java 复制代码
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<UfloServlet> registerUfloServlet() {
        return new ServletRegistrationBean<>(new UfloServlet(), "/uflo/*");
    }
}

2.2 配置 UfloConfig

在同一目录下新增 UfloConfig.java 文件,配置 Hibernate 的 SessionFactory及事务管理器:

java 复制代码
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.io.IOException;
import java.util.Properties;

@Configuration
public class UfloConfig {

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

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

2.3 配置 TestEnvironmentProvider

在 ruoyi-uflo/src/main/java/com/ruoyi/ruoyiuflo/env/ 目录下创建 TestEnvironmentProvider.java,实现 EnvironmentProvider 接口,用于配置工作流的环境:

java 复制代码
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;

import javax.annotation.Resource;

@Component
public class TestEnvironmentProvider implements EnvironmentProvider {

    @Autowired
    private SessionFactory sessionFactory;

    @Resource(name = "ufloTransactionManager")
    private PlatformTransactionManager transactionManager;

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

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

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

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

3. 引入Uflo配置文件

在若依主模块 ruoyi-admin 的启动类 RuoYiApplication.java 中,引入 uflo-console-context.xml 配置文件:

java 复制代码
@ImportResource("classpath:uflo-console-context.xml")

4. 启动并访问

当项目启动后,Uflo2 会自动在数据库中创建相关表

您可以通过以下链接访问 Uflo2 的管理页面:

通过以上步骤,Uflo2 已成功集成到若依项目中。

相关推荐
胡耀超10 天前
解读若依微服务架构图:架构总览、核心模块解析、消息与任务处理、数据存储与缓存、监控与日志
微服务·云原生·架构·若依
想要打 Acm 的小周同学呀12 天前
若依框架--数据字典设计使用和前后端代码分析
java·vue3·数据字典·若依
胡耀超13 天前
解读若依框架中的 @Xss 注解
xss·若依
胡耀超13 天前
解读若依框架中的`@Excel` 和 `@Excels` 注解
java·excel·若依
bjzhang7518 天前
若依使用 Undertow 替代 Tomcat 容器
tomcat·若依·undertow
bjzhang7525 天前
若依整合 Gitee 登录
gitee·若依
代码拯救不了世界1 个月前
若依框架中的上传图片后如何实现回显到页面的
java·图片上传·若依
bjzhang751 个月前
若依微服务如何获取用户登录信息
若依
bjzhang751 个月前
若依启动项目时配置为 HTTPS 协议
https·若依
duansamve1 个月前
如何快速搭建若依管理系统?
若依