文档章节

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

无鸯
 无鸯
发布于 2014/02/04 09:43
字数 525
阅读 165
收藏 0

概述

jBPM 6.0 最终版已与上月底发布,与jBPM 5相比有很大变化,本文从API编程的角度去简单说说jBPM 6,本文涉及到内容包括:

  • 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。

使用KieSession执行企业规则文件的例子:

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)

运行状态管理

jBPM 6运行状态管理(Runtime Manager)使用本地 KieSession, 本地 TaskService,与jBPM 5相比,隐藏了复杂的设定过程。

Runtime Manager管理三种类型的session:

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

如下为一个session管理过程示例:

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环境。

如下注册RuntimeManager示例:

@Inject 
@Singleton 
RuntimeManager singletonManager;

如下为注册TaskService示例:

@Inject 
TaskService taskService;



© 著作权归作者所有

共有 人打赏支持
无鸯
粉丝 124
博文 132
码字总数 207249
作品 0
朝阳
技术主管
私信 提问
JBoss 系列七十一:jBPM 6 发布,快速安装,新功能介绍

概述 jBPM 6.0 最终版已与上月底发布,本文主要从两个方面去介绍jBPM 6.0 : 快速安装 新功能介绍 快速安装 快速安装包括如下三步: 下载安装包 从http://sourceforge.net/projects/jbpm/fi...

无鸯
2014/02/04
0
0
为各位看官来介绍一下JBPM是个啥东东

JBPM简介 JBPM,全称是Java Business Process Management(业务流程管理),网络推广它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBP...

网络营销
2012/01/09
0
0
JBoss凭借BPEL和ESB发力SOA

为了提高自己在SOA领域的地位,JBoss正准备把旗下的jBPM产品改造为支持BPEL1.1和BPEL2.0。同时,该 开源软件供应商在本周发布了自己的ESB产品的beta版。 jBPM是一个应用于工作流,业务流程管...

晨曦之光
2012/03/09
0
0
《JBoss Seam:一个深度集成框架》一文的最后一部分。

作者简介: Michael Yuan,技术专家,《JBoss Seam: Simplicity and Power Beyond Java EE》、《Lightweight Java Web Application Development》等书的作者,软件顾问,目前就职于JBoss。 摘...

晨曦之光
2012/03/09
0
0
activiti工作流引擎(一)why activiti

公司早前花了一年,由5人左右规模的团队,弄了一个工作流为基础的平台系统,基于jbpm4实现。 最近我接手了这个项目组,开始在想升级优化的事情,刚开始想着从业务通用化的角度去改造。但看着...

fengwenjie
2014/03/01
0
1

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
11分钟前
0
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
1
0
利用ibeetl 实现selectpicker 的三级联动

1. js 直接写在html页面上面,ibeetl 就可以动态地利用后台传上来的model List ,不需要每次点击都要ajax请求后台 2. 使用selectpicker 的时候,除了对selecct option的动态处理后,还需要 $("#...

donald121
昨天
1
0
Android SELinux avc dennied权限问题解决方法

1. 概述 SELinux是Google从android 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。 然而,在开发中,我们经常会遇到由于SELinux造成的各种权限不足,即使拥有“...

TreasureWe
昨天
3
0
阿里云ACP认证详细笔记(一)

ECS--------------------------1.云服务器Elastic Compute Service(ECS)2.Terraform:您可以使用开源工具Terraform来预配和管理ECS资源。Terraform提供一种简单机制,能够将配置文件部署...

啃不动地大坚果
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部