jBPM4.4:ProcessFactory和ProcessDefinitionBuilder

在文档中,有例子可以创建自己的流程,用的是ProcessFactory

 

在devguild中的7.4的ExternalActivity中提到第一次

 

实际拿到jBPM4.4中,没有这个ProcessFactory。

 

网上找资料,在论坛上找到了处理方法(http://community.jboss.org/message/529684

现在用 ProcessDefinitionBuilder 代替了 ProceeFactory

 

ProcessDefinitionBuilder 的使用如下:

 

  • 通过startProcess启动一个Process的定义,返回ProcessDefinitionBuilder对象
    • 增加Activity:
      调用ProcessDefinitionBuilder 的 startActivity 方法,增加 Activity 进入 ProcessDefinition;
      Activity设置完成,使用 endActivity 方法告诉 ProcessDefinition,这个Activity定义结束了;
      流程的转向用transition()函数增加;
    • 需要定义一个启动动作:
      需要一个启动元素,在创建流程实例的时候,第一个先到达这个元素;
      这个元素在启动流程(ProcessDefinitionImpl调用startProcessInstance的时候要寻找这个元素的)
      定义的方法是在设置Activity的时候,调用ProcessDefinitionBuilder的initial方法来确定的;
  • 流程定义结束,调用endProcess告诉ProcessDefinitionBuilder,流程定义结束,返回ProcessDefinitionImpl

示例如下:
public static void main(String[] args) throws Throwable {

// 开始一个流程定义
ProcessDefinitionBuilder builder = ProcessDefinitionBuilder.startProcess("Hello World");

// 开始增加Activity:自己定义的Activity要实现ActivityBehaviour接口
// 第一个Activity定义为启动节点,这个由调用initial()来确定的
// Activity定义结束,调用endActivity();  
// 流向由transition来定义:
//          可以transition(String to) 或者 transition(String to, String name) 2种方式
builder.startActivity(new StartActivity())
          .initial()
          .transition("hello display")
          .endActivity();

builder.startActivity("hello display", new Display("Hello"))
           .transition("world display")
           .endActivity();

builder.startActivity("world display", new Display("World")).endActivity();

// 流程定义结束,调用 endProcess确认
ProcessDefinitionImpl processDefinition = builder.endProcess();

// 开始一个流程
ClientProcessInstance clientProcessInstance = processDefinition.startProcessInstance();

...

}
 


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值