若依集成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 已成功集成到若依项目中。

相关推荐
山人在山上1 个月前
基于若依前后分离版-用户密码错误锁定
若依·用户登陆失败锁定
胡耀超6 个月前
解读若依微服务架构图:架构总览、核心模块解析、消息与任务处理、数据存储与缓存、监控与日志
微服务·云原生·架构·若依
想要打 Acm 的小周同学呀6 个月前
若依框架--数据字典设计使用和前后端代码分析
java·vue3·数据字典·若依
胡耀超6 个月前
解读若依框架中的 @Xss 注解
xss·若依
胡耀超6 个月前
解读若依框架中的`@Excel` 和 `@Excels` 注解
java·excel·若依
bjzhang756 个月前
若依使用 Undertow 替代 Tomcat 容器
tomcat·若依·undertow
bjzhang756 个月前
若依整合 Gitee 登录
gitee·若依
代码拯救不了世界6 个月前
若依框架中的上传图片后如何实现回显到页面的
java·图片上传·若依
bjzhang756 个月前
若依微服务如何获取用户登录信息
若依
bjzhang756 个月前
若依启动项目时配置为 HTTPS 协议
https·若依