首页 > 其他分享 >uflo2安装与配置

uflo2安装与配置

时间:2022-12-15 17:05:19浏览次数:85  
标签:console 配置 sessionFactory uflo org uflo2 安装 UFLO 属性

UFLO2视频教程

地址:​​https://pan.baidu.com/s/1jIcMNAY​​ 密码:2jr4

将UFLO添加到我们的项目当中分两种情况,一种是Maven项目,另一种是普通的web项目,我们首先来看看如果将UFLO添加到我们现有的一个由Maven管理的项目当中。

       UFLO提供了两个模块,分别是uflo-core和uflo-console。uflo-core是uflo的核心引擎模块,提供流利引擎的核心流转控制;uflo-console模块则提供了uflo的网页版流程设计器、网页版的流程控制中心等页面,因为uflo-console模块依赖于uflo-core模版,所以安装时我们只需要依赖uflo-console模块即可。

uflo-console模块依赖,内容如下:

uflo-console模块依赖配置

<dependency>
<groupId>com.bstek.uflo</groupId>
<artifactId>uflo-console</artifactId>
<version>[version]</version>
</dependency>

       默认的uflo-console是基于JDK1.8以及Hibernate5编译的,所以如果采用上述maven配置,我们需要本地安装好1.8版本的JDK。除此之外,如果我们需要Hibernate4或Hibernate3版本的uflo,那么可采用下面的依赖配置:

       Hibernate4版本的uflo依赖配置:

uflo-console-hibernate4模块依赖配置

<dependency>
<groupId>com.bstek.uflo</groupId>
<artifactId>uflo-console-hibernate4</artifactId>
<version>[version]</version>
</dependency>

       Hibernate5版本的uflo依赖配置:

uflo-console-hibernate3模块依赖配置

<dependency>
<groupId>com.bstek.uflo</groupId>
<artifactId>uflo-console-hibernate3</artifactId>
<version>[version]</version>
</dependency>


       需要注意的是,Hibernate4与Hibernate3版本的uflo都是采用JDK1.7编译,所以需要我们预先准备好对应版本的JDK。

关于UFLO版本

目前uflo-core及uflo-console的最新版为2.0.2,我们可以到​​http://search.maven.org/​​上输入“uflo-core”或“uflo-console”关键字查询版本。

       需要注意的是,在​​http://search.maven.org/​​​上我们只能查找到最新的release版本,如果您需要最新的snapshot,那么可以到​​https://oss.sonatype.org/​​​上查找,因为sonatype规定,只有正式版本才可以发到​​http://search.maven.org/​​​上,也就是mave的central repository中,snapshot版本只能存在于​​https://oss.sonatype.org/​​​中,所以如果我们要采用​​https://oss.sonatype.org/​​中最新的snapshot,那么就需要在pom.xml中添加一个repository信息,告诉Maven该到这里去下载snapshot版本的包,repository信息如下所示:

Maven库配置

<repositories>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
</repositories>

       以上为Maven项目在添加UFLO支持时所需要做的工作,如果您采用的是传统项目,那配置过程相比之下就麻烦多了,我们需要到​​http://search.maven.org/​​​或​​https://oss.sonatype.org/​​上下载最新的uflo-core及uflo-console及所需要的第三方依赖Jar包,然后把它们放到我们的项目当中,最后就是检查有没有同类型但版本不同的Jar,如果有还需要进行清理,最后启动测试。

接下来还需要编写一个名为EnvironmentProvider接口实现类,其源码如下,具体作用见接口描述:

package com.bstek.uflo.env;
import org.hibernate.SessionFactory;
import org.springframework.transaction.PlatformTransactionManager;
/**
* @author Jacky.gao
* @since 2013年9月17日
*/
public interface EnvironmentProvider {
/**
* @return 返回流程引擎需要使用的Hibernate SessionFactory
*/
SessionFactory getSessionFactory();
/**
* @return 返回与当前SessionFactory绑定的PlatformTransactionManager对象
*/
PlatformTransactionManager getPlatformTransactionManager();
/**
* @return 返回当前系统的登录用户
*/
String getLoginUser();
/**
* @return 返回当前系统分类ID
*/
String getCategoryId();
}

       下面的代码当中向我们展示了一个实现了EnvironmentProvider接口的示例。

