程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> jboss規則引擎KIE Drools 6.3.0 Final 教程(3)

jboss規則引擎KIE Drools 6.3.0 Final 教程(3)

編輯:JAVA綜合教程

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開發人員來說意味著什麼

\'

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved