JBoss 系列七十二:jBPM 6 新功能/特性介紹(API 層面)

概述

jBPM 6.0 最終版已與上月底發佈,與jBPM 5相比有很大變化,本文從API編程的角度去簡單說說jBPM 6,本文涉及到內容包括:
java

  • 2個重要的接口
  • 運行狀態管理
  • jBPM 服務注入 (CDI)

2個重要的接口

jBPM 6最主要的兩個接口指的是KieSession (ProcessRuntime)和TaskService。編程


KieSession 是最經常使用與引擎交互的接口,一個KieSession容許應用與引擎創建一個iterative conversation,where the state of the session is kept across invocations. The reasoning process may be triggered multiple times for the same set of data. 當應用程序完成使用session,dispose()方法必須被調運,這樣是爲了free the resources and used memory。
session

使用KieSession執行企業規則文件的例子:
ui

KieServices kieServices = KieServices.Factory.get();
KieContainer kContainer = kieServices.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession();

for( Object fact : facts ) {
kSession.insert( fact );
}
kSession.fireAllRules();
kSession.dispose();

使用KieSession執行企業流程文件的例子:

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("sample.bpmn"), ResourceType.BPMN2);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
KieSession kSession = kbase.newStatefulKnowledgeSession();
kSession.startProcess("com.sample.processid");
kSession.signalEvent("SomeEvent", null);
kSession.startProcess("com.sample.processid");
kSession.dispose();

ProcessRuntime 是最高層的抽象接口,用來啓動流程,建立一個流程(不啓動),激活信號,取消一個流程,獲取全部流程實例已經獲取session相關的WorkItemManager。


TaskService能夠看做是對外提供的一個統一接入點,用來獲取全部TaskService服務。(The Task Service Entry Point serves as facade of all the other services, providing a single entry point to access to all the services)spa

運行狀態管理

jBPM 6運行狀態管理(Runtime Manager)使用本地 KieSession, 本地 TaskService,與jBPM 5相比,隱藏了複雜的設定過程。
code

Runtime Manager管理三種類型的session:
接口

  • Singleton session
  • Session per request
  • Session per process instance

以下爲一個session管理過程示例:
ip

RuntimeManager manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment);
RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get(id));
KieSession ksession = runtime.getKieSession();

// do something here, e.g.
ksession.startProcess(「org.jbpm.hello」);

manager.disposeRuntimeEngine(engine);
manager.close();

jBPM 服務注入 (CDI)

jBPM 6默認安裝到JEE6兼容的JBoss 7容器,CDI是JEE6的基本組件,jBPM 6也提供了 將jBPM相關的服務能夠注入到CDI環境。
get

以下注冊RuntimeManager示例:it

@Inject 
@Singleton 
RuntimeManager singletonManager;

以下爲註冊TaskService示例:

@Inject 
TaskService taskService;
相關文章
相關標籤/搜索