在前2部教程中,介绍了如何在本地运行.drools文件以及使用stateless的方法访问远程repository上的规则。 KIE Drools还提供了一种叫有状态-stateful的访问方式。

运行KIE-DROOLS上的规则-另一种写法

先上代码
String url = "http://192.168.0.101:8080/kie-drools/maven2/org/sky/drools/ApprovalDecision/1.0.0/ApprovalDecision-1.0.0.jar";

KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
UrlResource urlResource = (UrlResource) ks.getResources().newUrlResource(url);
urlResource.setUsername("tomcat");
urlResource.setPassword("tomcat");
urlResource.setBasicAuthentication("enabled");
InputStream is = urlResource.getInputStream();
KieModule kModule = kr.addKieModule(ks.getResources().newInputStreamResource(is));
KieContainer kContainer = ks.newKieContainer(kModule.getReleaseId());
KieSession kieSession = kContainer.newKieSession();
try {
PaymentInfo m = new PaymentInfo();
m.setMoneyAmount(10000);
kieSession.insert(m);
kieSession.fireAllRules();
System.out.println(m.getDecisionPath());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
kieSession.dispose();
} catch (Exception e) {
}
}

其区别在于:

这是一个stateful(有状态)session的调用,上一个教程中的例子里面我们是一个无状态的调用。

Stateful VS Stateless

Stateless

即无状态调用,比如说FACT A里的值初始为0。当这条规则被执行完成后自动断开连接并释放。

Stateful

即有状态调用,比如说FACT A里的值初始为0,当某一条Request把其值修改为20时在代码没有显示的调用dispose时,这个值会一直维持着。

因此在对于Stateful Session的调用完毕后要显示的去“手工”关闭和释放它,如下面的代码:

finally {
try {
kieSession.dispose();
} catch (Exception e) {
}
}

迈向SOA的第一步

重新来看“基于BRMS的系统逻辑架构”

再回过头来思考下面3句话:

IT人员的还本归宗,业务交由业务开发人员,IT人员只观注于技术的实现;

降低产品、项目中技术集成的复杂性;

容易培养出领域高手:即IT开发人员只需要关注于自己的某一块领域如:流程开发专家、数据库专家、前台特效程序员、系统实施、集成、管理专家。

规则结合BPM(工作流)的典型应用场景

还是看不懂? 没关系,来看下面这个例子

当流程流转到“员工提交报销金额时”,此时有一个Decision节点,该节点通过返回“path(M或者GM)”,一旦BPM的Decision的path得到了这个值,BPM会自动决定下一步流程的走向到底是“报经理批”还是“再报总经理批”这样两条路径中来作一个选择。

希望你通过这个例子明白什么叫“IT能够快速响应频繁的业务变化”、什么叫24*7、什么叫“加速业务走向市场”这些话的意思了吧。

什么是SOA

SOA对业务和销售人员来说意味着什么

'

SOA对企业、客户方的业务人员来说意味着什么

SOA对IT开发人员来说意味着什么

'

作业

结束本次教程,留个涉作业给大家

微信号如下,欢迎一起交流

jboss规则引擎KIE Drools 6.3.0 Final 教程(3)的更多相关文章

  1. jboss规则引擎KIE Drools 6.3.0 Final 教程(1)

    前言 目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5 ...

  2. jboss规则引擎KIE Drools 6.3.0 Final 教程(2)

    使用JAVA程序调用规则-运行KIE-DROOLS上的规则 第一步:建立一个MAVEN的Java工程 POM.XML 给出pom.xml文件 <project xmlns="http: ...

  3. Drools规则引擎

    一.简介 Drools is a Business Rules Management System (BRMS) solution. It provides a core Business Rules ...

  4. drools规则引擎笔记(二)

    规则引擎版本,drools6.5.0 final eclipse:Neon JDK1.8 今天主要是在规则的when部分加入了多个fact对象. 对于working memory存在多个fact的情形 ...

  5. drools规则引擎与kie-wb和kie-server远程执行规则(7.18.0.Final)

    最近研究了一下规则引擎drools. 这篇博客带你搭建并运行一个可在线编辑,在线打包,远程执行的规则引擎(drools) 本篇博客同时参考https://blog.csdn.net/chinrui/a ...

  6. Drools 规则引擎应用

    规则引擎-drools 1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 .... ...

  7. Drools 规则引擎应用 看这一篇就够了

    1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 ...... 1.2传统做法 1 ...

  8. JAVA规则引擎 -- Drools

    Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效. 本文所使用的de ...

  9. eclipse下搭建Drools规则引擎环境

    插件下载地址:http://download.jboss.org/drools/release/ 1.点开对应的版本文件,选择标红的两个压缩包下载,其他的如有需要也可以自行选择: 2.将下载的压缩包解 ...

随机推荐

  1. 对scrapy经典框架爬虫原理的理解

    1,spider打开某网页,获取到一个或者多个request,经由scrapy engine传送给调度器schedulerrequest特别多并且速度特别快会在scheduler形成请求队列queue ...

  2. Java基础学习(四)-- 接口、集合框架、Collection、泛型详解

    接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写.   二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...

  3. JAVA_将唐诗按照古文样式输出

    1. 如有唐诗: 锄禾日当午 汗滴禾下土 谁知盘中餐 粒粒皆辛苦 要求将这首唐诗按照古文样式输出,输出格式如下: 粒谁汗锄 粒知滴禾 皆盘禾日 辛中下当 苦餐土午 public class Text ...

  4. Javascript中的url编码与解码(详解)

    摘要 本文主要针对URI编解码的相关问题做了介绍,对url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript中和编解码相关的几对函数escape / unescap ...

  5. [LeetCode] Detect Capital 检测大写格式

    Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...

  6. [LeetCode] Find Bottom Left Tree Value 寻找最左下树结点的值

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...

  7. Python网络爬虫笔记(二):链接爬虫和下载限速

    (一)代码1(link_crawler()和get_links()实现链接爬虫) import urllib.request as ure import re import urllib.parse ...

  8. [HNOI2008]玩具装箱TOY

    题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...

  9. ●BZOJ 3309 DZY Loves Math

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...

  10. 伸展树Splay【非指针版】

    ·伸展树有以下基本操作(基于一道强大模板题:codevs维护队列): a[]读入的数组;id[]表示当前数组中的元素在树中节点的临时标号;fa[]当前节点的父节点的编号;c[][]类似于Trie,就是 ...