从jBPM3转换到jBPM4

第 3 章 从jBPM3转换到jBPM4

3.1. jBPM 4的目标

在构建jBPM 4时,我们追求两个主要目标:

  • 提升保障:jBPM3时,我们仅仅从社区反馈 来提升稳定性和扩展性。jBPM4时, 我们确定了要支持哪些环境的配置。 那些环境都放在JBoss OA实验室的持续集成环境中。 现在构建支持所有这些环境和配置, 所以对我们来说更容易重现和检测它们提出的问题。 覆盖率也保证jBPM4有更长的寿命。
  • 降低入门要求,提升下一级的水平: 在jBPM4中,我们很清晰的区分了普通应用和高级应用之间的区别。 所以很容易就可以入门, 很难(但是还是可能的)提高 开发者需要拼命敲键盘了。

3.2. 知识范围

为了在基本应用和高级应用之间做清晰的分隔, API已经完全重构了。基本应用覆盖了公共API。 相同的API也被所有的已支持的环境支持。 jBPM4和jBPM3中的包是严格分开的。

为了提供完全的DB迁移,我们提供了一个策略 允许jBPM3和jBPM4实例可以同时运行。 表名的前缀由JBPM_改为JBPM4_。 还没有功能可以把jBPM3运行时的数据库转换为jBPM4. 我们不确定是否可以在下一个版本中创建一个这样的工具。 一个主要的原因是,任何对DB内容进行数据迁移的QA 都不可能让项目组来承担。

此外,这里还有一些功能jBPM4还没有支持。 它们按照可能和不可能的顺序, 在jBPM4中实现。

  • U用户提供事务性资源,比如jDBC连接 或hibernate连接。
  • 异常处理器
  • 临时变量
  • 身份认证表达式,来计算任务的分配人
  • 任务的变量到参数的转换

3.3. 流程转换工具

在很多情况下,很多工作已经使用JDPL3的流程定义设计过了。 为了避免完全使用手工方式将这些流程转换到JPDL4的格式, jBPM发布包中包含了一个子目录,叫做 migration,它包含了一个命令行工具, 可以把转换JPDL3流程定义文件转换到JDPL4的xml文件。

转换后的流程可能没法运行, jBPM4的特性可能还是被丢掉了,或者转换器本身还没有实现。 只是,乏味的重新格式化工作会被工具处理了。 它也可以之处它不能转换的部分。

这个工具本身只使用dom4j在两种格式之间进行转换工作, 应该很很容易扩展(源代码也在同一个目录下)。 工具的设计故意保持着非常简单 (比如,大多数逻辑都可以在Jpdl3Converter类中找到)。 注意这个工具只在很少的JDPL3流程文件上进行过试验 和测试。

3.3.1. 概述

jPDL转换工具把一个jpdl3流程文件作为输入, 把它转换成jpdl4流程文件。

语法:

java org.jbpm.jpdl.internal.convert.JpdlConverterTool -v -o <outputfile> <processfile>

 

3.3.2. 参数

  • -v (verbose): 这个工具将打印 转换流程文件过程中的细节信息。当使用了这个参数时, 也会在抛出异常时打印错误堆栈。
  • -o (output) 指定输入文件名。 默认情况下,会生成一个后缀为'converted.jpdl.xml'的文件, 基于输入的流程文件的名字。 输出文件名可以是绝对路径文件或相对路径文件名。

3.3.3. 使用示例

java -jar jpdl-migration-XX.jar simple.jpdl.xml
java -jar jpdl-migration-XX.jar -v simple.jpdl.xml
java -jar jpdl-migration-XX.jar -o /home/scott/simple.converted.xml simple.jpdl.xml
      

3.3.4. 高级应用

转换工具很容易就可以继承到java代码中 (或者maven,ant)。下面的代码示范了如何在内部调用 api来转换流程文件:

URL url = new URL("simple.jpdl");
Jpdl3Converter jpdlConverter = new Jpdl3Converter(url);
Document jpdl4Doc = jpdlConverter.readAndConvert();

for (Problem problem : jpdlConverter.problems) {
   //do something to handle the problem
}

Writer fileWriter = new FileWriter(outputFile);
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter( fileWriter, format );
writer.write(jpdl4Doc);
writer.close();

 

3.4. 解释和修改

这一章展示了最重要的重命名和 jBPM4中的修改。

表 3.1. 主要名称修改

jBPM 3jBPM 4备注
NodeActivity
TokenExecution根execution现在和流程实例是一个对象。 (在jBPM3中,ProcessInstance有一个 指向根token的指针)。同时,不像jBPM3,jBPM4中的execution可能不被激活, 创建一个子execution,并让这个子execution继续,即使逻辑上展现出来的 只有一个单独的执行路径。 这会发生在有范围的活动(或组合活动)中,其中声明了定时器或者变量。
ActionEvent listener 

表 3.2. jPDL XML修改

jBPM 3jBPM 4
process-definitionprocess
event type="..."on event="..."
actionevent-listener
nodecustom
process-statesub-process
super-stategroup (还在孵化器中)

表 3.3. 默认修改

jBPM 3jBPM 4
默认,传播的事件触发器在流程元素外边默认,传播事件不会调用外边元素的事件监听器, 只是在元素中注册了的 事件监听器起作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值