Skip to end of metadata
Go to start of metadata

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

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

uflo-core依赖配置

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

uflo-console模块依赖配置

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

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

关于UFLO版本

目前uflo-core及uflo-console的最新版为2.0,我们可以到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库配置

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

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

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

EnvironmentProvider实现类示例

        在上面的示例实现类当中,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对象的。

       如果需要的是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对应的transactionManager绑定。

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

 

UFLO的Servlet配置

 

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

加载uflo-console的spring配置文件

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

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

       上面的“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)


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


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


Labels
  • No labels