当前位置: 首页 > news >正文

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

在前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开发人员来说意味着什么


'



作业


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



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







相关文章:

  • 潜谈IT从业人员在传统IT和互联网之间的择业问题(上)-传统乙方形公司
  • 潜谈IT从业人员在传统IT和互联网之间的择业问题(下)-互联网公司
  • Oracle性能优化-读懂执行计划
  • JBOSS EAP实战(1)
  • CentOS环境下使用GIT基于Nginx的私服搭建全过程
  • 宅男也可变形男-我是如何在11个月零27天减掉80斤的
  • JBOSS EAP实战(2)-集群、NGINX集成、队列与安全
  • Apache ActiveMQ实战(1)-基本安装配置与消息类型
  • Apache ActiveMQ实战(2)-集群
  • 加解密、PKI与CA基础
  • OWASP Top 10十大风险 – 10个最重大的Web应用风险与攻防
  • MySQL系列教程(一)
  • MySQL系列教程(二)
  • MySQL系列教程(三)
  • MySQL系列教程(四)
  • php的引用
  • [数据结构]链表的实现在PHP中
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Angular数据绑定机制
  • angular学习第一篇-----环境搭建
  • Hexo+码云+git快速搭建免费的静态Blog
  • LeetCode18.四数之和 JavaScript
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • node-glob通配符
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • tensorflow学习笔记3——MNIST应用篇
  • 基于web的全景—— Pannellum小试
  • 基于游标的分页接口实现
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 三分钟教你同步 Visual Studio Code 设置
  • 事件委托的小应用
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信支付JSAPI,实测!终极方案
  • 详解NodeJs流之一
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 《天龙八部3D》Unity技术方案揭秘
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #QT项目实战(天气预报)
  • (2015)JS ES6 必知的十个 特性
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)elasticsearch 源码之启动流程分析
  • (三)mysql_MYSQL(三)
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ... 是什么 ?... 有什么用处?
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net core 6.0 升8.0
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)