專利名稱:分布式可執(zhí)行過(guò)程的產(chǎn)生的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式過(guò)程的產(chǎn)生,尤其涉及以高級(jí)表示法形式、導(dǎo)致產(chǎn)生分布式異構(gòu)環(huán)境下操作的特定代碼的過(guò)程的描述。因此,本發(fā)明尤其適合于解決那些與企業(yè)的策劃、實(shí)現(xiàn)、運(yùn)作和管理以及企業(yè)內(nèi)部業(yè)務(wù)邏輯和企業(yè)外部業(yè)務(wù)服務(wù)邏輯有關(guān)的問(wèn)題,以確保企業(yè)通過(guò)異構(gòu)分布式的一組計(jì)算裝置獲得最大的商業(yè)利益。
背景技術(shù):
一直以來(lái),人們?cè)噲D使業(yè)務(wù)邏輯的實(shí)現(xiàn)和運(yùn)作自動(dòng)化。這些嘗試常常基于稱為“規(guī)則”的特殊類別的聲明書的使用。某些基于常規(guī)規(guī)則的業(yè)務(wù)邏輯系統(tǒng)利用了一些無(wú)需告訴方法就能根據(jù)數(shù)據(jù)推斷出事實(shí)的特殊子類的規(guī)則。這些“傳統(tǒng)的”商業(yè)規(guī)則在文獻(xiàn)中被稱為“演繹規(guī)則”或“推理規(guī)則”,其特征是以數(shù)據(jù)為中心。在規(guī)則技術(shù)中,它們具有統(tǒng)治力。
演繹規(guī)則技術(shù)已使用了好多年,并且基于采用商業(yè)上有名的RETE算法(例如,參見(jiàn)http//www.pst.com/rete.htm)的推理技術(shù)。這種技術(shù)具有兩個(gè)基本要求用于解釋和執(zhí)行基于推理的規(guī)則的規(guī)則引擎;和在知識(shí)獲得和規(guī)則設(shè)計(jì)中的專業(yè)技能。
這些要求的后果在于,通常需要重量級(jí)處理器、所需的大量數(shù)據(jù)量和處理能力。此外,還缺乏用于定義規(guī)則的直觀界面。這些因素其結(jié)果限制了演繹規(guī)則的市場(chǎng)。
近年來(lái),人們對(duì)稱為“反應(yīng)規(guī)則”的其他子類的規(guī)則越來(lái)越感興趣。反應(yīng)規(guī)則是與傳統(tǒng)業(yè)務(wù)規(guī)則截然不同的一個(gè)規(guī)則子類。這些規(guī)則其特征是以事件為中心,并且從監(jiān)測(cè)事件和可根據(jù)一個(gè)或多個(gè)事件被調(diào)用的意義上講是具有活性的。
在下列論述中術(shù)語(yǔ)“計(jì)算實(shí)體”和“過(guò)程”用來(lái)表示串行化計(jì)算的形式,這種串行化計(jì)算被限定在某一范圍內(nèi),在該范圍內(nèi)可以恰當(dāng)?shù)囟x輸入和輸出,并通過(guò)消息傳送實(shí)現(xiàn)輸入和輸出;術(shù)語(yǔ)“消息傳送”與“事件的發(fā)送和接收”的概念同義;而“高級(jí)表示法”是描述一個(gè)或多個(gè)過(guò)程的外部和內(nèi)部行為的任意說(shuō)明性表示法。外部和內(nèi)部行為的描述分別是可見(jiàn)行為的非圖靈完全描述和不可見(jiàn)行為的圖靈完全描述。最后,術(shù)語(yǔ)“特定代碼”適用于為在一個(gè)或一些特定平臺(tái)上執(zhí)行所編譯的串行化計(jì)算的描述。
業(yè)務(wù)過(guò)程是一種規(guī)定或約束企業(yè)的某個(gè)方面的計(jì)算實(shí)體。它強(qiáng)加影響企業(yè)的行為的結(jié)構(gòu)或維護(hù)影響企業(yè)的行為的控制。在這里提出的環(huán)境條件下,“業(yè)務(wù)過(guò)程”的描述不僅包括傳統(tǒng)業(yè)務(wù)邏輯描述(演繹規(guī)則)和反應(yīng)規(guī)則,而且包括諸如UML模型表示法、業(yè)務(wù)標(biāo)記語(yǔ)言和專有表示法等計(jì)算實(shí)體。在本發(fā)明中,其范圍超出了這種業(yè)務(wù)應(yīng)用層,從而包括中間件、網(wǎng)絡(luò)及其他操作層。
業(yè)務(wù)過(guò)程可以是規(guī)定按某些量購(gòu)買產(chǎn)品的折扣的聲明換言之,對(duì)立即要傳遞的信息進(jìn)行操作的過(guò)程。業(yè)務(wù)過(guò)程的另一個(gè)例子是,交易量大于某一預(yù)定限度并且計(jì)算必須重新指向風(fēng)險(xiǎn)分析過(guò)程(即負(fù)責(zé)風(fēng)險(xiǎn)分析的計(jì)算實(shí)體)的情況。盡管以上給出的這些例子是一些在業(yè)務(wù)應(yīng)用層操作的業(yè)務(wù)過(guò)程,然而,還有一些例子,它們利用業(yè)務(wù)過(guò)程在一些不同的應(yīng)用層實(shí)現(xiàn)業(yè)務(wù)交易或業(yè)務(wù)交易協(xié)作。如上所述的業(yè)務(wù)過(guò)程的應(yīng)用超出了業(yè)務(wù)應(yīng)用層的實(shí)現(xiàn),其中一個(gè)例子是規(guī)定了網(wǎng)絡(luò)單元怎樣才能對(duì)某一例外情況作出響應(yīng)的業(yè)務(wù)過(guò)程也就是說(shuō),這里所述的業(yè)務(wù)過(guò)程覆蓋了企業(yè)的業(yè)務(wù)邏輯的各個(gè)方面,而不論該業(yè)務(wù)是什么業(yè)務(wù)。
使用業(yè)務(wù)過(guò)程的主要驅(qū)動(dòng)之一是以一些計(jì)算實(shí)體及其交互作用表示業(yè)務(wù)邏輯,其方式容易使用和理解,這種交互作用通過(guò)這些計(jì)算實(shí)體之間的輸入和輸出來(lái)進(jìn)行。這使得可以更有效地開(kāi)發(fā)業(yè)務(wù)邏輯并縮短推廣應(yīng)用新的和修改的業(yè)務(wù)邏輯的上市時(shí)間。另一種驅(qū)動(dòng)是趨向高度事件驅(qū)動(dòng)的業(yè)務(wù)的動(dòng)作。在當(dāng)今的因特網(wǎng)業(yè)務(wù)環(huán)境下,B2B、B2E、B2C以及所有相關(guān)的處理模型都是事件驅(qū)動(dòng)的。相應(yīng)地,這些系統(tǒng)的業(yè)務(wù)邏輯的有效部分可以表示成反應(yīng)行為,其中的反應(yīng)基于業(yè)務(wù)過(guò)程之間的交互作用。
業(yè)務(wù)邏輯作為應(yīng)用或在應(yīng)用服務(wù)器中的當(dāng)前實(shí)現(xiàn)甚至商業(yè)規(guī)則引擎都具有以服務(wù)器為中心的物理布局。甚至那些試圖以ECA規(guī)則形式實(shí)現(xiàn)反應(yīng)規(guī)則的眾所周知的系統(tǒng)也都具有引擎驅(qū)動(dòng)的體系結(jié)構(gòu)。因此,常規(guī)業(yè)務(wù)邏輯系統(tǒng)沒(méi)有實(shí)現(xiàn)業(yè)務(wù)過(guò)程之間的基本交互作用。所得到的業(yè)務(wù)邏輯系統(tǒng)是集中式的,并且需要大量的數(shù)據(jù)和處理能力。這些系統(tǒng)難以配置到分布式異構(gòu)和嵌入式環(huán)境中。它們要么配置到基于服務(wù)器或基于引擎的模型,要么將其平臺(tái)支持局限于特殊的編程環(huán)境(例如具有Java企業(yè)版本(J2EE)和具有Java標(biāo)準(zhǔn)版本(J2SE)的Java環(huán)境)。在后一種情況下,不考慮目標(biāo)環(huán)境的能力。兩種配置都不支持分布式異構(gòu)環(huán)境。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于將業(yè)務(wù)過(guò)程變換成適合于在目標(biāo)環(huán)境下執(zhí)行的可執(zhí)行子程序的方法,該方法包括如下步驟提供業(yè)務(wù)過(guò)程定義;提供與目標(biāo)環(huán)境相應(yīng)的發(fā)生器描述符;并根據(jù)發(fā)生器描述符從業(yè)務(wù)過(guò)程定義產(chǎn)生可執(zhí)行子程序。
這種方法的一個(gè)好處在于,在所調(diào)用程序與引擎或服務(wù)器無(wú)關(guān)的環(huán)境條件下,可以方便地調(diào)用業(yè)務(wù)過(guò)程。
目前,業(yè)務(wù)邏輯系統(tǒng)的實(shí)現(xiàn)方式是基于引擎的,并可以使用推理型商業(yè)規(guī)則(即演繹規(guī)則),或者可以使用其中配置了目標(biāo)代碼的應(yīng)用服務(wù)器。這意味著,有一種中心系統(tǒng),它需要大量的數(shù)據(jù)和處理能力。這些系統(tǒng)難以配置到分布式異構(gòu)和嵌入式環(huán)境中。本發(fā)明通過(guò)將業(yè)務(wù)過(guò)程變換成自動(dòng)可執(zhí)行代碼的方式解決了這些問(wèn)題,在分布式異構(gòu)和嵌入式環(huán)境下,通過(guò)明確捕獲業(yè)務(wù)過(guò)程的交互式消息傳送行為及其邏輯,容易配置和調(diào)用這種代碼。
在本發(fā)明中,術(shù)語(yǔ)“目標(biāo)環(huán)境”包括關(guān)于目標(biāo)平臺(tái)上可用的體系結(jié)構(gòu)和服務(wù)(硬件處理器和操作系統(tǒng)的組合)、目標(biāo)平臺(tái)的優(yōu)選本機(jī)語(yǔ)言以及目標(biāo)平臺(tái)上可用的運(yùn)行期環(huán)境條件的能力的信息。在提供運(yùn)行期環(huán)境條件以支持業(yè)務(wù)過(guò)程執(zhí)行的標(biāo)準(zhǔn)環(huán)境的情況下,可以減少必須產(chǎn)生的源代碼量。運(yùn)行期環(huán)境條件包括例如下列一個(gè)或多個(gè)可用編程環(huán)境,可用事件系統(tǒng)以及對(duì)本地文件和服務(wù)的可訪問(wèn)性,和目標(biāo)平臺(tái)中的其他相關(guān)性(諸如第三方組件或遺留系統(tǒng)等相關(guān)性)。事件系統(tǒng)是一種以某種形式調(diào)度事件的系統(tǒng),例如,Java消息服務(wù),Java收聽(tīng)服務(wù),或Windows事件調(diào)度器、X Windows等。
業(yè)務(wù)過(guò)程定義可以按反應(yīng)規(guī)則定義的形式來(lái)提供。或者,業(yè)務(wù)過(guò)程定義可以按內(nèi)部規(guī)范形式來(lái)提供。當(dāng)業(yè)務(wù)過(guò)程定義不按內(nèi)部規(guī)范的形式來(lái)提供時(shí),產(chǎn)生可執(zhí)行子程序的步驟可以包括將業(yè)務(wù)過(guò)程定義解析為內(nèi)部規(guī)范形式。內(nèi)部規(guī)范形式最好是反應(yīng)智能框架標(biāo)記語(yǔ)言(RIFML)。
產(chǎn)生可執(zhí)行子程序的步驟最好包括利用一個(gè)或多個(gè)變換規(guī)則,結(jié)合一個(gè)或多個(gè)描述目標(biāo)環(huán)境的發(fā)生器描述符,產(chǎn)生可執(zhí)行子程序的源代碼。
這種變換通常是多級(jí)過(guò)程。
產(chǎn)生可執(zhí)行子程序的步驟還可以包括調(diào)用一個(gè)或多個(gè)編譯器,以根據(jù)源代碼產(chǎn)生業(yè)務(wù)過(guò)程的可執(zhí)行形式。
以Java為例,表示法的內(nèi)部形式是所有目標(biāo)所共有的,Java源在代碼產(chǎn)生步驟中產(chǎn)生,而后續(xù)可執(zhí)行形式是Java類文件。
產(chǎn)生步驟中所產(chǎn)生的子程序最好根據(jù)運(yùn)行期環(huán)境條件產(chǎn)生,從而支持業(yè)務(wù)過(guò)程執(zhí)行的標(biāo)準(zhǔn)環(huán)境。運(yùn)行期環(huán)境條件可以包括可用編程環(huán)境數(shù)據(jù);可用事件系統(tǒng)數(shù)據(jù);關(guān)于對(duì)本地文件和服務(wù)的可訪問(wèn)性的數(shù)據(jù);和涉及目標(biāo)平臺(tái)中的其他相關(guān)性的數(shù)據(jù)。術(shù)語(yǔ)“事件系統(tǒng)”表示一種以預(yù)定形式調(diào)度事件的系統(tǒng),該系統(tǒng)可選自這樣一個(gè)集合,該集合包括Java消息服務(wù),Java收聽(tīng)服務(wù),Windows事件調(diào)度器,和XWindows消息傳送。
發(fā)生器描述符最好包括這樣的數(shù)據(jù),該數(shù)據(jù)選自下列一個(gè)或多個(gè)可用編程環(huán)境列表;可用事件模型列表;表示在目標(biāo)環(huán)境中使用的硬件的處理器數(shù)據(jù);表示在目標(biāo)環(huán)境中使用的操作系統(tǒng)的類型的操作系統(tǒng)數(shù)據(jù);和相關(guān)性的列表。
在編程環(huán)境基于Java[RTM]的情況下,將指定目標(biāo)平臺(tái)上Java的版本,即J2EE、J2SE、J2ME或RTJS。
所提供的發(fā)生器描述符可以是在業(yè)務(wù)過(guò)程定義時(shí)的用戶輸入。在這種情況下,用戶輸入的發(fā)生器描述符可以由熟知目標(biāo)平臺(tái)的詳細(xì)情況的用戶輸入。
在一個(gè)優(yōu)選實(shí)施例中,提供發(fā)生器描述符的步驟包括為共同出現(xiàn)的目標(biāo)環(huán)境配置提供一組共同的發(fā)生器描述符。
或者,發(fā)生器描述符可以被推理出。發(fā)生器描述符可以至少部分地根據(jù)下列一個(gè)或多個(gè)來(lái)推理業(yè)務(wù)過(guò)程定義和運(yùn)行期環(huán)境條件。
最好,該方法還包括將業(yè)務(wù)過(guò)程定義庫(kù)保留在過(guò)程存儲(chǔ)器中的步驟。業(yè)務(wù)過(guò)程定義可以按內(nèi)部規(guī)范格式來(lái)保存。另一方面,業(yè)務(wù)過(guò)程定義可以由用戶通過(guò)訪問(wèn)過(guò)程存儲(chǔ)器的用戶界面來(lái)提供。在后一種情況下,產(chǎn)生可執(zhí)行子程序的步驟包括調(diào)用業(yè)務(wù)過(guò)程變換組件,以根據(jù)源代碼將用戶定義的業(yè)務(wù)過(guò)程定義變換成業(yè)務(wù)過(guò)程的可執(zhí)行形式。
產(chǎn)生可執(zhí)行子程序的步驟最好包括通過(guò)網(wǎng)絡(luò)將可執(zhí)行業(yè)務(wù)過(guò)程配置到預(yù)期目標(biāo)環(huán)境中。于是,可以為網(wǎng)絡(luò)上出現(xiàn)的每一目標(biāo)環(huán)境產(chǎn)生可執(zhí)行業(yè)務(wù)過(guò)程,并將其配置在網(wǎng)絡(luò)上的多個(gè)不同位置,這樣,產(chǎn)生簡(jiǎn)化的一組可執(zhí)行業(yè)務(wù)過(guò)程,以傳遞到并配置在網(wǎng)絡(luò)內(nèi)的各個(gè)不同位置。
根據(jù)本發(fā)明的另一方面,提供了一種根據(jù)業(yè)務(wù)過(guò)程定義和目標(biāo)環(huán)境的發(fā)生器描述符將業(yè)務(wù)過(guò)程變換成可執(zhí)行子程序的系統(tǒng),其中,該系統(tǒng)包括一個(gè)或多個(gè)計(jì)算機(jī)應(yīng)用,這些應(yīng)用提供輸入業(yè)務(wù)過(guò)程定義的界面并根據(jù)發(fā)生器描述符將一個(gè)或多個(gè)業(yè)務(wù)過(guò)程定義變換成用于在目標(biāo)環(huán)境內(nèi)執(zhí)行的多個(gè)子程序。
根據(jù)本發(fā)明的又一方面,提供了一種包括計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)程序產(chǎn)品,這種代碼可根據(jù)一個(gè)或多個(gè)發(fā)生器描述符將業(yè)務(wù)過(guò)程定義變換成一個(gè)或多個(gè)可執(zhí)行子程序,所述發(fā)生器描述符每個(gè)都與一個(gè)目標(biāo)環(huán)境相應(yīng)。
因此,本發(fā)明提供了一種用于將業(yè)務(wù)過(guò)程變換成適合于在目標(biāo)環(huán)境下最好在分布式異構(gòu)目標(biāo)環(huán)境下執(zhí)行的可執(zhí)行子程序的方法。業(yè)務(wù)過(guò)程定義可以按內(nèi)部規(guī)范形式來(lái)提供,或者可以分解成一系列表示法的任意一種的規(guī)范形式。業(yè)務(wù)過(guò)程定義可以按規(guī)范格式來(lái)保存。通過(guò)根據(jù)與目標(biāo)環(huán)境相應(yīng)的發(fā)生器描述符從業(yè)務(wù)過(guò)程定義產(chǎn)生可執(zhí)行子程序,可以直接在目標(biāo)環(huán)境中執(zhí)行該可執(zhí)行子程序。該方法提供了一種開(kāi)發(fā)時(shí)間環(huán)境,其中,業(yè)務(wù)過(guò)程可以被設(shè)計(jì)、修改、保存在庫(kù)中,并可以變換成直接可執(zhí)行子程序。該方法使得可以在所調(diào)用程序與引擎或服務(wù)器無(wú)關(guān)的環(huán)境條件下調(diào)用業(yè)務(wù)過(guò)程。
下面,參照附圖詳述本發(fā)明的一些例子,其中圖1示出了系統(tǒng)級(jí)操作的高級(jí)模式;圖2示出了根據(jù)本發(fā)明的業(yè)務(wù)過(guò)程變換過(guò)程;和圖3示出了可執(zhí)行業(yè)務(wù)過(guò)程的特定網(wǎng)絡(luò)分布的一個(gè)例子。
具體實(shí)施例方式
本發(fā)明提供了我們?nèi)绾握{(diào)用反應(yīng)智能框架(RIF)。本發(fā)明提供了一種開(kāi)發(fā)時(shí)間環(huán)境,其中,業(yè)務(wù)過(guò)程可以被設(shè)計(jì)、修改、保存在庫(kù)中,并可以變換成直接可執(zhí)行子程序。這些子程序可以通過(guò)各種手段來(lái)調(diào)用。這些業(yè)務(wù)過(guò)程按規(guī)范擴(kuò)展標(biāo)記語(yǔ)言(XML)格式來(lái)保存。
有一些有名的用于表示業(yè)務(wù)過(guò)程的表示法,例子包括用于構(gòu)造UML模型的表示法;專有表示法(例如,AMIT的情形標(biāo)記語(yǔ)言);業(yè)務(wù)過(guò)程標(biāo)記語(yǔ)言(例如,BPML、BPEL4WS和BPSS);和商業(yè)規(guī)則(例如,RuleML中的事件條件作用(ECA)規(guī)則)。
使用綜合開(kāi)發(fā)環(huán)境(如Rationale Rose)的程序員利用UML(通用建模語(yǔ)言)表示法來(lái)創(chuàng)建和保存它們的模型。這種表示法的一個(gè)例子X(jué)MI允許程序員根據(jù)作為XML文檔所保存的模型來(lái)創(chuàng)建應(yīng)用。
專有表示法(例如,AMIT的情形標(biāo)記語(yǔ)言)用來(lái)表示監(jiān)測(cè)數(shù)據(jù)庫(kù)中的事件流及變化的復(fù)雜情形。
業(yè)務(wù)過(guò)程標(biāo)記語(yǔ)言(例如,BPML、BPEL4WS和BPSS)可用來(lái)以類似于工作流程的方式說(shuō)明性地將業(yè)務(wù)過(guò)程表示為業(yè)務(wù)過(guò)程的編排或安排。
商業(yè)規(guī)則(例如,RuleML中的事件條件作用(ECA)規(guī)則)已被用來(lái)提供監(jiān)測(cè)數(shù)據(jù)庫(kù)中的事件流及變化的基于標(biāo)準(zhǔn)的描述,并允許規(guī)則交換可以在異構(gòu)的但遵從標(biāo)準(zhǔn)的業(yè)務(wù)規(guī)則環(huán)境中發(fā)生。
下面,不失一般性,我們將以ECA規(guī)則表示法為例。在這種表示法中,業(yè)務(wù)過(guò)程表示為事件定義,該定義把包含過(guò)程將要處理的這一事件或一些事件描述為輸入;條件定義,該定義描述了將要運(yùn)用的測(cè)試;和一個(gè)或多個(gè)作用定義,該定義描述了這一過(guò)程的可能的作用并可能包含這一過(guò)程執(zhí)行的輸出。事件定義提供了含有支持時(shí)序事件和事件相關(guān)性的事件代數(shù)。條件定義可以對(duì)事件數(shù)據(jù)、本地?cái)?shù)據(jù)或時(shí)間相關(guān)事件起作用。
業(yè)務(wù)過(guò)程可以通過(guò)諸如API的界面來(lái)定義和操作。這種界面可以包含用戶界面,由此用戶可以輸入描述基礎(chǔ)業(yè)務(wù)邏輯的數(shù)據(jù)。或者,該界面可以包含饋送界面,通過(guò)它可以傳送預(yù)定業(yè)務(wù)邏輯。
利用一種為目標(biāo)平臺(tái)和環(huán)境選擇適當(dāng)編碼語(yǔ)言的發(fā)生器,將業(yè)務(wù)過(guò)程變換成可執(zhí)行代碼。優(yōu)選的語(yǔ)言是Java。Java語(yǔ)言提供了廣泛支持從Java企業(yè)版本(J2EE)的服務(wù)器環(huán)境、具有Java標(biāo)準(zhǔn)版本(J2SE)的工作站環(huán)境、通過(guò)Java移動(dòng)版本(J2ME)的移動(dòng)環(huán)境到具有實(shí)時(shí)Java規(guī)范(RTJS)的嵌入式環(huán)境。其他可能的語(yǔ)言還包括C#、C以及符合公用語(yǔ)言運(yùn)行期(CLR)(其中應(yīng)用或平臺(tái)需要這種支持)的語(yǔ)言。
如圖1和2中所示,業(yè)務(wù)過(guò)程定義由定義業(yè)務(wù)過(guò)程的用戶通過(guò)用戶界面(UI)1來(lái)創(chuàng)建,或者通過(guò)導(dǎo)入其他任何表示法或上述表示法10的類型(例如BPEL、BPML、XMI、ECA等)來(lái)創(chuàng)建。如果業(yè)務(wù)過(guò)程以另一表示法10來(lái)定義,并因此使用了過(guò)程界面1a,那么,后續(xù)變換從原表示法轉(zhuǎn)到規(guī)范形式(2a)。過(guò)程界面1a是應(yīng)用編程界面(API),該界面使得其他表示法10可通過(guò)調(diào)用使用該應(yīng)用編程界面的應(yīng)用被捕獲,并將該API傳送到變換過(guò)程2a。不管創(chuàng)建業(yè)務(wù)過(guò)程的路由如何,系統(tǒng)都將業(yè)務(wù)過(guò)程庫(kù)保留2在過(guò)程存儲(chǔ)器3中。這些業(yè)務(wù)過(guò)程按規(guī)范形式保存為XML文檔。一個(gè)規(guī)范形式體現(xiàn)為RIFML,RIFML是一種用于過(guò)程編碼的專有標(biāo)記語(yǔ)言。不失一般性,提供了這種實(shí)施方式。業(yè)務(wù)過(guò)程變換組件4將業(yè)務(wù)過(guò)程從規(guī)范形式變換成可執(zhí)行代碼7。該變換可以是多級(jí)過(guò)程。業(yè)務(wù)過(guò)程定義從過(guò)程存儲(chǔ)器3中讀出,并利用一個(gè)或多個(gè)發(fā)生器描述符5和一個(gè)或多個(gè)變換規(guī)則6,產(chǎn)生用于可執(zhí)行子程序的源代碼30。所使用的發(fā)生器描述符5可以由用戶專門從用戶界面1所給出的可用發(fā)生器描述符列表中選出,或者自動(dòng)從預(yù)定列表中選出。這些發(fā)生器描述符和預(yù)定列表由系統(tǒng)管理員利用單獨(dú)的用戶界面40或利用發(fā)生器描述符界面(是一種應(yīng)用編碼界面)40a來(lái)規(guī)定。然后,調(diào)用該源的適當(dāng)編譯器31,以產(chǎn)生該業(yè)務(wù)過(guò)程的可執(zhí)行形式7。
如前面所提到,發(fā)生器描述符描述了目標(biāo)平臺(tái)的特性。它可以包括與下列一個(gè)或多個(gè)有關(guān)的數(shù)據(jù)可用編程環(huán)境列表和優(yōu)選編程環(huán)境,硬件處理器和操作系統(tǒng),以及相關(guān)性的列表。在Java的情況下,將指定目標(biāo)平臺(tái)上Java的版本,即J2EE、J2SE、J2ME或RTJS。
提供運(yùn)行期環(huán)境條件以支持業(yè)務(wù)過(guò)程執(zhí)行的標(biāo)準(zhǔn)環(huán)境,從而最大限度地減少或至少減少必須產(chǎn)生的源代碼量。然后,將這些可執(zhí)行業(yè)務(wù)過(guò)程通過(guò)網(wǎng)絡(luò)9配置8到所要求的目標(biāo)平臺(tái)中。在一種優(yōu)選實(shí)現(xiàn)方式中,這些平臺(tái)鑒于其廣泛的支持和可分布性質(zhì),因此可以是支持Java或CLR的任何平臺(tái)。
圖1中,有5種示例的目標(biāo)環(huán)境●Java企業(yè)版本20,在這種環(huán)境下,業(yè)務(wù)過(guò)程可以通過(guò)web(萬(wàn)維網(wǎng))瀏覽器中執(zhí)行的Applet(小應(yīng)用程序)、應(yīng)用服務(wù)器上運(yùn)行的servlet(小服務(wù)程序)、企業(yè)Java的Bean(EJB)和消息驅(qū)動(dòng)的Bean(MDB)21來(lái)調(diào)用
●Java標(biāo)準(zhǔn)版本22,在這種環(huán)境下,業(yè)務(wù)過(guò)程可以通過(guò)獨(dú)立Java應(yīng)用23來(lái)調(diào)用●Java移動(dòng)版本24,在這種環(huán)境下,業(yè)務(wù)過(guò)程可以通過(guò)無(wú)線、電話和手持應(yīng)用25來(lái)調(diào)用●實(shí)時(shí)Java規(guī)范26,在這種環(huán)境下,業(yè)務(wù)過(guò)程可以通過(guò)嵌入式的操作控制應(yīng)用27來(lái)調(diào)用●NET 28,在這種環(huán)境下,業(yè)務(wù)過(guò)程可以通過(guò)web服務(wù)29來(lái)調(diào)用。
業(yè)務(wù)過(guò)程可以直接通過(guò)上述應(yīng)用種類之一來(lái)調(diào)用,或者,這些過(guò)程可以根據(jù)基礎(chǔ)事件模型來(lái)調(diào)用。在本發(fā)明中,在運(yùn)行期環(huán)境中提供了環(huán)境條件,這種運(yùn)行期環(huán)境提供了通用事件模型以及支持執(zhí)行業(yè)務(wù)過(guò)程的其他功能。這種環(huán)境條件提供了作為事件模型的抽象的通用事件處理機(jī)制。在這種環(huán)境條件下,利用事件中的信息并提供本地?cái)?shù)據(jù)訪問(wèn)能力,可以最大限度地減少數(shù)據(jù)需求。
圖3示出了物理網(wǎng)絡(luò)的一個(gè)例子,其中,業(yè)務(wù)過(guò)程所規(guī)定的業(yè)務(wù)邏輯的單元被配置到四個(gè)完全不同的平臺(tái)中。物理上在芝加哥的節(jié)點(diǎn)52在J2EE環(huán)境下運(yùn)行Java;節(jié)點(diǎn)53在莫斯科并在web服務(wù)環(huán)境下運(yùn)行C#;節(jié)點(diǎn)54在倫敦并在嵌入式環(huán)境下運(yùn)行C;而最后一個(gè)節(jié)點(diǎn)55在巴黎并在J2SE環(huán)境下運(yùn)行Java。在每一環(huán)境下可執(zhí)行的每一邏輯和行為是相同的,并如業(yè)務(wù)過(guò)程的定義中所規(guī)定。本例中,我們已介紹了沒(méi)有包含在以上列出的預(yù)定目標(biāo)環(huán)境中的目標(biāo)環(huán)境(節(jié)點(diǎn)54中的嵌入式C環(huán)境),作為說(shuō)明擴(kuò)展目標(biāo)環(huán)境的機(jī)制的方式。圖2中,由系統(tǒng)管理員通過(guò)用戶界面40(參見(jiàn)圖1)來(lái)規(guī)定附加目標(biāo)環(huán)境(節(jié)點(diǎn)54),并且所得到的發(fā)生器描述符被保存在發(fā)生器描述符5的庫(kù)中。系統(tǒng)管理員還將規(guī)定定義業(yè)務(wù)過(guò)程的用戶所用的描述符的配置的列表。
下列業(yè)務(wù)過(guò)程定義的例子說(shuō)明了利用ECA語(yǔ)法進(jìn)行業(yè)務(wù)過(guò)程的定義。該業(yè)務(wù)過(guò)程說(shuō)明了,對(duì)于某一儀器價(jià)格變動(dòng)事件,如果儀器的價(jià)格跌到規(guī)定值以下,則為指定客戶執(zhí)行這種儀器的所有儲(chǔ)備的銷售操作。
<pre listing-type="program-listing"> <Event name=″PriceChange″type=″InstrumentPriceChange″> <Condition> <AND> ?。糆Q> <o(jì)perand name=″PriceChange.instrument″/> <literal value=″US00039564765″/> ?。?EQ> ?。糒T> <o(jì)perand name=″PriceChange.price″/> <literal value=″75.5″> ?。?LT> </Condition> <Action> <Declare name=″Trades″type=″TradeList″/> <Assign name=″Trades″> ?。糃all context=″TradeSys″operation=″getTrades″> <param name=″Customer″value=″XYZ Bank″/> <param name=″Instrument″ operand=″PriceChange.instrument″\> </Call> </Assign> <Loop control=″Trades″item=″Trade″> ?。糃all context=″TradeSys″operation=″Sell″> <param name=″Trade″operand=″Trade″/> ?。?Call> </Loop> </Action> ?。?Event></pre>其中發(fā)生器更了解系統(tǒng)的另一種語(yǔ)法可能是<Customer name=″XYZ Bank″>
<instrument id=″US00039564765″>
<low value=″75.5″>
<behaviour name=″sell″/>
</low>
</instrument>
</Customer>
所產(chǎn)生的源代碼一樣...
JAVA版本<pre listing-type="program-listing"> package examplerules; public class MonitorInstrument implements com.enigmatec.ReactiveRule{ public MonitorInstrument(){ } public void onEvent(Object event){ com.acme.InstPriceChange priceChange= (com.acme.InstPriceChange)event; if(priceChange.getInstrument().equals(″US00039564765″)&amp;&amp; priceChange.getPrice()<75.5){ java.util.Vector trades=TradeSys.getTrades(″XYZ Bank″, priceChange.getInstrument()); for(int=0;i<trades.size();j++){ com.acme.Trade trade= (com.acme.Trade)trades.elementAt(i); TradeSys.sell(trade); } } } }</pre>C#版本<pre listing-type="program-listing"> using System; namespace ExampleRules { public class MonitorInstrumentcom.enigmatec.ReactiveRule{ public MonitorInstrument(){ } public void onEvent(Object event){ com.acme.InstPriceChange priceChange= (com.acme.InstPriceChange)event; if(priceChange.getInstrument().equals(″US00039564765″) &amp;&amp;priceChange.getPrice()<75.5){ com.acme.Trade[]trades=TradeSys.getTrades(″XYZ Bank″, priceChange.getInstrument()); foreach(com.acme.Trade trade in trades) TradeSys.sell(trade); } }</pre>
權(quán)利要求
1.一種用于將業(yè)務(wù)過(guò)程變換成適合于在目標(biāo)環(huán)境下執(zhí)行的可執(zhí)行子程序的方法,該方法包括如下步驟提供業(yè)務(wù)過(guò)程定義;提供與目標(biāo)環(huán)境相應(yīng)的發(fā)生器描述符;和根據(jù)發(fā)生器描述符從業(yè)務(wù)過(guò)程定義產(chǎn)生可執(zhí)行子程序。
2.如權(quán)利要求1所述的方法,其中,業(yè)務(wù)過(guò)程定義按反應(yīng)規(guī)則定義形式來(lái)提供。
3.如權(quán)利要求1或2所述的方法,其中,業(yè)務(wù)過(guò)程定義按內(nèi)部規(guī)范形式來(lái)提供。
4.如權(quán)利要求1或2所述的方法,其中,產(chǎn)生可執(zhí)行子程序的步驟包括將業(yè)務(wù)過(guò)程定義剖析為內(nèi)部規(guī)范形式。
5.如權(quán)利要求3或4所述的方法,其中,內(nèi)部規(guī)范形式是反應(yīng)智能框架標(biāo)記語(yǔ)言(RIFML)。
6.如權(quán)利要求1-5任一所述的方法,其中,產(chǎn)生可執(zhí)行子程序的步驟包括利用一個(gè)或多個(gè)變換規(guī)則,結(jié)合一個(gè)或多個(gè)描述目標(biāo)環(huán)境的發(fā)生器描述符,產(chǎn)生用于可執(zhí)行子程序的源代碼。
7.如權(quán)利要求6所述的方法,其中,產(chǎn)生可執(zhí)行子程序的步驟還包括調(diào)用一個(gè)或多個(gè)編譯器,以根據(jù)源代碼產(chǎn)生所述過(guò)程的可執(zhí)行形式。
8.如上述權(quán)利要求任一所述的方法,其中,在所述產(chǎn)生步驟中產(chǎn)生的子程序根據(jù)運(yùn)行期環(huán)境條件產(chǎn)生,從而支持業(yè)務(wù)過(guò)程執(zhí)行的標(biāo)準(zhǔn)環(huán)境。
9.如權(quán)利要求8所述的方法,其中,運(yùn)行期環(huán)境條件包括下列一個(gè)或多個(gè)可用編程環(huán)境數(shù)據(jù);可用事件系統(tǒng)數(shù)據(jù);關(guān)于對(duì)本地文件和服務(wù)的可訪問(wèn)性的數(shù)據(jù);和涉及目標(biāo)平臺(tái)中的其他相關(guān)性的數(shù)據(jù)。
10.如權(quán)利要求9所述的方法,其中,事件系統(tǒng)是一種以預(yù)定形式調(diào)度事件的系統(tǒng),選自以下組Java消息服務(wù),Java收聽(tīng)服務(wù),Windows事件調(diào)度器,和X Windows消息傳送。
11.如上述權(quán)利要求任一所述的方法,其中,發(fā)生器描述符包括選自下列一個(gè)或多個(gè)的數(shù)據(jù)可用編程環(huán)境列表;可用事件模型列表;表示在目標(biāo)環(huán)境中使用的硬件的處理器數(shù)據(jù);表示在目標(biāo)環(huán)境中使用的操作系統(tǒng)的類型的操作系統(tǒng)數(shù)據(jù);和相關(guān)性的列表。
12.如上述權(quán)利要求任一所述的方法,其中,發(fā)生器描述符是在定義業(yè)務(wù)過(guò)程時(shí)的用戶輸入。
13.如上述權(quán)利要求任一所述的方法,其中,提供發(fā)生器描述符的步驟包括為共同出現(xiàn)的目標(biāo)環(huán)境配置提供一組共同的發(fā)生器描述符。
14.如權(quán)利要求1-11所述的方法,其中,發(fā)生器描述符被推理出。
15.如權(quán)利要求14所述的方法,其中,發(fā)生器描述符至少部分地根據(jù)下列一個(gè)或多個(gè)被推理業(yè)務(wù)過(guò)程定義和運(yùn)行期環(huán)境條件。
16.如上述權(quán)利要求任一所述的方法,還包括將業(yè)務(wù)過(guò)程定義庫(kù)保持在過(guò)程存儲(chǔ)器中的步驟。
17.如權(quán)利要求16所述的方法,其中,業(yè)務(wù)過(guò)程定義按內(nèi)部規(guī)范形式來(lái)保存。
18.如權(quán)利要求16所述的方法,其中,業(yè)務(wù)過(guò)程定義由用戶通過(guò)訪問(wèn)過(guò)程存儲(chǔ)器的用戶界面來(lái)提供。
19.如權(quán)利要求18所述的方法,其中,產(chǎn)生可執(zhí)行子程序的步驟包括調(diào)用業(yè)務(wù)過(guò)程變換組件,以根據(jù)源代碼將用戶定義的業(yè)務(wù)過(guò)程定義變換成業(yè)務(wù)過(guò)程的可執(zhí)行形式。
20.如上述權(quán)利要求任一所述的方法,其中,產(chǎn)生可執(zhí)行子程序的步驟包括通過(guò)網(wǎng)絡(luò)將可執(zhí)行業(yè)務(wù)過(guò)程配置到預(yù)期目標(biāo)環(huán)境中。
21.如權(quán)利要求20所述的方法,其中,為網(wǎng)絡(luò)上存在的每一目標(biāo)環(huán)境產(chǎn)生可執(zhí)行業(yè)務(wù)過(guò)程,并將其配置在網(wǎng)絡(luò)上的多個(gè)不同位置,使得產(chǎn)生減少的一組可執(zhí)行業(yè)務(wù)過(guò)程,以配置在網(wǎng)絡(luò)內(nèi)的各個(gè)不同位置。
22.一種根據(jù)業(yè)務(wù)過(guò)程定義和用于目標(biāo)環(huán)境的發(fā)生器描述符將業(yè)務(wù)過(guò)程變換成可執(zhí)行子程序的系統(tǒng),其中,該系統(tǒng)包括一個(gè)或多個(gè)計(jì)算機(jī)應(yīng)用,所述應(yīng)用提供輸入業(yè)務(wù)過(guò)程定義的界面,并根據(jù)發(fā)生器描述符將一個(gè)或多個(gè)業(yè)務(wù)過(guò)程定義變換成用于在目標(biāo)環(huán)境內(nèi)執(zhí)行的多個(gè)子程序。
23.如權(quán)利要求22所述的系統(tǒng),其中,業(yè)務(wù)過(guò)程定義按反應(yīng)規(guī)則定義形式來(lái)提供。
24.如權(quán)利要求22所述的系統(tǒng),其中,業(yè)務(wù)過(guò)程定義按內(nèi)部規(guī)范形式來(lái)提供。
25.如權(quán)利要求22-24任一所述的系統(tǒng),其中,發(fā)生器描述符是在定義業(yè)務(wù)過(guò)程時(shí)的用戶輸入。
26.如權(quán)利要求22-25任一所述的系統(tǒng),其中,發(fā)生器描述符選自用于共同出現(xiàn)的目標(biāo)環(huán)境配置的一組共同的發(fā)生器描述符。
27.如權(quán)利要求22-25任一所述的系統(tǒng),其中,產(chǎn)生可執(zhí)行子程序中所用的發(fā)生器描述符被推理出。
28.如權(quán)利要求27所述的系統(tǒng),其中,推理數(shù)據(jù)至少部分地根據(jù)下列一個(gè)或多個(gè)被推理業(yè)務(wù)過(guò)程定義和運(yùn)行期環(huán)境條件。
29.如權(quán)利要求22-28任一所述的系統(tǒng),其中,所述一個(gè)或多個(gè)計(jì)算機(jī)應(yīng)用包括將業(yè)務(wù)過(guò)程定義剖析為內(nèi)部規(guī)范形式的計(jì)算機(jī)應(yīng)用;和利用一個(gè)或多個(gè)變換規(guī)則結(jié)合一個(gè)或多個(gè)描述目標(biāo)環(huán)境的發(fā)生器描述符產(chǎn)生用于可執(zhí)行子程序的源代碼的計(jì)算機(jī)應(yīng)用。
30.如權(quán)利要求29所述的系統(tǒng),其中,計(jì)算機(jī)應(yīng)用還包括調(diào)用一個(gè)或多個(gè)編譯器以根據(jù)源代碼產(chǎn)生業(yè)務(wù)過(guò)程的可執(zhí)行形式的計(jì)算機(jī)應(yīng)用。
31.一種包括計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)程序產(chǎn)品,這種代碼可根據(jù)一個(gè)或多個(gè)發(fā)生器描述符將業(yè)務(wù)過(guò)程定義變換成一個(gè)或多個(gè)可執(zhí)行子程序,所述發(fā)生器描述符每個(gè)都與一個(gè)目標(biāo)環(huán)境相應(yīng)。
全文摘要
本發(fā)明提供了一種用于將業(yè)務(wù)過(guò)程變換成適合于在目標(biāo)環(huán)境下尤其在分布式異構(gòu)目標(biāo)環(huán)境下執(zhí)行的可執(zhí)行子程序的方法。業(yè)務(wù)過(guò)程定義可以按內(nèi)部規(guī)范形式來(lái)提供,或者可以根據(jù)一系列表示法的任意一種分解成規(guī)范形式。業(yè)務(wù)過(guò)程定義可以按規(guī)范格式來(lái)保存。通過(guò)根據(jù)與目標(biāo)環(huán)境相應(yīng)的發(fā)生器描述符從業(yè)務(wù)過(guò)程定義產(chǎn)生可執(zhí)行子程序,可以在直接在目標(biāo)環(huán)境中執(zhí)行該可執(zhí)行子程序。該方法提供了一種開(kāi)發(fā)時(shí)間環(huán)境,其中,業(yè)務(wù)過(guò)程可以被設(shè)計(jì)、修改、保存在庫(kù)中,并可以變換成直接可執(zhí)行子程序。該方法使得可以在所調(diào)用程序與引擎或服務(wù)器無(wú)關(guān)的環(huán)境條件下調(diào)用業(yè)務(wù)過(guò)程。
文檔編號(hào)G06F9/44GK1656449SQ03812439
公開(kāi)日2005年8月17日 申請(qǐng)日期2003年5月28日 優(yōu)先權(quán)日2002年5月29日
發(fā)明者鄧肯·約翰斯頓-沃特, 安得魯·馬丁·韋斯特, 杰瑞·布朗, 斯蒂芬·肖恩·馬克·羅斯-塔爾博特 申請(qǐng)人:伊尼格馬泰克公司