EnvironmentProvider实现类示例

import org.hibernate.SessionFactory;
import org.springframework.transaction.PlatformTransactionManager;
import com.bstek.uflo.env.EnvironmentProvider;
public class TestEnvironmentProvider implements EnvironmentProvider {
private SessionFactory sessionFactory;
private PlatformTransactionManager platformTransactionManager;

public SessionFactory getSessionFactory() {
return sessionFactory;
}

public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

public PlatformTransactionManager getPlatformTransactionManager() {
return platformTransactionManager;
}

public void setPlatformTransactionManager(
PlatformTransactionManager platformTransactionManager) {
this.platformTransactionManager = platformTransactionManager;
}
public String getCategoryId() {
return null;
}
public String getLoginUser() {
return "anonymous";
}
}

SessionFactory及TransactionManager都是通过Spring环境注入;getLoginUser方法用于返回当前登录用户,因为我们这里没有用户登录的概念,所以这里返回一个固定值“anonymous”;getCategoryId方法返回null,表示不对流程进行分类处理。

       该接口实现类编写完成后,需要将其配置到Spring当中,让其成为一个标准的Spring Bean,这样UFLO引擎会自动检测到该类并使用它。在这个接口实现类当中,主要是其中的getSessionFactory与getPlatformTransactionManager这两个方法,第一个getSessionFactory是要返回当前指向uflo数据库的hibernate的sessionFactory对象,因为uflo是构建在spring环境之上,所以这里的sessionFactory最好是一个配置在spring环境中的sessionFactory对象,而spring恰恰也提供了创建hibernate3及hibernate4的sessionFactory对象,比如下面的spring配置是用来创建一个hibernate3的sessionFactory对象的。

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.bstek.uflo.model*</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>

m.hibernate4.LocalSessionFactoryBean即可。这里需要注意的是上面的packagesToScan属性,无论是哪种类型的sessionFactory,在使用uflo时都需要添加这一属性,并且需要添加一个com.bstek.uflo.model*的值,这样才能让uflo中hibernate模型对象加载到当前sessionFactory当中;还有就是uflo并没有提供流程所需要的建表schema,所以我们需要将sessionFactory配置中的hibernate.hbm2ddl.auto属性设置为update,这样hibernate会帮助我们自动创建uflo所需要的表信息。

       getPlatformTransactionManager方法要求返回一个spring的PlatformTransactionManager接口实现,当然如果非JTA事务,那么PlatformTransactionManager实现必须要与当前返回的sessionFactory对应的transactionManager绑定。

      打开web.xml文件,在其中添加uflo专用的servlet,配置如下:

 

UFLO的Servlet配置

