博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
阅读量:4132 次
发布时间:2019-05-25

本文共 1905 字,大约阅读时间需要 6 分钟。

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

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

先上代码

[java]   
  1. String url = "http://192.168.0.101:8080/kie-drools/maven2/org/sky/drools/ApprovalDecision/1.0.0/ApprovalDecision-1.0.0.jar";  
  2.   
  3. KieServices ks = KieServices.Factory.get();  
  4. KieRepository kr = ks.getRepository();  
  5. UrlResource urlResource = (UrlResource) ks.getResources().newUrlResource(url);  
  6. urlResource.setUsername("tomcat");  
  7. urlResource.setPassword("tomcat");  
  8. urlResource.setBasicAuthentication("enabled");  
  9. InputStream is = urlResource.getInputStream();  
  10. KieModule kModule = kr.addKieModule(ks.getResources().newInputStreamResource(is));  
  11. KieContainer kContainer = ks.newKieContainer(kModule.getReleaseId());  
  12. KieSession kieSession = kContainer.newKieSession();  
  13. try {  
  14. PaymentInfo m = new PaymentInfo();  
  15. m.setMoneyAmount(10000);  
  16. kieSession.insert(m);  
  17. kieSession.fireAllRules();  
  18. System.out.println(m.getDecisionPath());  
  19. catch (Exception e) {  
  20. e.printStackTrace();  
  21. finally {  
  22. try {  
  23.     kieSession.dispose();  
  24. catch (Exception e) {  
  25. }  
  26. }  


其区别在于:

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

Stateful VS Stateless

Stateless

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

Stateful

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

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

[java]   
  1. finally {  
  2.     try {  
  3.         kieSession.dispose();  
  4.     } catch (Exception e) {  
  5.     }  
  6. }  


迈向SOA的第一步

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

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

IT人员的还本归宗,业务交由业务开发人员,IT人员只观注于技术的实现;
降低产品、项目中技术集成的复杂性;
容易培养出领域高手:即IT开发人员只需要关注于自己的某一块领域如:流程开发专家、数据库专家、前台特效程序员、系统实施、集成、管理专家。

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

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

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

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

什么是SOA

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

'

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

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

'

作业

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

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

你可能感兴趣的文章
纯css实现table滚动条(纯css实现div滚动条)
查看>>
jquery 设置disabled与去掉disabled属性的方法
查看>>
DIV居中(水平居中及垂直居中)实现代码
查看>>
Mybatis遇到No constructor found in ....的解决方法
查看>>
tomcat启动控制台中文乱码问题解决方法
查看>>
隐藏tomcat版本号/修改tomcat版本号
查看>>
tomcat安全加固手册
查看>>
tomcat指定项目路径(tomcat访问项目不带项目名称)
查看>>
tomcat设置窗口标题名字
查看>>
tomcat指定jdk路径
查看>>
oracle用命令执行sql脚本文件
查看>>
js定制器启动与停止
查看>>
create table as select from和 insert into select from的用法
查看>>
java.lang.IllegalArgumentException: Request header is too large 解决方法
查看>>
word图片批量添加题注(序号)的方法
查看>>
input输入框,只输入数字的控制方法
查看>>
oracle case when then else 语法
查看>>
eclipse 显示内存使用情况
查看>>
windows下Nginx安装及使用
查看>>
oracle使用&(百分号)或_(下划线)进行模糊查询
查看>>