在業(yè)務(wù)邏輯層里操作不是都相同的么?為什么特別指出不需要JSP要用GUI呢?難道是用ajax寫?但你說在數(shù)據(jù)庫搜索內(nèi)容并顯示又不像ajax。搞不懂。

10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有尚義免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
類似于下面那樣子的業(yè)務(wù)吧?:
String sql="select WP_PRODUCT.*,WP_PROD_CTGRY.C_NAME from WP_PRODUCT,WP_PROD_CTGRY where WP_PRODUCT.CTGRY_ID=WP_PROD_CTGRY.TID ";
ListObject params=new ArrayListObject();
if(type!=null!"".equals(type)){
sql+=" and CTGRY_ID like ?";
params.add(type+"%");
}
if(proName!=null!"".equals(proName)){
sql+=" and NAME like ?";
params.add("%"+proName+"%");
}
if(code!=null!"".equals(code)){
sql+=" and CUSTOM_ID like ?";
params.add(code+"%");
}
if(brandId!=null!"".equals(brandId)){
sql+=" and OWNER_ID = ?";
params.add(brandId);
}
if(netId!=null !"".equals(netId)) {
sql += " and WP_PRODUCT.TID IN(SELECT PRODUCT_ID FROM WP_NET_PRODUCT WHERE OWNER_ID = ?) ";
params.add(netId);
}
sql += " order by WP_PRODUCT.MOD_DATE desc";
this.getVisitor().createPaginationExecutor(sql, page, params.toArray()).pagination(WpProdBean.class);
很多朋友都想知道java規(guī)則引擎是什么?下面就一起來了解一下吧~
一、簡介:
Drools就是為了解決業(yè)務(wù)代碼和業(yè)務(wù)規(guī)則分離的引擎。 Drools 規(guī)則是在 Java 應(yīng)用程序上運行的,其要執(zhí)行的步驟順序由代碼確定,為了實現(xiàn)這一點,Drools 規(guī)則引擎將業(yè)務(wù)規(guī)則轉(zhuǎn)換成執(zhí)行樹。
二、特性:
優(yōu)點:
1、簡化系統(tǒng)架構(gòu),優(yōu)化應(yīng)用
2、提高系統(tǒng)的可維護(hù)性和維護(hù)成本
3、方便系統(tǒng)的整合
4、減少編寫“硬代碼”業(yè)務(wù)規(guī)則的成本和風(fēng)險
三、使用方式:
(1)Maven 依賴:
? org.kie ???????? kie-api ???????? 6.5.0.Final ???? ???? ???????? org.drools ???????? drools-compiler ???????? 6.5.0.Final ???????? runtime ???? ???? ???????? junit ???????? junit ???????? 4.12 ????
(2)新建配置文件/src/resources/META-INF/kmodule.xml ???? ???????? ????
看它怎么解析 xml 成為一個 model 的過程不就明白了。
一般它都有一個把已經(jīng)另外定義好的 xml 配置解析成一個 model 對象,我們看它的過程是怎么做的,模仿一下。
運行過程中在解析 model 的代碼中我們下個斷點,然后觀察 stack trace 就知道它是怎么初始化 xml 成為一個 model 對象的。
java 工作流引擎適用于多個行業(yè)領(lǐng)域及需求場景,利用低代碼開發(fā)平臺可高效提供需求建模、系統(tǒng)設(shè)計、開發(fā)部署、仿真測試、運行維護(hù)和版本更新的軟件開發(fā)全生命周期支持!
還可快速構(gòu)建OA協(xié)同、公文督辦、KM文庫、項目管理、采購管理、生產(chǎn)管理、供應(yīng)鏈管理、營銷管理等一些列職能類和業(yè)務(wù)類管理系統(tǒng)并提供PC與移動多應(yīng)用端入口。
提供BPM流程管控、數(shù)據(jù)跨平臺采集和報表展示、原系統(tǒng)流程補強、OA升級/替換、統(tǒng)一門戶、移動辦公、多租戶SaaS應(yīng)用和智能硬件對接等解決方案。
該爾杰斯開發(fā)環(huán)境( JessDE )提供的一套插件為流行的開源的IDE Eclipse的;特別是,這些都是Eclipse的插件版本為3.1或更高版本。請注意,只有JessDE作品的充分“的Eclipse SDK的” -規(guī)模較小的“平臺運行二進(jìn)制”是不夠的。
要安裝JessDE ,只需退出Eclipse的,解壓縮所有文件Jess71p2/eclipse進(jìn)入最高級別的Eclipse的安裝目錄。確認(rèn)目錄命名為“ plugins/gov.sandia.jess_7.1.0 ”存在,在你的Eclipse的安裝目錄,然后重新啟動Eclipse的。 //////
這段翻譯的結(jié)果,不是你的SDK 不是 full "Eclipse SDK"
Jess 7.0p1——Java平臺規(guī)則引擎(一) 2008-07-12 22:21
分類:JESS 字號: 大大 中中 小小 1.入門
1.1.需求
Jess是一個用java語言編寫的程序庫。因此要使用Jess你需要Java虛擬機(jī)(JVM)。你可以從 Sun Microsystems上免費得到一個非常適合用于Windows, Linux,Solaris上的JVM。Jess 7是兼容所有版本的Java,從開始的JDK 1.4到現(xiàn)在的最新版本JDK1.5。版本更老的編號為4.x的Jess兼容JDK 1.0, 5.x版本兼容的是JDK1.1,Jess 6工作在JDK1.2及以上版本。
在使用Jess前請先確認(rèn)JVM是否正確安裝并能正常工作。
使用JessDE集成開發(fā)環(huán)境,你需要Eclipse SDK的3.1版或更新版本,這個可以從獲得。安裝JessDE前請確認(rèn)Eclipse是已經(jīng)安裝并能正常工作。
Jess類庫為另一種語言擔(dān)任譯員,這種語言我在本文檔中稱為Jess語言。Jess語言是一種高度專業(yè)化的Lisp形式語言。
我會認(rèn)為讀者你是將使用這兩種或其中一種語言的一個程序員。并且所有的讀者都至少有起碼Java基礎(chǔ)。另外你必須有一個Java運行系統(tǒng)和知道如何以一個簡單的方法使用這個系統(tǒng)。你應(yīng)該知道如何用它來:
· 運行一個Java應(yīng)用程序
· 處理如CLASSPATH變量的配置問題
· 編譯Java源文件集(可選)
如果你沒有對Java的環(huán)境有基本的熟悉,那么我建議你購買了關(guān)于java的基礎(chǔ)的書籍。對與各種平臺的Java軟件以及豐富的教程和文檔可以免費從上獲得。
對于那些將要使用jess語言編寫程序的讀者,我假定你們已經(jīng)熟悉了一般程序編寫的原理。我會說明整個Jess語言,所以熟悉Lisp是不需要(雖然熟悉是有些用的)。此外,在可能范圍內(nèi),我將努力說明基于規(guī)則系統(tǒng)的最重要的概念,因為它們適用于Jess。再次,我將假定讀者對這些概念有了一定的熟悉程度和了解更多。如果不熟悉基于規(guī)則系統(tǒng),你也許應(yīng)當(dāng)考慮購買一本關(guān)于這一主題的書籍。
許多讀者都希望提高Jess的能力,無論是通過向Jess語言加入的命令(用JAVA語言寫)或以Java應(yīng)用的方式嵌入Jess庫。另外一些人會想用Jess語言的Java集成能力來從Jess語言程序調(diào)用Java函數(shù)。在本文檔專門針對這類讀者的一些章節(jié)中,我將承擔(dān)適度Java編程的知識。我不會教Java語言任何方面的知識,有興趣的讀者可到您當(dāng)?shù)氐臅陞㈤喯嚓P(guān)書籍。
這個文檔包含了一個目錄,在很多書上這些主題也都被列舉出來。
1.2.準(zhǔn)備
1.2.1.安裝包的組成
Jess提供一個可用于所有支持平臺的單獨的.zip壓縮包。這個單獨的文件壓縮包包含在Windows,UNIX,或Macintosh系統(tǒng)上使用Jess的所有你需要(除了JVM你必須自己安裝)的資源。當(dāng)Jess是解壓后,你應(yīng)該有一個命名為jess71a2 /的目錄。在這個目錄路徑有下列文件和子目錄:
README
快速開始指導(dǎo).
LICENSE
關(guān)于Jess使用的您的權(quán)利信息.
bin
一個包含Windows 批處理文件(jess.bat)和一個UNIX腳本(Jess)的目錄,你可以使用它們啟動Jess命令提示符.
lib
該目錄含有作為一個Java檔案文件的Jess本身。注意,這不是一個“點擊”存檔文件,你不可以通過雙擊它運行Jess。這是要注意的。在這個目錄的jsr94.jar包中又包含了符合JSR - 94 (javax.rules)的API。
docs/
這是一個文檔,以“index.html”為首頁的Jess手冊。.
examples/jess
一個包含使用Jess語言編寫的小程序的目錄.
examples/xml
一個包含使用JessML, Jess's XML規(guī)則語言編寫的小程序的目錄.
eclipse
JessDE, 是Jess集成開發(fā)環(huán)境, 提供支持Eclipse 3.0的插件集。看這里的安裝說明。
src (Optional)
如果這個目錄存在,它包含全部的Jess規(guī)則引擎和開發(fā)環(huán)境的源代碼,包括一個構(gòu)建它的Ant腳本。
1.2.2.命令行界面
Jess有一個交互的命令行界面。分布包括兩個你能運行Jess命令提示符的腳本:其中一個用于Windows,另一個用于UNIX。它們兩個都在bin/ directory目錄下。運行適合你系統(tǒng)的那一個,然后你應(yīng)該看到以下的界面:
C:\Jess71a2 bin\jess.bat
Jess, the Rule Engine for the Java Platform
Copyright (C) 2006 Sandia Corporation
Jess Version Jess71a2 9/5/2006
Jess
這就是Jess的命令。嘗試計算一個前綴數(shù)學(xué)表達(dá)式"(+ 2 2)"。不要忘記那些括號!
Jess (+ 2 2)
4
Jess計算了此函數(shù),并打印結(jié)果。在這份文檔的下一章,我們會發(fā)現(xiàn)Jess規(guī)則語言本身的語法。
通過Jess命令行執(zhí)行Jess代碼編寫的文件,可以使用批處理命令:
Jess (batch "examples/jess/sticks.clp")
Who moves first (Computer: c Human: h)?
在前面的例子應(yīng)注意到,在Jess提示符后鍵入命令,Jess將在下一行響應(yīng)命令。我將在整個這本文檔中遵循本約定。
直接從操作系統(tǒng)提示符執(zhí)行這樣的Jess程序,你可以把程序的名字作為Jess腳本的一個參數(shù),這樣就可以啟動:
C:\Jess71a2 bin\jess.bat examples\jess\sticks.clp
Jess, the Rule Engine for the Java Platform
Copyright (C) 2006 Sandia Corporation
Jess Version Jess71a2 8/28/2006
Who moves first (Computer: c Human: h)?
jess.console類是一個簡單的jess命令行界面的圖形版。你在窗口的底部輸入一個命令,結(jié)果就會出現(xiàn)在滾動窗口之上。試著從Jess71a2路徑下鍵入下面命令:
C:\Jess71a2 java -classpath lib\jess.jar jess.Console
1.2.3.Java程序設(shè)計語言與Jess
要在你的Java程序中把Jess做為庫使用,文件jess.jar(在lib目錄下)必須是以一個標(biāo)準(zhǔn)的擴(kuò)展名安裝在類路徑之下,或者對你的開發(fā)工具配置后能夠識別它。做好這些工作的細(xì)節(jié)是隨系統(tǒng)和環(huán)境而定的,但在設(shè)置一個類路徑時通常涉及修改環(huán)境變量,并且安裝一個標(biāo)準(zhǔn)的擴(kuò)展名,簡單來說就是復(fù)制jess.jar到你的$(JAVA_HOME)/jre/lib/ext路徑下。可查閱Java文檔或介紹Java的文本以了解更多的細(xì)節(jié)。
1.2.4.Jess例子程序
有一些簡單的例子程序(在examples/jess和examples/xml目錄下),您可以用這些程序測試你的Jess是否已經(jīng)安裝正確。這些程序包括fullmab.clp,zebra.clp和wordgame.clp。fullmab.clp是關(guān)于猴子與香蕉問題的經(jīng)典版本。要從命令行運行它,只需要輸入:
C:\Jess71a2 bin\jess examples\jess\fullmab.clp
和要運行的問題,就會在屏幕上輸出結(jié)果。任何Jess代碼的文件都可以以這種方式運行。像使用批處理函數(shù)一樣在命令行給一個Jess文件名就可以運行了。因此,一般你只需要保證文件是以:
Jess (reset)
(run)
結(jié)束或根本沒有規(guī)則將運行。zebra.clp和wordgame.clp程序是兩個典型的例子,它們是用來展示Jess如何處理復(fù)雜情況的程序。這些例子都產(chǎn)生大量的局部模式匹配,因此它們運行非常慢而且使用了大量的內(nèi)存。另外的例子包括sticks.clp (互動游戲)和frame.clp (一個使用jess的java集成能力建立圖形界面的演示)。
XML的例子在單獨的子目錄下,每個子目錄中都包含有運行例子說明的自述文件。
2.Jess開發(fā)環(huán)境
Jess 7包括一個基于Eclipse的開發(fā)環(huán)境。這個開發(fā)環(huán)境有一個編輯器,一個調(diào)試器和一個Rete網(wǎng)絡(luò)視圖。在將來發(fā)布的版本中將包含更多組件(規(guī)則瀏覽器和其它工具)。
2.1.安裝JessDE
Jess開發(fā)環(huán)境(JessDE)是作為一個插件集支持流行的開源的集成開發(fā)環(huán)境Eclipse;該插件支持Eclipse 3.1及其更新版本。應(yīng)該注意的是JessDE僅僅工作在完全的" Eclipse SDK "上——較小的"二進(jìn)制運行平臺"是不能運行的。
安裝JessDE,首先要退出Eclipse,然后從Jess71a2/eclipse解壓縮所有文件到頂層的Eclipse的安裝路徑。確認(rèn)在你的eclipse安裝目錄有一個名為" plugins/gov.sandia.jess_7.0.0 "的目錄存在,然后重新啟動Eclipse。
注意!如果你只是從以前的版本的JessDE更新,你必須在Eclipse的命令行使用"-clean "命令開關(guān),強制更新緩存中有關(guān)JessDE插件的信息。如果你不這樣做,很多的JessDE的選項可能被禁用,安裝后你只需要這樣做一次。
2.1.1.驗證你的安裝
在“Help”菜單下選擇“about Eclipse SDK”。在" about Eclipse SDK "主窗口有一個有Jess標(biāo)志的按鈕。單擊“Plug-in Details”,如果JessDE已安裝妥當(dāng),你將發(fā)現(xiàn)三個或四個Jess相關(guān)插件在列表上——在我的Eclipse中,它們出現(xiàn)在底部。
然后使用“New Project”向?qū)Ы⒁粋€Java工程。在新的工程中創(chuàng)建一個新文件并命名為“hello.clp”。這個文件會在一個Jess的編輯器中打開,這個編輯器有一個帶紅色“J”字的銀色小球的圖標(biāo)。輸入一些Jess代碼,如下:
(printout t "Hello, World" crlf)
你應(yīng)該看到合適的語法被高亮顯示。如果看到,祝賀你!工作一切正常!閱讀更多JessDE其他功能的信息。
2.1.2.更多的細(xì)節(jié)
JessDE編輯器在你的Jess文件中能夠標(biāo)示出語法錯誤和警告。你很可能希望這些標(biāo)記能出現(xiàn)在Eclipse的“Problems”視圖中,盡管在默認(rèn)情況下它們可能沒有顯示出來。安裝完成JessDE后,重新啟動Eclipse,在Problems的視圖,在標(biāo)題欄點擊“Filters”的圖標(biāo),然后選擇標(biāo)著" Jess Problem "(如果沒有被選中的話)多選項。你的Problems視圖應(yīng)該馬上就會顯示Jess錯誤和警告。
要使用Rete網(wǎng)絡(luò)視圖,你需要安裝Eclipse圖形編輯框架(GEF)。你可以從Eclipse工程項目頁面得到GEF,或通過Eclipse的內(nèi)置式更新管理器安裝它。然后打開這一視圖,在“Jess Debugger”組之下Eclipse的“Show view”對話框找到它。那么在Jess編輯窗口中當(dāng)光標(biāo)停在某一內(nèi)部規(guī)則時,Rete網(wǎng)絡(luò)視圖將會為這項規(guī)則顯示出編譯的網(wǎng)絡(luò)。
2.2.使用JessDE
2.2.1.Jess語言編輯器
JessDE編輯器可以編輯“.clp”格式的文件。在默認(rèn)情況下你建立的任何 “.clp”格式的文件都將使用JessDE編輯器打開。沒有單獨Jess的視圖,或是Jess項目類型;我們期望大多數(shù)人都將使用JessDE工具來寫Jess/Java混合應(yīng)用組成的Jess程序,因此JessDE工具將用在Java項目的文件中。在Jess語言代碼中JessDE使用你的Java項目的類路徑以解決Java中類名稱問題——例如,調(diào)用defclass函數(shù)。
編輯器有您期望的一個現(xiàn)代程序編輯器所應(yīng)具有的全部功能。
可定制的語法變色
你可以使用Eclipse全局參數(shù)對話框中的“Jess Editor”表來改變默認(rèn)的顏色。
提供模板,槽和函數(shù)名的幫助內(nèi)容
在許多不同地方使用JessDE編輯器你可引用Eclipse的" Content Assist "功能;JessDE將使輸入Jess代碼變得更容易。在輸入時可以使用快捷鍵Alt-' / '彈出選擇列表清單。
自動修復(fù)代碼的“Quick fix”助手
這個功能默認(rèn)使用Ctrl-1快捷鍵,快速匹配能立即知道怎樣定義未定義的deftemplates,并為現(xiàn)有的deftemplates(如果它們在相同的文件里被定義)增加新的槽。
實時錯誤檢測標(biāo)記和錯誤高亮顯示
當(dāng)你輸入有錯誤和警告時將被高亮顯示
代碼自動格式化
當(dāng)你輸入時代碼自動縮進(jìn)。你可以從"Source"菜單下選擇"Format"命令來格式化一個全部的緩沖區(qū)
使用大綱視圖快速導(dǎo)航
Eclipse大綱視圖列出了所有在緩沖區(qū)中定義的結(jié)構(gòu);你可以點擊其中任何一個就能夠迅速定位到它
圓括號匹配和自動插入
當(dāng)你輸入一個'('或’”’符號,JessDE就會插入匹配的符號。當(dāng)你的光標(biāo)移動到下一個圓括號時,JessDE會顯示與之相匹配的圓括號。
通過懸停獲得Jess函數(shù)和結(jié)構(gòu)在線幫助
快速訪問Jess手冊中每一個函數(shù)和結(jié)構(gòu)類型的描述。
支持deftemplates 和 deffunctions的懸停幫助
如果你將你的滑鼠移動到一個deftemplate或deffunction的名字上,任何代碼處,JessDE都將顯示一個關(guān)于這個模板或函數(shù)信息的"tooltip"。
Jess程序的運行和調(diào)試命令
你可以使用正常Eclipse 的" Run... "菜單或由右擊導(dǎo)航項或在編輯窗口運行或調(diào)試Jess程序。
2.2.2.文件之間的關(guān)聯(lián)
有時候一個*.clp文件依靠其他的*.clp文件中的代碼先被閱讀執(zhí)行。例如,rules.clp 也許需要templates.clp中的定義。沒有這些定義,rules.clp將會出現(xiàn)語法錯誤。為了解決這個問題,你可以使用require*函數(shù)。"require*"讓你清楚的聲明這些關(guān)聯(lián)。
如果一個文件rules.clp依靠在Java中執(zhí)行的Jess命令,你可以僅僅為了這個目標(biāo)創(chuàng)建一個特殊的文件處理這個問題(你也許稱之為ruledepends.clp),這個特殊的文件包括了編輯器中使rule.clp文件能夠正確解析的所有聲明。如果你添加"(require* ruledepends)"到rules.clp中,僅當(dāng)這個外部文件存在的話才會解析,因為它有可能正在開發(fā)中。當(dāng)你部署代碼時,你不需要部署ruledepends.clp,只要rules.clp能夠從Java代碼中取得所需聲明。
"require"機(jī)制代替了JessDE的早期版本中的"Source dependencies"屬性表,"Source dependencies"屬性表已不再被支持。
2.2.3.Rete網(wǎng)絡(luò)視圖
使用JessDE的"Rete Network View"你可以即時看到一個衍生自任何規(guī)則的Rete網(wǎng)的圖形展示。當(dāng)這個視圖是打開時(你可以使用Eclipse中的"Windows | View | Other..."對話框打開它),它會顯示基于編輯器插字符所在規(guī)則的Rete網(wǎng)絡(luò),你可以用這個實時看到修改規(guī)則所對應(yīng)的Rete網(wǎng)絡(luò)變化。圖表的布局方式是遠(yuǎn)勝于你能從Jess視圖命令中得到的----因為這樣沒有重疊和交叉線,而且每一列的高度都可變。
2.2.4.Jess調(diào)試器
JessDE調(diào)試器可以讓你調(diào)試一個在.clp文件中定義的Jess程序。它具有您期望的圖形調(diào)試器所具有的所有功能:你可以暫停和恢復(fù)程序,或以步進(jìn)方式執(zhí)行。當(dāng)程序停止時,執(zhí)行堆棧的內(nèi)容將會顯示出來,這樣你就可以檢查在每個堆棧結(jié)構(gòu)中定義的變量。選擇的堆棧結(jié)構(gòu)也可以導(dǎo)航到被執(zhí)行的源碼處。在編輯器窗口的左手邊緣處,你可以通過右鍵單擊某一規(guī)則在任何.clp文件中設(shè)置(或清除)斷點。斷點僅能設(shè)在函數(shù)(內(nèi)置或用戶自定義)中,所以你不能在defrule 或者deftemplate結(jié)構(gòu)中打斷程序執(zhí)行。然而,你能夠在一個調(diào)用規(guī)則 的左邊或右手邊的函數(shù)中暫停。
3.Jess 語言基礎(chǔ)
大多數(shù)時間你是在使用Jess語言編寫Jess規(guī)則。如果你從來沒有使用過Lisp,第一次使用Jess規(guī)則語言也許看起來就有點奇怪了,但它并不需要太長時間來學(xué)習(xí)。回報也是豐厚的,你將使用非常少的代碼表達(dá)復(fù)雜的邏輯關(guān)系。
在這一章,我們將看到Jess語言的基礎(chǔ)語法。在后面的章節(jié)中,我們再來學(xué)習(xí)怎樣定義像事實與規(guī)則這樣的高級概念,但現(xiàn)在我們將學(xué)習(xí)最基礎(chǔ)的。
在本語言指導(dǎo)中,我將使用一個非正規(guī)的符號來描述語法。在 中的基本串是必須提供的數(shù)據(jù)類型,在方括號中([])的內(nèi)容是可選的,以 + 結(jié)束表示可以出現(xiàn)一次或多次,以 * 結(jié)束表示可以出現(xiàn)零次或更多。一般來說, Jess的輸入格式是自由的。換行不具有特殊的含義,僅被處理為空格,而異常將被標(biāo)識。
3.1.符號
符號是Jess語言的一個核心概念。符號是非常類似于其他語言中的標(biāo)識符。Jess符號包括字母,數(shù)字和下面的標(biāo)點符號:$*=+/_?#.。一個符號不能以數(shù)字開始,可以以一些特殊的標(biāo)點符號開始(這些字符作為操作員當(dāng)出現(xiàn)在符號開始時有著特殊的意義)
Jess符號對于大小寫敏感。foo,F(xiàn)OO,和Foo是不同的符號。
最佳的符號是由字母,數(shù)字,下劃線和破折號組成。破折號是傳統(tǒng)的分隔符。如下所示為合法的符號:
foo first-value contestant#1 _abc
Jess中有三種特殊的符號。零,和java中的空值有點類似;真和假是Jess中的布爾類型的值。
3.2.數(shù)字
Jess分別使用Java函數(shù)parseInt(java.lang.String), parseLong(java.lang.String)和parseDouble(java.lang.String)來解析整型,長整型和浮點型數(shù)字。參考本文檔中關(guān)于這些方法精確的語法描述。如下為合法的數(shù)字:
3 4. 5.643 5654L 6.0E4 1D
3.3.字符串
Jess中的字符串是用雙引呈來標(biāo)識的(").。反斜線能夠區(qū)分嵌入的引號。注意Jess的字符串和Java的字符串在一些重要的地方是不一樣的。首先,不會認(rèn)識轉(zhuǎn)義序列。比如說你不能用一個"\n"字符串來換行。另一方面,真正的換行可以通過雙引號中的字符串來實現(xiàn)。他們是字符串的一部分。如下為合法的字符串:
"foo" "Hello, World" "\"Nonsense,\" he said firmly." "Hello,
There"
最后一個字符串相當(dāng)于Java中的字符串"Hello,\nThere".。
3.4.列表
Jess中的另一個基礎(chǔ)語法元素是列表。列表是由圓括號和空,符號,數(shù)字,字符串和其他列表組成。如下所示為合法的列表:
(+ 3 2) (a b c) ("Hello, World") () (deftemplate foo (slot bar))
Jess中列表的第一個元素(Lisp中稱為列表的car)通常被稱列表的頭。
3.5.注釋
Jess支持兩種類型的程序注釋。Lisp風(fēng)格的行注釋和C風(fēng)格的塊注釋。行注釋是以分號開頭,延伸到文本中本行的最后。這里有一個行注釋的例子:
; This is a list
(a b c)
塊注釋就和他們在C語言中的用法一樣:他們以兩個特征符"/*"開始,以"*/"結(jié)束。塊注釋不能嵌套。
/*
Here is an example of a list (commented out):
(a b c)
*/
注釋可以在Jess程序的任何地方出現(xiàn),包括模板和規(guī)則的結(jié)構(gòu)里。
3.6.函數(shù)調(diào)用
和Lisp一樣,Jess中的所有代碼(控制結(jié)構(gòu),分配,程序調(diào)用)都是以函數(shù)調(diào)用的方式進(jìn)行的。沒有操作器,一切都是函數(shù)調(diào)用。然而,有些函數(shù)的名字使它們看起來像是Java操作器,在這種情況下,它們就和它們的Java 副本工作的非常相似。
Jess中的函數(shù)調(diào)用可以理解為簡單的列表。函數(shù)調(diào)用采用前綴表示,如果一個列表的頭部是一個已經(jīng)存在的函數(shù)的符號,那么它就可以稱為是一個函數(shù)調(diào)用。舉例來說,用+函數(shù)來算2和3相加的表達(dá)式應(yīng)該寫為(+ 2 3)。在計算時,這個表達(dá)式的結(jié)果是數(shù)字5(不是一個僅包含數(shù)字5的列表!)。通常來說,在合適的時候表達(dá)式都被看作是這樣并通過上下文求值。你可以在Jess提示符后鍵入表達(dá)式。Jess計算表達(dá)式并打印出結(jié)果:
Jess (+ 2 3)
5
Jess (+ (+ 2 3) (* 3 3))
14
注意你可以嵌套調(diào)用函數(shù);外部函數(shù)是形成內(nèi)部函數(shù)調(diào)用計算的因素。
Jess自身帶有大量的內(nèi)置函數(shù),它們可以用來做一切事情,如數(shù)學(xué)計算,程序控制和字符處理,讓你能夠使用Java的API函數(shù)。當(dāng)然你也可以在Jess語言或者是Java語言中定義自己的函數(shù)。
其中一個最經(jīng)常用的函數(shù)是printout,它是用來發(fā)送文本到Jess的標(biāo)準(zhǔn)輸出窗口,或者是輸出到一個文件中。完善的解釋你必須等待,但是現(xiàn)在,你所要了解的都包含在下面這個例子中:
Jess (printout t "The answer is " 42 "!" crlf)
The answer is 42!
另一個常用的函數(shù)是batch,它是用來計算一個包含Jess代碼文件的。要運行Jess源文件examples/jess/hello.clp,你可以鍵入:
ess (batch "examples/jess/hello.clp")
Hello, world!
Jess自帶的其他的所有函數(shù)的詳細(xì)說明都在Jess function guide.。
3.7.變量
Jess中程序變量是以問號開始的標(biāo)識符。問號也是變量名的一部分。名字可以包括字母,數(shù)字,破折號,下劃線,分號和星號的任何組合。
一個變量可以看作是一個簡單的符號,數(shù)字,字符串或者是一個列表。你可以用bind函數(shù)來為變量指定一個值。
Jess (bind ?x "The value")
"The value"
變量在第一次使用前不需要聲明(全局變量除外)。
想在Jess提示符后看到變量 的值,你只需要鍵入變量的名字:
Jess (bind ?a 123)
123
Jess ?a
123
3.7.1.全局變量(默認(rèn)全局)
你在Jess提示符后或者任何Jess語言程序頂層創(chuàng)建的所有變量, 當(dāng)重置命令運行的時候都將被清除。這樣就使它們稍嫌短暫,對于暫時性變量它們很好用,在標(biāo)準(zhǔn)理解的前提下不是永久全局變量。要創(chuàng)建不被reset銷毀的全局變量,你可以用全局結(jié)構(gòu):
(defglobal [?global-name = value]+)
全局變量的名稱必須是以星號開頭以星號結(jié)束。合法的全局變量如下:
?*a* ?*all-values* ?*counter*
當(dāng)全局變量建立以后,它會被初始化賦值。當(dāng)reset命令隨后執(zhí)行的時候,這個變量可能會用相同的值重新設(shè)置,當(dāng)然這取決于reset-globals的屬性設(shè)置。有一個稱為set-reset-globals的函數(shù)可以用來設(shè)置這個屬性。如例所示:
Jess (defglobal ?*x* = 3)
TRUE
Jess ?*x*
3
Jess (bind ?*x* 4)
4
Jess ?*x*
4
Jess (reset)
TRUE
Jess ?*x*
3
Jess (bind ?*x* 4)
4
Jess (set-reset-globals nil)
FALSE
Jess (reset)
TRUE
Jess ?*x*
4
您可以閱讀Jess function guide.中有關(guān)set-reset-globals和相關(guān)的get-reset-globals函數(shù)的信息。
3.8.控制流
Java中控制流(分支和循環(huán),異常處理等)都是由一些特殊的語法和關(guān)鍵字如if,while,for,和try等來引導(dǎo)的。在Jess中,就如我們前面說過的,所有的一切都是函數(shù)調(diào)用,控制流也不例外。因此,Jess包含有那些名為if,while,for,和try以及foreach等函數(shù)。這些函數(shù)就和Java體系中相同名稱的結(jié)構(gòu)工作起來類似。
3.8.1.簡單循環(huán)
例如,如下 是Jess中的一個“while”循環(huán)示例:
Jess (bind ?i 3)
3
Jess (while ( ?i 0)
(printout t ?i crlf)
(-- ?i))
3
2
1
FALSE
While循環(huán)的第一個參數(shù)是一個布爾表達(dá)式。While函數(shù)計算它的第一個參數(shù),如果它為真,就計算它所有其他的參數(shù)。它一直進(jìn)行這個過程直到它的線一個參數(shù)值為假。一個while循環(huán)總是返回FALSE.
Jess中內(nèi)置有一些其他的循環(huán)函數(shù)。詳情參看Jess function index.中關(guān)于for和foreach的有關(guān)描述。Jess中有一個break函數(shù),可以有來跳出循環(huán),也可以很早的從一個規(guī)則的右手邊返回
//原文地址
MyApps是天翎自主研發(fā)的第四代可視化低代碼快速開發(fā)平臺,用戶通過拖拉拽配置式操作,即可快速構(gòu)建出能同時在PC和移動端運行的各類管理系統(tǒng),包括流程審批系統(tǒng)。是一款可基于java的工作流引擎能在頁面中動態(tài)的實現(xiàn)流程自定義的低代碼開發(fā)平臺。
當(dāng)前題目:java流程引擎代碼 流程引擎開發(fā)
分享路徑:http://chinadenli.net/article14/hghsge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站改版、企業(yè)建站、做網(wǎng)站、品牌網(wǎng)站設(shè)計、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)