2.安装与配置

2022-07-22 09:59 更新

      使用UFLO,要从安装UFLO流程模版设计器开始。安装方法是打开UFLO在BSDN的项目主页,进入其下载专区(http://www.bsdn.org/proje

cts/uflo/download/list),下载以uflo-ide开头的包,下载到本地后解压,将解压后的文件夹放置到Eclipse的dropins目录下重启Eclipse即可。

上述操作要求我们本地要有一个3.5及以上J2EE版本的Eclipse(如果你用的是MyEclipse,不能保证安装成功)。安装成功打Eclipse后,可以在新建文件向导中看到UFLO流程模版的创建菜单,如下图所示:

如果您看到了如上图所示的UFLO流程模版创建菜单,那就说明您的UFLO流程模版设计器安装成功了,接下来就可以选择一个模版文件存放目录,创建第一个流程模版了。

流程模版设计器安装成功之后,接下来就可以配置我们的项目了。将UFLO添加到我们的项目当中分两种情况,一种是Maven项目,另一种是普通的web项目,我们首先来看看如果将UFLO添加到我们现有的一个由Maven管理的项目当中。

首先打开打开一个已存在的dorado7项目,找到项目中的pom.xml文件,在其中添加uflo-core依赖,内容如下:

uflo-core依赖配置

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

uflo-console模块依赖配置如下:

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

对于uflo-core与uflo-console两模块,我们提供了基于hibernate3与hibernate4编译的两种类型的版本,如果您的项目持久层采用的是hibernate3,那么上述的默认配置下载的就是基于hibernate3编译的版本;如果您需要基于hibernate4编译的版本,那么需要添加classifier标记,如下面的dependency所示:

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

当然如果要显示取hibernate3版本,上述在classifier中的hibernate4就要改成hibernate3。无论是哪个版本,uflo-core与uflo-console的依赖中都没有显示标记要依赖hibernate,所以我们需要在项目的pom.xml中添加对应的hibernate版本依赖信息。

最后我们还需要添加uflo-client模块,那么需要在pom.xml中添加如下配置:

uflo-client模块依赖配置

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

因为uflo-client模块没有hibernate3或hibernate4版本之分,所以在添加uflo-client模块时,是不需要添加classifier标记的。

当然因为我们的这些包都托管在BSDN的Maven库当中,所以还需要修改您的pom.xml,在其中添加如下配置,以告诉Maven该到哪里下载这些Jar包。

Maven库配置

<repositories>  <repository>
   <id>bsdn-maven-repository</id>
   <url>http://nexus.bsdn.org/content/groups/public/</url>  </repository>
</repositories>

以上为Maven项目在添加UFLO支持时所需要做的工作,如果您采用的是传统项目,那配置过程相比之下就麻烦多了,我们需要到http://www.bsdn.org/projects/uflo/download上下载UFLO发行包(不一定是最新的)及所需要的第三方依赖Jar包,然后把它们放到我们的项目当中,最后就是检查有没有同类型但版本不同的Jar,如果有还需要进行清理,最后启动测试,如果有报错,再根据报错信息进行处理......

项目添加好UFLO之后,接下来还需要编写一个名为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 返回流程引擎临时文件存储目录
*/
String getTempFileStorePath(); /**
* @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 String getTempFileStorePath() {
return System.getProperty("java.io.tmpdir"); }
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"; }
}

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

该接口实现类编写完成后,需要将其配置到Spring当中,让其成为一个标准的SpringBean,这样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="entityInterceptor" ref="unByteCodeProxyInterceptor" /><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>

如果需要的是hibernate4的sessionFactory,那么我们只需要将上述配置的class值改为org.springframework.orm.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对应的dataSource绑定。

在UFLO当中提供了一些可供外部系统覆盖的属性,通过对这些属性值的重新定义,可让UFLO更加适应我们的业务系统,因为这里是在dorado7项目中添加uflo支持,所以对于uflo中提供的属性,如果我们需要在项目当中覆盖它们,那么只需要将它们定义到项目的WEB-INF/dorado-home/目录下的configure.properties文件当中即可,这些可覆盖的属性如下表所示。










以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号