BSTEK Development Framework2(BDF2) : 5.BDF2-JBPM4

bdf2-jbpm4模块不再维护更新

2013年10月01日起,BDF2中集成的jBPM4模块将不再做任何更新,今后将主推锐道自己的流程引擎UFLO,项目地址为bsdn.org/projects/uflo ,UFLO文档教程地址为UFLO Home

       BDF2-JBPM4是基于jBPM4流程引擎开发,在这个模块当中提供了操作流程常用的API、流程模块的管理与配置、流程模块的在线调试等众多常用的流程功能。同样将BDF2-JBPM4模块添加到我们的项目当中我们需要到nexus.bsdn.org上下载BDF2-JBPM4模块相关jar包,或者到我们的项目在线创建向导中勾选BDF2-JBPM4模块,然后下载项目;如果您采用的是Maven,那么只需要在您项目的pom.xml当中添加BDF2-JBPM4模块的依赖即可,如下所示:

BDF2-JBPM4模块所需要的依赖
<dependency>
  <groupId>com.bstek.bdf2</groupId>
  <artifactId>bdf2-jbpm4</artifactId>
  <version>2.0.0</version>
</dependency>

      值得注意的是,BDF2-JBPM4模块在运行时依赖BDF2-JOB模块,所以如果您是非Maven结构项目,在下载BDF2-JBPM4模块的Jar后,你还需要将BDF2-JOB模块及其所依赖的Jar下载下来,当然如果您采用的是Maven来管理项目,那么,在添加BDF2-JBPM4模块的依赖后,Maven会帮我们自动下载相关依赖信息,比如依赖的BDF2-JOB模块及相关第三方Jar等。

      Jar包配置完成之后,就可以运行我们的项目了。项目启动时,我们可能会见现下面的异常:

BDF2-JBPM4模块启动时可能会出现的异常
Caused by: org.jbpm.api.JbpmException: no 'bdf2.jbpm4.transactionManagerBean' in current environment
	at org.jbpm.pvm.internal.env.EnvironmentImpl.getFromCurrent(EnvironmentImpl.java:232)
	at org.jbpm.pvm.internal.env.EnvironmentImpl.getFromCurrent(EnvironmentImpl.java:218)

      解决办法比较简单,我们需要在configure.properties文件当中添加一名为bdf2.jbpm4.transactionManager的属性,这个属性的值为当前环境当中正在使用的Spring的TransactionManager的bean的ID,如果您是通过向导创建的项目,在datasources.xml当中,已存在一个bean id为bdf2.jdbcTransactionManager的TransactionManager对象,所以我们在configure.properties文件当中添加bdf2.jbpm4.transactionManager=bdf2.jdbcTransactionManager即可,再次启动我们的工程,可以看到工程已经可以正常启动了。

为什么要定义bdf2.jbpm4.transactionManager属性呢

jBPM4在运行是时,需要当前环境当中有事务包裹,这样才能保证流程操作的完整性,所以我们在使用jBPM4的时候就开放出这么一个名为bdf2.jbpm4.transactionManager属性,让我们来选择当前使用的transactionManager。

      在BDF2-JBPM4模块当中,也提供了一些用于管理的可视化界面,所以,如果您在使用BDF2-JBPM4模块时,也同时使用了BDF2-CORE模块,那么可以在登录之后访问generate.system.menu.action这个用于初始化菜单的URL,创建好的导航菜单如下图所示:

jBPM4表的创建

BDF2-JBPM4模块虽然支持通过Hibernate自动创建jBPM4相关表,但我们推荐使用jBPM4官方提供的建表语句手工创建jBPM4运行时所需要的表,具体方法就是在运行我们的项目之前将这些表手工创建出来,下面罗列了不同数据库下jBPM4的建表Schema:

       BDF2-JBPM4模块提供了下面这些属性允许我们的开发人员对其进行覆盖。

属性名类型默认值描述
bdf2.jbpm4.transactionManagerString指定jBPM4流程引擎要采用的TransactionManager的bean的ID
bdf2.jbpm4.listTodoTaskUrlStringbdf2.jbpm4.view.todo.TodoTaskMaintain.d在有BDF2-CORE模块的前提下,进入主界面之后,会自动提示是否有流程中的待办任务,如果有点击会进入到这个属性指定的URL页面查看并处理待办任务
bdf2.jbpm4.defaultProcessUsernameStringbdf2默认的流程处理人的用户名
bdf2.jbpm4.dataSourceNameString流程模块采用的数据源,为空表示采用默认数据源
bdf2.jbpm4.disablePromoterAssignmentbooleanfalse是否禁用系统提供的基于流程发起人的任务分配器。如果为true,那么在任务分配人选择当中就看不到流程发起人这个任务分配器。
bdf2.jbpm4.disableSpecifyUserAssignmentbooleanfalse是否禁用系统提供的通过指定一个用户作为流程处理人的任务分配器,同样,如果禁用就看不到它了。
bdf2.jbpm4.disableFetchTodoTaskCountShortcutRegisterbooleanfalse在有BDF2-CORE模块的前提下,进入主界面之后,会自动提示是否有流程中的待办任务,提示有多个待办任务,如果将这个属性设置为true,那么就不再有这个提示功能。
bdf2.fetchInternalTodoTaskCountIntervalint600000在将bdf2.jbpm4.disableFetchTodoTaskCountShortcutRegister设置为true的前提下,设置每隔多久到服务端取一次当前登录用户的待办任务数量,默认为600000毫秒,也就是10分钟取一次。
bdf2.jbpm4.scanTaskReminderJobCronExpressionString0 33 * * * ?实现任务到达周期提醒及任务过期提醒JOB扫描的周期扫描时间,默认为每小时的第33分钟扫描一次。
bdf2.jbpm4.disableAnonymousDeployProcessbooleanfalse是否禁用不登录就可部署流程功能,这个主要是为画流程模版的IDE直接部署流程功能服务的,如果为true,那么用户只能将流程模版导出,然后到系统提供的“配置与监控”当中部署流程模版。
bdf2.jbpm4.disabledCompleteTaskToolbarContentProviderbooleanfalse是否禁用可以为通用工具栏提供完成任务功能的组件提供者
bdf2.jbpm4.disabledJumpNodeToolbarContentProviderbooleanfalse是否禁用可以为通用工具栏提供跳转任务节点功能的组件提供者
bdf2.jbpm4.disabledSeeProcessImageToolbarContentProviderbooleanfalse是否禁用可以为通用工具栏提供查看流程图功能的组件提供者
bdf2.jbpm4.genericTaskToolBarIdString通用工具栏组件内容要输出目标工具栏的ID,如果为空,那么系统将自动创建工具栏,否则采用该属性指定的id对应的工具栏。

Attachments:

jbpm4-menu.png (image/png)
jbpm.db2.create.sql (application/octet-stream)
jbpm.informix.create.sql (application/octet-stream)
jbpm.ms2000sql.create.sql (application/octet-stream)
jbpm.ms2005sql.create.sql (application/octet-stream)
jbpm.mysql.create.sql (application/octet-stream)
jbpm.oracle.create.sql (application/octet-stream)
jbpm.postgresql.create.sql (application/octet-stream)