<servlet>
<servlet-name>ufloServlet</servlet-name>
<servlet-class>com.bstek.uflo.console.UfloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ufloServlet</servlet-name>
<url-pattern>/uflo/*</url-pattern>
</servlet-mapping>

 

       最后还需要在我们的spring配置文件中导入uflo-console的spring配置文件,方法如下:

加载uflo-console的spring配置文件

<import resource="classpath:uflo-console-context.xml" />

关于Properties文件加载

如果你是将UFLO配置到一个已存在的Spring项目中,同时项目也要Spring中加载自己的Properties文件,比如通过下面的方式加载自己的Properties文件

<context:property-placeholder location="/WEB-INF/app.properties"/>

这时启动应用,我们会发现启动过程中系统会报各种属性找不到的异常,解决办法就是在上面配置中加上 ignore-unresolvable="true" 以及 order="1" 两个属性即可,其中ignore-unresolvable属性表达忽略当前配置的Properties文件中没有配置的属性,order属性值表示加载优先级,值越小,优先级越高。

当然如果你的项目中Properties文件加载是通过配置PropertyPlaceholderConfigurer为bean的方式加载,那么同样需要为这个bean添加如下两个属性,作用也是一样:

<property name="ignoreUnresolvablePlaceholders" value="true"></property>
<property name="order" value="1"></property>

       在UFLO当中提供了一些可供外部系统覆盖的属性,通过对这些属性值的重新定义,可让UFLO更加适应我们的业务系统,如果我们项目中没有属性文件,那么可以在我们的spring配置文件中添加如下bean:

覆盖UFLO属性的属性文件加载方式

<bean id="propertyConfigurer" parent="uflo.props">
<property name="location">
<value>/WEB-INF/config.properties</value>
</property>
</bean>

       上面的“uflo.props”Bean是UFLO中提供的一个标准的org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类的子类,所以该Bean采用的属性文件的加载方式就是标准的spring属性文件的加载方式。

       UFLO中可覆盖的属性如下表所示。

属性名

类型

描述

uflo.idBlockSize

数字

用于定义UFLO中所有表数据主键中的缓冲区大小,缓存区越小,用完的速度就越快,这个属性默认值为10,比较便于我们开发测试,正式部署到生产环境一定要修改该属性值,修改后的值要大于1000,比如通常可设置为5000,这样缓存区足够大,就可以减小主键生成时查数据库频率,提高系统性能

uflo.disableScheduler

布尔类型

是否禁用当前应用中任务提醒功能,一旦禁用,则当前项目当中将不再调度运行由任务产生的各种类型的提醒的Job。

uflo.jobThreadCount

数字

定义UFLO当中用于做任务提醒Job池大小,默认值为10,一般情况下,这个大小足够使用了,所以我们一般不改这个属性的值,除非我们的流程当中会有大量的任务,并且每个任务都有过期提醒动作,否则没有必要将该值改大。

uflo.makeSchedulerThreadDaemon

布尔值

是否以Daemon模式开启线程池来运行job,默认值为true,建议设置成true。

uflo.debug

布尔值

是否运行在debug模式下,默认是true(以保证设计器可以匿名访问uflo-console中提供的各种服务,比如在线部署等,如果为false则不允许匿名访问),生产环境中需要更改为false。

uflo.businessDayHours

数字

用于在任务过期计算时设置一天的时长,一般情况下,我们对一天的计算不是24小时,而是按工作日的工作时间计算,该属性默认值为8,表示一天时长为8小时。如果你的UFLO流程模版不需要配置任务过期,那么就不用关注该值,否则就要设置成所以公司的实现工作时长。

uflo.minutesBeforeDueDateToRemind

数字

该属性在待办任务列表中用于设置即将过期的任务的阀值,默认值1440,单位是分钟,1440分钟也就是24小时,这样所有配置了过期时间的任务,在离过期24小时以内时,待办任务列表中就会以高亮颜色进行显示。

uflo.disabledDeptAssigneeProvider

布尔类型

是否禁用UFLO当中提供的默认的用于提供给流程模版设计器使用的基于部门的任务处理人分配方式。默认为false,表示启动。

uflo.disabledUserAssigneeProvider

布尔类型

是否禁用UFLO当中提供的默认的用于提供给流程模版设计器使用的基于用户的任务处理人分配方式。默认为false,表示启动。

uflo.disableDefaultTaskDiagramInfoProvider

布尔类型

是否禁用UFLO内部提供的默认的用于显示流程进度图任务节点消息提示功能,默认为false,表示启用该提示。

uflo.disableDefaultFileProcessProvider

布尔类型

是否禁用默认流程设计器中的基于文件夹的流程模版存储器,默认启用

uflo.defaultFileStoreDir

字符串

默认提供基于文件夹的流程模版存储器采用的文件夹URL,默认值为/WEB-INF/processfiles,所以启用应用后就会在/WEB-INF目录下看到名为processfiles目录,如果需要更改,那么可以通过修改这个属性实现,如果是绝对路径,那么需要输入完整的URL,如果需要放到/WEB-INFO目录下,那么采用上述格式定义就好。

       启动应用,打开浏览器, 浏览http://localhost:8080/uflo-test/uflo/designer这个URL,就可以看到UFLO2中提供的全新的基于网页的流程模版设计器,如下图所示:

       浏览​​http://localhost:8080/uflo-test/uflo/todo​​这个URL就可以看到UFLO中提供的默认的待办页面(实际应用中多数都需要自定义待办页面),如下图:

处理任务的业务页面在完成任务后关闭弹出窗口的方法

执行JS:window.parent.dialogEvent.eventEmitter.emit(window.parent.dialogEvent.CLOSE_DIALOG)

在自定义处理任务页面里刷新待办任务列表方法

执行JS:window.parent.todoEvent.eventEmitter.emit(window.parent.todoEvent.RELOAD_TODO);

在自定义处理任务页面里刷新待领取任务列表方法

执行JS:window.parent.todoEvent.eventEmitter.emit(window.parent.todoEvent.RELOAD_CLIAM);

在自定义任务处理页面里刷新历史任务列表方法

执行JS:window.parent.todoEvent.eventEmitter.emit(window.parent.todoEvent.RELOAD_HISTORY);

 

浏览​​http://localhost:8080/uflo-test/uflo/central​​页面就可以看到UFLO中提供的监控测试页面。

浏览​​http://localhost:8080/uflo-test/uflo/calendar​​页面就可以看到UFLO中提供的日历管理页面。

标签:console,配置,sessionFactory,uflo,org,uflo2,安装,UFLO,属性
From: https://blog.51cto.com/u_15773967/5940277

相关文章

  • linux安装mongodb并做分片集群
    linux安装mongodb并做分片集群安装mongodb我们先去官网下载对应的版本,我这里选择的是4.0.0tgz版本在linux下解压打开sudotar-zxvfmongodb-linux-x86_64-4.0.0.t......
  • kettle学习笔记(一)——入门与安装
    一、概述1.kettle是什么国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。中文名称叫水壶,该项目的主程序员MATT希望把各种数据......
  • ThingsBoard前端项目的安装与启动
    前言ThingsBoard是目前Github上最流行的开源物联网平台(12.8kStar),可以实现物联网项目的快速开发、管理和扩展,是中小微企业物联网平台的不二之选。本文介绍在Windows环......
  • 如何进行环境配置
    本地环境设置如果您想要设置C++语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和C++编译器。文本编辑器这将用于输入您的程序。文本编辑器包括WindowsNo......
  • ThingsBoard前端项目的安装与启动
    前言ThingsBoard是目前Github上最流行的开源物联网平台(12.8kStar),可以实现物联网项目的快速开发、管理和扩展,是中小微企业物联网平台的不二之选。本文介绍在Windows环......
  • SVN的配置和使用 整合VS10
    1.配置SVN服务器 1.1安装subversion(跨平台版本管理服务器) 1.2建立仓库reposity   命令:svnadmincreated:/reposity   利用Tortoise图形工具,创建仓......
  • 2. Docker 安装
    目前Docker官方提供Ubuntu、CentOS、Windows、MacOS操作系统的安装包。具体支持版本如下: ➢Ubuntu◼UbuntuPrecise12.04(LTS)◼UbuntuTrusty14.04(LTS)......
  • Docker学习笔记十二:Docker安装MySQL
    下载命令:dockerpullmysql:5.7安装可参考Docker Hub官网说明的镜像的用法  安装 不挂载目录启动容器创建容器命令:dockerrun-d--name=mysql1-p3307:......
  • python安装pyqt的相关经验
    1:pipinstallPyQt5-ihttps://pypi.douban.com/simple首先安装PyQt5的包;2:pipinstallPyQt5-tools-ihttps://pypi.douban.com/simple这个包需要安......
  • 离线安装mysql5.7【教程二】
    openjdk1.8文件下载链接地址:链接:https://pan.baidu.com/s/1fLt_dNILuw5VsV_PcA_yAQ提取码:ot3emysql5.7安装包下载链接地址:链接:https://pan.baidu.com/s/1du7Dk7WtJ0Ac......