UFLO2 是由 BSTEK 开发的基于 Java 的工作流引擎。它是一款轻量级的流程引擎,构建在 Spring 框架上,使用 Hibernate 作为持久化层,能够运行于主流的应用服务器和数据库之上。本文将详细介绍在 RuoYi 框架中集成 UFLO2 的步骤。
ruoyi-uflo
可以参考[RuoYi 创建子模块详细教程]
来创建新的子模块。
在新模块的 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>
在 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/*");
}
}
这样可以在应用中访问 UFLO 控制台的 /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;
}
}
在 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";
}
}
在 ruoyi-admin
模块的主配置类 RuoYiApplication.java
中,引入 UFLO 的配置文件:
@ImportResource("classpath:uflo-console-context.xml")
成功配置并运行项目后,UFLO 会自动在数据库中生成相应的数据表。
流程设计器:访问 http://localhost:8088/uflo/designer
至此,您已成功在 RuoYi 项目中集成了 UFLO2,实现了流程管理和任务处理功能。
powered by kaifamiao