`
zybing
  • 浏览: 447199 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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();

...

}
 


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics