專利名稱:復合斷言和動態系統的系統定義和gui的制作方法
技術領域:
本發明是有關于圖形表達法或者圖形語言的設計,用來描述斷言、布爾 表達式、條件表達式、流程控制、活動、業務流程、系統行為以及如何借助 軟件工具來進行系統行為的實施。
背景技術:
由于基于文本的電腦語言具有連貫順序的特性,而對一個有很多并行活 動的復雜行為,比如業務流程,用文本型語言就不太容易來描述。半個世紀 以來,流程圖已被用于克服文本型語言的這個弱點。但是,流程圖有它自己 的局限性。近年來,許多新的電腦圖形語言被設計出來用以克服其中的一些 限制,比如Business Process Modeling Notation(BPMN)、 United Modeling Language (UML)活動圖(Activity Diagram)和動態系統圖(Dynamic Systems Chart, DSC)。
雖然相對于流程圖有很多改進,但這些新的圖形語言仍有一個和流程圖 同樣的弱點,就是在描述復雜判斷或者條件時,仍然是使用了基于文本型的 表達式。
在流程圖中,決策點(dedsionpoint)—般是用菱形來表示的。在菱形的內 部,布爾表達式則是用文本描述的。 一個決策點可以有兩個或者更多向外的 箭頭,而每個箭頭則指向下一個步驟。例如, 一個菱形有兩個箭頭。菱形里面的布爾表達式可以定義為"X和Y", 一個箭頭可能被標注為"真",另
-個箭頭可能被標注為"假"。這個決策點所描述的是,如果X和Y都為真,
為"真"的箭頭將會繼續。否則,為"假"的箭頭將會繼續。
在BPMN中,有多種形式的"Gateway"用來描述一個決策點。 一個 "ConditionExpression"屬性可以用來定義一個Gateway或者其向外的箭頭(在 BPMN中叫做"sequence flow")。而這個ConditionExpression屬性通常是用 XML Path Language (XPath)的基于文本的表達式來定義的。
在UML活動圖(Activity Diagram )中, 一個決策節點(node )可以有 多個向外的直線(edge),其中每條直線有一個guard條件定義了什么情況下 該直線將被選擇。UML活動圖中的join節點也可以有一個join條件的定義, 該join條件的定義描述了在什么情況下會沿著其單一的輸出直線繼續。在這 兩種情況下,這些條件都是由基于文本的布爾表達式來定義的。
DSC是一種以動態系統(Dynamic System, DS)為單元來描述行為的圖形語 言。在DSC中,有兩個地方需要制訂決策。 一個是在和遷移箭頭相關聯的遷 移條件中,另一個是在和結束點相關聯的結束條件中。遷移條件和結束條件 都可以定義為布爾表達式。
當描述一個簡單條件時,基于文本的布爾表達式就可以做的很好,比如 "X和Y"。但是,當描述一個需要使用"和"或"或"的邏輯操作符來連 接多個簡單表達式的復雜條件時,由于下面一些原因, 一個基于文本的布爾 表達式就不是很理想了。
首先,基于文本的行為描述、復雜布爾表達式可能是違反直覺的,因為 運算的順序依賴于一些隱含的優先法則。比如"A II B && C II D && E"是 一個<:(++/^^表達式,其中,II代表"或"的邏輯符,而&&代表"和" 的邏輯符。在這些編程語言中,有一些隱含的優先法則,比如&&比||有更高 的優先級。因此,"A II B && C II D && E"實際上意味著"A II (B && C) || (D &&E)",而不是一些人可能期望的"((A||B)&&C||D)&&E"。第二,基于文本的布爾表達式在同一時間只能有兩個操作數,所以不能 同時操作多個操作數。如果許多操作數需要被同時檢驗,就需要重復定義一
些邏輯操作符,比如AND禾EIOR。例如如果我們想要描述一個條件"A,B, C, D,和E全都為真",那么表達式必須定義為"A && B && C && D &&
E"。而理想情況下,應當不需要重復地定義這些邏輯操作符。另外,因為同 一時間只有兩個操作數被運算,重復應用這些操作符無意中可能產生一些不 必要的副作用。
第三,當有多個操作數時,基于文本的布爾表達式通常不能描述若這 些操作數中有任何兩個為真,該條件即滿足。它也不能描述若這些操作數 中至少或者至多有兩個為真,該條件即滿足。如果一個決策是基于有多少個 為真的操作數,那么又如何來定義呢? 一個布爾表達式是沒有一個機制來簡 單地處理這些情況的。但是,這些都是可能需要在電腦系統中被描述的現實 世界的條件。
第四, 一個布爾表達式通常只被運算為兩個不同的結果,叫做是(真) 或者否(偽)。但用來定義需要同時選擇多個選項的一個決策,這就不合適 了。為了要定義一個決策的多個選項,這些多個選項中的每個都要定義一個 布爾表達式,使得當相關聯的布爾表達式被測試為真時,這些選項中的一個
就會被選擇。在BPMN中,可以通過為一個Gateway的每個向外的sequence flow定義一個布爾表達式來做到這點。如果該條件比較簡單,這個方法是可 行的。但是,對于比較復雜的條件,寫多個長的布爾表達式會顯得冗長。比 如,下面是可能需要定義布爾表達式的部分列表1)如果年齡小于5歲,宗 教信仰為X,國籍為A; 2)如果年齡小于5歲,宗教信仰為Y,國籍為A; 3) 如果年齡大于20歲,宗教信仰為X,國籍為B; 4)如果年齡大于20歲,宗 教信仰為X,國籍為C等等。最壞的情況下,需要定義>^*^/[*0個布爾表 達式,其中N是年齡范圍,M是宗教種類數目,O是國家種類數目。更壞的 情況下,為了找到一個為真的條件,年齡、宗教、國籍可能會被重復測試N*M+0次。因此,有必要對復雜條件有更加結構化的描述。
第五,復雜的決策邏輯和條件不能像其他行為的定義一樣用圖形來顯示。
因為決策邏輯是任何復雜行為的基礎部分,如果仍然保持復雜決策邏輯為文
本的形式,則不能達到將一個計算機系統行為徹底地圖形化。
需要解決的問題是如何將復雜的決策和條件也能以圖形語言來描述,并
克服了上面談到的所有基于文本的布爾表達式的不足。本發明就提供了這樣
一個解決方案。
發明內容
本發明描述了如何使用復合斷言和圖形用戶界面(GUI)來定義作為計算
機系統行為的一部分的復雜決策或者條件。此外,可以對復合斷言的GUI廣
義化,使得計算機系統的整個行為都可以用一致的方式圖形化地加以描述。 本發明的一個目的是在應用系統中通過圖形表現來定義復雜決策和復雜
條件,從而能夠更加方便地理解系統中的決策是如何做出來的。
另 -個目標是改進如何對可能有多個參數和多個結果的復雜決策或者條
件進行定義。
為了達到這些目標,木發明中提供了如何定義復合斷言的系統和如何圖 形化地展示這些復合斷言。
本發明使用復合斷言來描述復雜決策或者條件。復合斷言有如下組件1) 子斷言;2)遷移;3)終點;4)結束點。并且描述了處理或者執行一個復合 斷言的過程。
本發明也描述了如何使用一種圖形語言將復合斷言用圖形展現出來,包 括動態系統圖(DSC), BPMN和UML活動圖。
為了描述計算機系統更多的常見行為,復合斷言的復合結構被廣義化為 復合動態系統(以下簡稱為復合DS)。 一個復合DS有如下組件1)子動態 系統(子DS); 2)遷移;3)起點;4)終點;5)結束點。并描述了一個復合DS如何用圖形來顯示。另外,本發明提供了一些方法來擴展已有的圖形語言,
來描述和支持復合DS的構造,比如BPMN和UML活動圖。
最后,提供了一些典型的例子來展示如何將本發明應用在各個方面。 參考了本說明的其余部分,包括圖片和權利要求,可實現本發明的其他
特性和優點。下文用附圖及參考資料中的類似功能來對本發明的特性和優點
以及其結構和各種例子的操作做了更詳細的描述。
圖1是一個簡化的框圖(block diagram),顯示了一個分布式計算機環境 的例子;
圖2是一個簡化的框圖,闡明了可用于實施本發明的計算機系統;
圖3顯示了一個復合DS;
圖4顯示了復合斷言的通用形式;
圖5顯示了一個復合斷言的特例;
圖5A顯示了在序列中如何定義一個并行子斷言。
圖5B顯示了一個復合斷言的具體例子。
圖6顯示了一個帶有隱含終點的復合斷言;
圖7顯示了一個帶有一個V結束條件的復合斷言;
圖8顯示了一個帶有"等于N"的復合斷言;
圖9顯示了一個帶有A結束條件的復合斷言;
圖IO顯示了一個帶有"小于等于N"結束條件的復合斷言;
圖11顯示了一個嵌套的復合斷言;
圖12顯示了一個簡化的復合斷言,該斷言省略了終點;
圖13顯示了一個簡化的復合斷言,該斷言省略了 "Yes"遷移條件;
圖14顯示了一個簡化的復合斷言,該斷言省略了遷移條件;
圖15顯示了一個復合斷言的例子,該斷言以"Yes"作為指向一個終點的遷移箭頭的遷移條件;
圖16顯示了一個簡化的復合斷言,該斷言以"Yes"為遷移條件并且省 略了終點;
圖17顯示了一個簡化的復合斷言,該斷言省略了默認的結束點;
圖18是一個有多個簡單斷言的例子;
圖19是一個流程圖,顯示了如何運算一個復合斷言;
圖20顯示了如何用一個復合斷言來描述一個復雜決策;
圖21顯示了使用復合斷言描述復雜決策的另一種方法;
圖22顯示了在UML中如何在決策節點中使用復合斷言;
圖23顯示了在UML中如何將復合斷言用作活動節點;
圖24是一個BPMN圖例,其復雜Gateway定義為一個復合斷言;
圖25顯示了在BPMN中如何將復合斷言用作一個活動;
圖26為空圖27顯示了在BPMN的擴展版本中如何模擬圖4中的復合斷言; 圖28是一個復合斷言的例子,該斷言只有并行的子斷言; 圖29顯示了和圖28同樣的復合斷言,該斷言有一個"Yes"結束點; 圖30顯示了在BPMN的擴展版本中如何模擬圖29中的復合斷言; 圖31是一個有2個序列的復合斷言;
圖32顯示了在BPMN的擴展版本中如何模擬圖31中的復合斷言; 圖33顯示了在BPMN的擴展版本中一個模擬復合斷言如何用作 Gateway;
圖34顯示了在BPMN的擴展版本中一個模擬復合斷言如何當作Activity
來用;
圖35顯示了在UML活動圖的擴展版本中如何模擬圖4中的復合斷言; 圖36顯示了在UML活動圖的擴展版本中如何模擬圖29中的復合斷言; 圖37顯示了在UML活動圖的擴展版本中如何模擬圖31中復合斷言;圖38A顯示了在UML活動圖的擴展版本中模擬復合斷言如何當作 decision節點來用。
圖38B顯示了在UML活動圖的擴展版本中模擬復合斷言如何當作 Activity節點來用。
圖39顯示了在一般的圖形語言中如何模擬一個復合斷言;
圖40顯示了在BPMN的擴展版本中如何模擬圖3中一個復合DS;
圖41顯示了在UML活動圖的擴展版本中如何模擬圖3中的一個復合
DS;
圖42是一個嵌套復合DS的例子。
圖43顯示了在BPMN的擴展版本中,如何模擬圖42中的一個嵌套復合
DS;
圖44顯示了在UML的擴展版本中如何模擬圖42中的嵌套復合DS; 圖45顯示了復合斷言的一個例子,該復合斷言帶有一個子簡單斷言和一 個間接結束點;
圖46顯示了復合斷言的一個例子,該復合斷言帶有一個子復合斷言和 一個間接結束點;
圖47顯示了復合斷言的一個例子,該復合斷言帶有一個子簡單斷言、 一個遷移和 一個間接結束點;
圖48顯示了復合斷言的一個例子,該復合斷言帶有兩個子簡單斷言和一 個間接結束點;
圖49顯示了復合斷言的一個例子,該復合斷言帶有一個子簡單斷言、 一個子復合斷言和一個間接結束點;
圖50顯示了復合斷言的一個例子,該復合斷言帶有一個子簡單斷言、 一個遷移和一個直接結束點;
圖51顯示了復合斷言的一個例子,該復合斷言帶有兩個子簡單斷言、 一個遷移和一個直接結束點;圖52顯示了復合斷言的一個例子,該復合斷言帶有一個子復合斷言、 --個遷移和一個直接結束點。
具體實施例方式
現在將以一個或者多個例子的形式對本發明進行描述。在下面的描述中, 將列出諸多細節,以對本發明進行更全面的描述。對于本領域的技術人員它 是顯而易見的,即使缺了這些細節,也是可以應用本發明的。為了避免不必 要的混亂,對于一些眾所周之的特性,就不作詳細描述了。
許多計算機系統都有復雜的行為。本發明使用動態系統
(Dynamic-System, DS)來描述計算機系統的內部行為。為了向人類用戶顯 示計算機系統的內部行為,本發明提供了一些圖形語言作為人機交互接口, 以方便理解所描述的復雜行為。 一個設計工具可以使用其中的一種圖形語言, 來讓用戶定義計算機系統的行為。另一個設計工具也可以使用其中的一種圖 形語言,在圖形化的屏幕上展示計算機系統運行時的行為。
為了執行一些有用的功能, 一個計算機系統可能需要做出復雜的決策。 本發明用斷言構造來定義決策的內部行為。用戶可以使用本發明中提供的一 種圖形語言,將斷言的行為用圖形來顯示。
本發明中所描述的復雜行為,包含了復雜決策,可以廣泛地應用在實時 或者分布式環境中的軟件或者硬件系統中,如圖1所示。
一個分布式環境通常由多個硬件系統構成,這些硬件系統由網絡連接起 來。每個硬件系統有一個或者多個中央處理器(CPU)、內存(ROM, RAM,磁 盤)、輸入和輸出設備,如圖2所示。在這樣的硬件系統上運行的計算機系統 的行為可以顯示在輸出設備上,而以圖形化顯示來操作系統行為的用戶輸入 則可以用輸入設備來釆集。
硬件系統通常是一臺計算機,也可能是個人數據助理(Personal Data Assistant)、多功能電話、膝上計算機、桌上計算機、工作站(workstation)、大型計算機、實時控制設備、網絡設備或者其它任何一種提供計算和輸入/輸出 性能的設備。
下面的部分將描述DS、斷言并用圖形來表現出其技術特性。
用DSC來定義一個復雜行為
DSC是一個用DS來描述復雜行為的圖形語言。基本上,每個計算機系 統的行為都可以用一個DS描述。 一個DS有一個"結果"屬性來記錄其執行 的結果狀況。 一個DS既可以是簡單的也可以是復合的。 一個復合DS可以在 更低的層次分解為多個子DS,而一個簡單DS則不可以被進一步分解。 一個 復合DS內部有以下組件1) 一個或者更多的子DS; 2)零個或者更多的起 點;3)零個或者更多的終點;4)零個或者更多的遷移;5)零個或者更多的 結束點。圖3顯示了一個復合DS,為一個包含了上述組件的復合框310。復 合DS的名字顯示在一個小的標簽框300中,該標簽框在復合框的上沿。 "DSO" 復合DS有6個子DS: "sub-DSl" 301, "sub-DS2" 302, "sub-DS3" 303, "sub-DS4" 304, "subDS5" 305和"sub陽DS6" 306。
復合DS的一個子DS既可以是順序的,也可以是并行的。 一個并行子 DS與其它的子DS相互獨立,而一個順序子DS則至少有1個遷移連接到另 一個順序型的子DS。每個遷移有一個遷移箭頭和一個遷移條件。遷移箭頭顯 示為一個從源頭子DS指向目標子DS的箭頭,而相應的遷移條件則顯示為箭 頭旁邊的一個標簽。源頭子DS完成其執行后,檢測其每一個往外的遷移箭頭 所關聯的遷移條件。如果任何一個為真,就選擇與其遷移箭頭相關聯的目標 子DS來作為下一步將要執行的子DS。例如,如圖3所示,"sub-DS3" 303 有2個遷移箭頭,其中一個指向終點307 (顯示為一個小實心方塊),另外一 個指向"sub-DS5" 305。與指向終點307的遷移箭頭相聯系的遷移條件為 "cond5",與指向"sub-DS5"的遷移箭頭相聯系的遷移條件是"cond6"。 所有被一個或者多個遷移箭頭連接在一起的順序型子DS組成了復合DS 中的一個序列。例如圖3中的"sub-DSl" 301禾n "sub-DS2"組成第一個序列,而 "sub-DS3" 303, "sub-DS4" 304和 "sub-DS5" 305組成 "DSO" 300中的第二個序列。為了區分一個復合DS中的不同的序列,復合 DS巾的每個序列都有一個唯一的內部標識"序列-ID"以便區分。
一個序列中除了有順序型子DS,也可以有多個起點和終點。每個起點可 以有多個往外的遷移。一個起點可以在包含它的復合DS內部顯示為一個空的 正方形。例如圖3中的起點309有兩個遷移。其中一個遷移條件是"cond3", 另一個遷移條件是"cond4"。
序列中的每個終點可以有一個名字或者一個標識符,并且顯示為一個實 心正方形。例如,如圖3所示,"DSO" 300的第二個序列中,"EP2" 307 是一個終點,"Ep3" 308是另一個終點。
當復合DS開始執行的吋候,其所有的序列可以同時開始執行。但在一個 序列中,在任何時候只能執行其中一個順序型子DS。 一個序列是從它的一個 起始子DS開始執行,這個起始子DS既可以是沒有被任何遷移箭頭所指向的 子DS,也可以是源自起點的一個遷移箭頭所指向的目標子DS。如果一個序 列中有不止1個起始子DS,只有其向內的遷移條件為真的子DS才會被選中。 例如當圖3中的"DS0" 300開始,作為第一個序列中唯一的起始子DS, "sub-DSl" 301開始執行。另外,當"DSO"開始,第二個序列也開始。如 果"cond3"為真,"sub-DS3" 303開始執行,而如果"cond4"為真,則 "sub-DS4" 304會開始。
在序列中,順序型子DS會一個接一個地執行,直到抵達了終點。抵達終 點時,包含該終點的序列即終止,而該終點的內部終止值會被記錄下來。稍 后,包含它的復合DS的結束條件可能需要檢查這個終止值。
不像一個順序型的子DS, 一個復合DS中的并行子DS沒有連接到任何 遷移。當一個復合DS開始執行,其所有并行子DS可以隨著所有其他序列同 時開始。例如,圖3中,"sub-DS6" 306是一個并行子DS,當"DSO" 300 開始時,"sub-DS6" 306也開始。從另一個方面來看, 一個并行子DS可以視為是一個只有一個子DS的序
歹U,該子DS只有一個遷移條件為"Yes"的遷移,直接指向一個名為"Yes" 的終點。因此,如果一個并行子DS以一個正值結束,它可以被視為與其相對 應的序列以一個正的終止值而終止。所以本文檔之后的部分,并行子DS也可 以視為這種特殊的序列。
一個復合DS可能有多個結束點,每個結束點內部都有一個相應的結束值。 一個結束點可能是直接的,也可能是間接的。除了相聯系的結束值,直 接結束點還可以有一個名字。當到達一個直接結束點時,復合DS即結束,其
"結果"屬性設為剛到達的結束點的結束值。直接結束點可以顯示為直接由 一個遷移箭頭指向的一個實心三角形,而其名字則顯示在實心三角形的旁邊。 例如圖3中的"DS0" 300有2個直接結朿點,叫做"ResultO" 311和
"Result3" 314。禾Q "cond2"遷移條件相應的遷移箭頭指向"ResultO"結束 點;和"匿d9"遷移條件相應的遷移箭頭則指向"Result3"結束點。
"sub-DS2" 302結束時,如果"cond2"為真,則抵達"Result0" 311結束點。 當抵達"Result0"結束點時,"DS0"復合DS就結束了,其"結果"設為與
"Result0"結束點相聯系的結束值。
一個間接結束點顯示為一個和任何子DS都不相連的實心三角形。除了結 束值外, 一個間接結束點還可以有一個名字和一個結束條件。結束條件描述 了在什么情況下該復合DS就會結束,并且將其"結果"設為與該間接結束點 相聯系的結束值。 一個用戶定義的間接結束點顯示為一個實心三角形,并在 旁邊顯示其結束條件。例如,圖3中的"DS0" 300有2個用戶定義的間接結 束點"Resultl" 312禾卩"Yes" 313。
當一個序列結束時,復合DS中的每個結束條件都會被檢驗。如果任何結 束條件的結果運算為正,該復合DS則結束,其"結果"設為相應結束點的結 束值。例如,如圖3所示,當抵達"EP2"或者"EP3"時,或者"sub-DS6" 306結束時,"ExitCondl"禾n "ExitCond2"都要被檢驗。如果"ExitCondl"的結果被檢驗為正,則"DS0" 300結束,其"結果"設為"Resultl" 312的 結束值。另一方面,如果"ExitCond2"的結果運算為正,"DS0" 300結束, 其"結果"設為"Yes" 313的結束值。如果所有的結束條件都不為真,復合 DS會繼續執行直到所有的序列都結束為止。
除用戶定義的結束點之外,每個復合DS有一個系統預定義的間接的隱含 結束點。這個隱含結束點的名字是"No",結束條件是"Else"。當所有的 序列都結束后,并且所有用戶定義的結束條件都沒有正的結果,復合DS即在 這個隱含的結束點處結束,將其"結果"設為"No"結束點的結束值。
為了把"No"結朿點和其他用戶定義的結束點相區分開來,用戶定義的 每個結束點都有一個正值,而"No"結束點的結束值則有一個非正值。
在擴展版的DSC中來定義一個復雜斷言
在基本的DSC中,一個斷言只能以基于文本的表達式來定義,比如圖3中 的"condl"或者"ExitCondl"。本發明擴展了基本的DSC, 一個斷言也 能用一種圖形符號來定義。下一節描述了帶有斷言的DSC擴展版,該斷言是 用與DSC有同樣風格的圖形來定義的。
基本上,在本發明中,斷言的目的是為了做決策時來檢驗一個條件集。 例如, 一個遷移條件是用來決定是否要沿著與其相聯系的遷移箭頭走下去。 一個斷言通常檢驗一些反映了當前狀況的數據,并且該斷言檢驗出一個結果, 其值可能是正值也可能是非正值。結果可以存儲在內存中,比如高速緩存 (cache)或者數據寄存器(register),用來決定下面將執行哪個操作。如果一個斷 言檢驗為正值,就意味著滿足了一個條件。另一方面,如果一個斷言檢驗為 一個非正值,它意味著不滿足任何所需要的條件。
傳統的布爾型斷言通常運算為2個可能的結果,即真或假。但是,本發 明中的斷言被擴展為支持多個正的結果值,而只有1個非正的結果值。換句 話說,本發明中的斷言運算為一個非正的結果值,或是多個正的結果值的其 中之一。支持多個正的結果值的原因是由于在現實世界的很多應用中, 一個決策 既可以繼續也可以不繼續處理或者執行某些應用數據。如果一個決策要繼續, 則可以有多種不同的方式來處理。如果一個斷言只支持一個正的結果值和一 個非正的結果值,從2種以上的繼續處理方式中作選擇,則需要定義一系列 的斷言。反之, 一個帶有多個正的結果值的斷言可以決定是否繼續處理,如 果決定要繼續,通過使用不同的正值可以決定從多種不同方式中選哪一種來 處理。通常, 一個支持多個正的結果值的斷言比只支持一個正的結果值和一 個非正的結果值的斷言會更加有效和靈活。
本發明中,斷言既可以是簡單的,也可以是復合的。 一個簡單斷言不能 被進一步分解,而一個復合斷言可以被分解成若干組件。 一個復合斷言和一 個復合DS有相似的組成結構,除了"結果"屬性之外,還有如下組件1) 一個或多個子斷言;2)零個或多個終點;3)零個或多個遷移;4)零個或多 個結束點。唯一少了的組件是起點,在復合斷言中是不需要起點的。圖4將 一個復合斷言顯示為用帶圓角的復合框414來包含其組件。其名稱為
"PredO",顯示為復合框上沿的一個小標簽盒400中。復合斷言"PredO"有 6個子斷言,它們是 "Sub-predl" 401, "Sub-pred2" 402, "Sub-pred3" 403:
"Sub-pred4" 404, "Sub-pred5" 405,和 "Sub-pred6" 406。
復合斷言中的這些子斷言是在下一層的斷言,它們既可以是順序的,也 可以是并行的。 一個順序子斷言有至少一個遷移連接到另一個順序子斷言。 一個遷移有一個遷移箭頭和一個遷移條件。 一個遷移箭頭可以顯示為一個箭 頭,其遷移條件可以顯示在箭頭的旁邊。例如圖4中的"Sub-predl" 401,
"Sub-pred2" 402, "Sub-pred3" 403,和 "Sub-pred4" 404是順序型子斷 言,因為它們中的每個都至少有一個連接到其它順序型子斷言的遷移箭頭。
"Sub-predl "401有 一 個遷移,其遷移條件為"TmnsCondl ",而
"Sub-pred3" 403有2個遷移,其遷移條件為"TransCond3"和
"丁ransGoncW"。所有這些由1個或者多個遷移箭頭連接在一起的順序型子斷言組成了一
個序列。例如,圖4中的"Sub-predl" 401禾B "Sub-pred2" 402組成第一個 序列,而"Sub-pred3" 403和"Sub-pred4" 404組成第二個序列。為了區分 不同的序列,復合斷言中的每個序列都可以配有一個叫做S叫uence-ID的唯一標識。
除了順序型子斷言之外, 一個序列還可以有多個用戶定義的終點。每個 用戶定義的終點可以有一個名字,終點顯示為一個實心方框。例如,圖4中 的第二個序列中,"EP2" 408禾B "EP3" 409是用戶定義的終點。
當開始執行復合斷言的檢驗的時候,其所有的序列可以同時開始。但在 一個序列中,在同一時間內只能對一個子斷言執行檢驗。序列的檢驗起于初 始子斷言, 一個初始子斷言是沒有被任何遷移箭頭指向的一個順序型子斷言。 例如,圖4中的"Sub-predl"是第一個序列中的初始子斷言,"Sub-pred3" 是第二個序列中的初始子斷言。每個子斷言被檢驗之后,從其多個可能的遷 移箭頭中選擇下一個要檢驗的子斷言。下面描述了如何選擇下一個子斷言。
每個遷移箭頭都是從一個源頭子斷言指向一個目標子斷言,并且它有一 個相關的遷移條件。遷移條件描述了源頭子斷言的某個結果值。源頭子斷言 執行完以后,如果其"結果"和該遷移條件中描述的一樣,那么下一步即執 行該遷移箭頭的目標。例如,圖4中所示,執行完"Sub-pred3" 403之后, 如果"TransCond4"為真,下 一 步即執行"Sub-pred4" 404 ,如果 "TransCond3"為真,下一步即執行"EP2"終點408。后面將會描述一個終 點是如何被執行的。
一個用戶定義的遷移條件可以為1) "No" , 2) "Yes" , 3)源頭子斷言 中的任何用戶定義的結束點名稱,或者4) "Else"。下面將詳述這四種定義
l)遷移條件為"No"所表示的是如果源頭子斷言運算檢驗的結果為一 個非正值,下面將執行與該遷移箭頭相關聯的目標。例如,圖5所示,"R" 子斷言執行完以后,如果其"結果"值是非正的,下一步將運行"S"子斷言。2) 遷移條件為"Yes"所表示的是如果源頭子斷言運算為任何一個正
值,下面將執行與該遷移箭頭相關聯的目標。例如,圖5所示,"R"子斷言 執行完之后,如果其"結果"值為正,下一步將運行"EP2"終點50S。
3) 遷移條件中帶有一個結束點名稱所表示的是如果源頭子斷言運算為 該結束點的結束值,下面將執行與該遷移箭頭相關聯的目標。例如,圖5所 示,"S"子斷言運行完之后,如果其"結果"為"S"子斷言的與"yesl" 相關聯的結束值,下一步將運行"EP2"終點509。
4) 遷移條件為"Else"所表示的是如果源頭子斷言的所有其他遷移條 件都不被滿足,下面將執行與該遷移箭頭相應的目標。例如,圖5所示,執 行"S"子斷言之后,如果"yesl"遷移條件不被滿足,那么下一步將運行
"EP3"終點"510。
一個序列中的各個順序型子斷言依次執行,直至一個終點為止。 一旦到 達一個終點,該序列停止,并記錄下與剛到達的終點相關的內部終止值,以 備結束條件在后面檢驗復合斷言中每個序列的終止狀態。 一個終點名字既可 以是"Yes"(圖5中的507), "No",也可以是一個用戶定義的名字。如果 這些終點中的任何一個終點需要和其他終點區分開來,那么每個終點應當有 唯一的名字,比如圖5中的"EP2" 508或者"EP3" 510。但是,如果這 些終點中的某些終點不需要彼此區分,它們可以和別的終點共用同一個名字, 既可以是"Yes", "No",也可以是用戶定義的名字。例如,圖5中的兩個 終點508和509有同樣的名字"EP2"。終點507名字也為"Yes",因為它 不需要與其它可能的同名終點相區分。
一個順序型子斷言執行完之后,如果其用戶定義的遷移條件都不為真,就 會到達一個預先定義的隱含終點(implicitEnd-point)。該行為是為了覆蓋到所有 可能的情況,因為有些情況可能未被用戶定義的遷移條件所覆蓋到。隱含終點 的行為可被視為對于每個源頭子斷言都加上一個預先定義的遷移箭頭,該遷 移箭頭有一個定義為"Else"的遷移條件,并指向一個預先定義的"No"終點。例如,圖6顯示了圖5中叫做"P"和"Q"的子斷言加上這些隱含終點后
的圖形。"P"子斷言601被執行后,如果"結果"值不為正,下面將執行隱 含"No"終點604,這表明當前序列已到達了終點,該序列的其余部分將不再 執行。和在普通終點終止一樣,和隱含終點相關聯的內部終止值會被記錄下來, 以備后面由復合斷言的結束條件來檢驗。這些預先定義的"Else"遷移條件和 "No"終點雖然一直都存在,但它們通常并不顯示在圖中。
為了把用戶定義的終點和隱含終點區分開來,和"Yes"終點相關聯的終 止值或者和任何用戶定義的終點相關聯的終止值可有一個正值,而和隱含終 點相關聯的終止值則可有一個非正值。復合斷言中的結束條件可以通過檢驗 每個被執行的序列的終止值來決定該復合斷言是否終止。
并行子斷言和順序型子斷言有所不同,它是沒有任何遷移箭頭的。例如, 圖5中的"T"和"U"是并行的子斷言。執行一個復合斷言時,其所有并行 子斷言可以同時被執行(和每個序列中的初始順序型子斷言一起執行)。例 如,當圖5中的"A"復合斷言500開始時,"T"子斷言和"U"子斷言都 開始執行。
從另一個角度來看, 一個并行子斷言也可視為一個序列,該序列只有一 個帶有一個往外的遷移的子斷言,其遷移條件定義為"Yes",指向一個 "Yes"終點。因此,如果一個并行子斷言以一個正值結束,它可以被視為與 其相應的序列以一個正值終止。圖5.A顯示了圖5中的"T"和"U"并行子 斷言是如何定義為序列的。因此,在下文中,并行子斷言也可視為序列的一 種特例。
一個復合斷言可以有多個結束點,其中每個結束點有一個相關聯的結束值。 結束點可以是直接的,也可以是間接的。除了一個相關聯的"結束值", 一個直接結束點還可以有一個"名稱"。當到達一個直接結束點,復合斷言 就結束,其結果設為與剛到達的直接結束點相關聯的結束值。 一個直接結束 點可以顯示為由一個遷移箭頭直接指向的實心三角形,其名稱顯示在實心三角形旁邊。 一個結束點的名稱可用于識別該結束點本身。因為一個結束點的 結束值只是用在結束點的內部實現上,所以不需要顯示在圖形中。例如,圖4
中的"PredO" 400有2個直接結束點:"ResultO" 410禾口 "Result3" 413。 遷移條件為"TmnsCond2"的遷移箭頭指向"ResultO"結束點;遷移條件為 "TransCond6"的遷移箭頭指向"Result3"結束點。當"sub-pred2" 402結 束時,如果"TmnsCond2"運算為真,"Pred0"復合斷言結束,其結果設為 與"Result0"結束點相關聯的結束值。
間接結束點沒有任何遷移箭頭,除了一個相關聯的結束值以外, 一個間 接結束點還可以有一個名字和一個結束條件。這個結束條件描述了一種情況, 當復合斷言在該情況下結束時,其結果將設為與該間接結束點相關聯的結束 值。 一個用戶定義的間接結束點也是用實心三角形來表示,其結束條件顯示 在該三角形的底邊,其名字顯示在該三角形的上面或下面。例如,圖4中的 "Pred0" 400有2個用戶定義的間接結束點:"Resultl" 411和"Yes" 412。 "Resultl"結束點411的結束條件是"ExitCondl",而"Yes"結束點412 的結束條件是"ExitCond2"。
每個結束點都有一個與之相關聯的內部結束值,當一個復合斷言在某個 結束點處結束時,這個結束值會被記錄在"結果"屬性中。結束點的名字和 結束值有一一對應的關系。因此,如果從某些結束點處結束都會導致在下一 步時將執行同一個后續的順序型子斷言,那么這些結束點都應當有同樣的名 字。如圖5所示,"A"復合斷言500中,結束條件511的名字是"yes3", 它和結束點512的名稱一樣。這種情況下,在其中任何一處結束都會為"A" 復合斷言設置同樣的結果值,下一步都會執行同樣的順序型子斷言"B" 501。注意雖然"Yes"是一個系統預定義名稱,它也可作為一個用戶定義 結束點的名稱。例如,圖5屮結束點513的名稱為"Yes"。
每當一個序列終止時,在包含它的復合斷言中,每個間接結束點的結束 條件都要被檢驗一次。例如,圖5所示,當抵達"Yes" 507, "EP2" 508,"EP3" 509,或者"EP3" 510中的任何一個,或者"T"結束,或者"U" 結束時,都要檢查"endedAt(Yes)"結束條件511, "endedAt(EP2)"結束條 件512和"》2"結束條件513。若有任何一個結束條件為真,復合斷言就會 結束,將其結果設為與該結束點相關聯的結束值。如圖5所示,如果第一個 序列到達"Yes"終點507, "yes3"結束點511的"endedAt (Yes)"結朿條 件為真,復合斷言"A" 500在"yes3"結束點511處結束,將其結果設為 與"yes3"結束點511相關聯的結束值。
一個用戶定義的結束點的結束條件可以定義為以下形式之一1)
"endedAt (anEndPt)",其中,"anEndPt"是一個終點的名字;2)把運算為 正終止值的序列數量和一個數字相比較。下面將詳述這兩種情況
1) 一個結束條件可以定義成"endedAt(anEndPt)",其中,"anEndPt" 是一個終點的名稱。如果任何一個序列到達該終點,復合斷言即結束,其結 果設為與相應的該結束點相關聯的結束值。如圖5所示,如果抵達"EP2"終 點508或者509,整個"A"復合斷言500就結束了,其結果設為與"yes3" 結束點512相關聯的結束值。
2) 結束條件可以定義為要有多少個序列(包括了那些和并行子斷言相對 應的序列)必須被運算為正的終止值時,該復合斷言才會結束。例如, 一個結 束條件可以為">2",這表示如果運算為正的終止值的序列數量大于2,那 么復合斷言結束,并且其"結果"設為相關聯的結束值。以下是一些特例
一個結束條件可以定義為"大于等于N",其中,N是一個正數。如果 以正的終止值終止的序列總數大于或者等于N,整個復合斷言就終止,其結 果設為與該結束點相應的結束值。注意當一個序列到達任何用戶定義的終
點時,序列被運算為正的終止值,而抵達隱含終點的一個序列被運算為一個
非正的終止值。例如,圖5中,結束點513有一個定義為"》2"的結束條件, 其意為"至少為2"。如果"S"子斷言結束,其結果不為與"S"定義的 "yesl"結束點相關聯的結果值,而到達了 "EP3"終點510,并且"A" 500中的第二個序列運算為一個正的終止值。因為結束條件都不為真,仍然需要 運算其他的子斷言。如果隨后"T"子斷言運算為正的結果,那么至少有2個
正的終止值,整個的"A"復合斷言500就在"Yes"結束點513處結束,其 結果則設為與"Yes"結束點513相關聯的結束值。
"大于等與N"的一個特例是"大于等于1",它意味著要使復合斷言在 該結束點處結束的話,復合斷言中的這些序列中至少有一個序列要有正的終 止值。換句話說,如果這些序列中的任何一個運算為正的終止值,那么復合 斷言就結朿。所以從概念上,這個特例可以視為將邏輯"OR"操作應用于復 合斷言中的這些序列上。"^1"或邏輯標識"V"皆可用于表達"OR"結朿 條件。圖7中顯示了 "B"復合斷言700有"V"結束條件701。
一個結束條件可以定義為"等于N" , N是一個正數。如果以正終止值 結束的序列總數正好是N,整個復合斷言就結束,其結果設為與該結束點相 應的結束值。如圖8所示,結束點801有一個定義為"=1"的結束條件,它 表示"等于l"。因此,如果一個序列有一個正的終止值,而其他序列都有非 正的終止值,"C"復合斷言800以與"yes5"結束點相關聯的結束值結束。 注意為了決定終止值為正的總數是否正好是所定義的數量,復合斷言中的 所有序列都必須執行完畢。
一種"等于N"的特殊情況是N恰為復合斷言中這些序列的總數。這種 情況下,"等于N"意味著為了使復合斷言在該結束點結束,并且結果設 為相應的結束值,復合斷言中的每個序列需要有正的終止值。換句話說,如 果所有序列都運算為正的終止值,則復合斷言在該結朿點處結束。因此從概 念上,這種特例可以看成把邏輯"AND"操作應用到復合斷言中的這些序列 上。"=N"或者邏輯標識"A"可以用于表達"AND"條件。圖9中顯示了 復合斷言"D" 900,其有一個"A"結束條件901。
結束條件可以定義為"小于等于N",其中N是一個正數。如果以正的 終止值結束的序列總數小于或者等于N,整個復合斷言就結束,其結果設為與該結束點相應的結束值。如圖10所示,結束點IOOI有一個定義為"《2" 的結束條件,這代表"至多有2個"。因此,如果1個或者2個序列有正的
終止值,而其他的序列有非正的終止值,"E"復合斷言1000就結束,其結 果設為與"yes5"結束點相關聯的結束值。
除了用戶定義的結束點, 一個復合斷言總是有一個預定義的間接的隱含 結束點。該隱含結束點的名字是"No",結束條件是"Else"。當所有的序 列都結束并且用戶定義的結束條件沒有一個有正的結果值,復合斷言就會在 這個隱含的結束點處結束,其結果則設為與"No"結束點相關聯的結束值。 例如,如果圖IO所示的"E"復合斷言1000的所有序列中,有正的終止值的 序列多于3個,那么唯一的由用戶定義的結束點1001的結束條件"《2"不 為真。因此,"E"復合斷言結束,其結果設為"No"結束點的結束值。每個 用戶定義的結束點都有一個正的結束值,而隱含的"No"結束點則有一個非 正的結束值。另外,和其他用戶定義的結束點不同的是,該隱含結束點是不 顯示在復合斷言框中的。
如前所述, 一個復合斷言可以包含多個子斷言。因為每個子斷言既可以 是簡單的也可以是復合的,故一個復合斷言可以是嵌套的。圖ll顯示了一個 嵌套斷言的例子,"predl" 1100包含了3個子斷言,"Sub-predl" 1101、
"Sub-pred2"和"Sub-pred3" 。 "Sub-predl" 1101是一個復合斷言,包含 了 2個子斷言"Sub-pred4"和"Sub-pred5" 。"Sub-pred4" 和
"Sub-pred5"中的每一個又可能是復合斷言,這樣就構成一個嵌套子斷言的 層次。
我們也可以將復合斷言的圖形化語言按照以下方式來簡化1)如果一個 間接結束點的結束條件中定義了某個終點的名字,該間接結束點可以轉變成 一個直接結朿點,這就從圖中消除了終點和結束條件。如圖11所示,結束點 1104的結束條件定義了當一個序列到達"EP1"終點時,復合斷言就結束。 為了將之轉化為一個直接結束點,遷移箭頭1102可以一直擴展到"Yes"結束點。如圖12所示,遷移箭頭1202連接了源頭子斷言"Sub-pred2",指向 "Yes"結束點1203。
2) "Yes"通常是一個默認的選擇,所以在圖中可以省略掉。換句話說, 在可以定義"Yes"卻沒有定義任何名字的地方,就相當于在這里定義了
"Yes"。例如,圖13中顯示了圖12中顯示的同樣的"Predl"的簡化版。圖 13中,省略了 1203結束點的名字"Yes"和"Yes"遷移條件1202。
3) 如果一個結束點在源頭子斷言中是顯示出來的,從該結束點指向下一個 子斷言的遷移箭頭的遷移條件就可以省略。例如,圖14中,結束點1402是 顯示出來的,因此遷移箭頭1401的遷移條件是可以省略的。
4) 如果一個遷移箭頭的遷移條件為"Yes"并指向一個終點,這個遷移箭 頭、其遷移條件和該終點都可以一起省略掉。如圖15所示,"Pred2"復合斷 言有l個子斷言"Sub-pred2",它有一個以"Yes"為遷移條件的,并且指向 終點1502的遷移箭頭1501。則其遷移箭頭、遷移條件和終點都可以被省略掉, 如圖16所示。從另外一方面來看,如果一個順序型的子斷言,比如
"Sub-pred2" 1603,沒有任何用戶定義的往外的遷移箭頭,那么就假定其有 一個往外的遷移箭頭,該遷移箭頭以"Yes"為遷移條件,并指向一個"Yes" 終點。
5) 如果一個復合斷言只有一個用戶定義的結束點,并且以邏輯"AND" 作為其結束條件,則該結束點可以省略。例如,圖17顯示了省略了2個結束 點的"Pred2"復合斷言,如圖16所示,1601、 1602都有"A"結束條件。 從另外一方面來看,如果一個復合斷言沒有任何用戶定義的結束點,則可以 假定該結束點有一個"A"結束條件和一個"Yes"名字,比如"Pred2" 1700。
至此為止,我們介紹了復合斷言的定義。但是,如前所述,當斷言用于 定義一個應用系統的行為時,斷言既可以是復合的也可以是簡單的。為了對 斷言有個全面的描述,在這里也描述下簡單斷言的特性。和復合斷言不同,簡單斷言不能再進一步分解為更小的組件。因此,簡 單斷言顯示為一個帶名字的框或者框中的簡單斷言表達式,比如"i>3"。如
圖18中,"P" , "Q" , "i>3" , "S" , "T"和"U"都是簡單斷言。
作為一種斷言,簡單斷言和復合斷言有一些同樣的特性。和復合斷言類 似, 一個簡單斷言也可能有多個正的結果和一個非正的結果。其中每個可能 的值可以視作是與該簡單斷言中的多個抽象結束點相關聯。而這些抽象結束 點的名字則可以用作從該簡單斷言指向一個目標子斷言的遷移條件。例如,
圖18所示,簡單斷言"P"執行之后,如果其結果是與"yesl"抽象結束點所 相關聯的值,下一步要執行"Q"斷言。如果其結果是與"yes2"抽象結束點 所相關聯的值,下一步要執行"i>3"斷言。如果"P"的結果是非正的,下一 步將執行"S"斷言。
圖19中,用一個DSC圖來圖形化地顯示了針對一個名為"pred"的斷言 的運算過程"evalPred"。因為復合斷言中的每個直接結束點可以轉換為間接 結束點,為方便起見,該運算過程假定所有的直接結束點都己轉換成間接結 束點了。因此,該運算過程只須處理間接結束點即可。另外,因為每個并行 子斷言可以視為一個序列,所以該過程只需要運算序列即可。
該過程啟動時,從起點1901開始。如果"pred"是一個簡單斷言,"pred" 被直接執行,然后設置"結果"屬性并結束;如果"pred"是一個復合斷言, 檢查當前序列1902。如果沒有序列需要執行,序列執行過程就在1903處結束。 否則,從起點1904開始執行該序列。并對該序列中的當前子斷言遞歸地調用 同樣的執行過程"evalPred" 1900。
序列中的當前子斷言執行后,從起點1905開始,將第一個遷移設為當前 遷移箭頭,然后檢驗每個遷移條件。這有三種可能1)如果遷移條件為假, 則將下一個遷移設為當前遷移箭頭,然后重復執行。2)如果遷移條件為真, 將該遷移箭頭的目標設置為當前子斷言。如果新的當前子斷言不是一個終點, 該過程在l卯6處結束,并且重復執行新的當前子斷言。否則(如果新的當前子斷言是一個終點),它記錄下終點的終止值,并且在1907處結束來檢驗每個結 束條件。3)如果沒有更多的遷移條件需要被檢驗,該過程則記錄下隱含終點 的終止值,并且在1卯7處結束。
執行完每個序列之后(在1907處結束),該過程會檢驗每個結束條件。
如果有任何結束條件為真,將其"結果"設為與該結束點相關聯的結束值,
并且整個運算在1913處結束。否則,在1908處結束,繼續檢查下一個序列 1902。
執行完所有的序列之后,如果不滿足任何結束條件,將"pred"斷言的"結 果"設置為與"No"結束點相關聯的結束值,并且整個運算在1910處結束。
在用各種抽象例子描述了復合斷言的功能后,為了進一步澄清如何在軟 件中應用復合斷言,讓我們看一個具體的例子。假定一個慈善組織需要決定 一項補助金申請是否被批準;如果一個申請被批準,應當批準多少補助金。 該慈善組織可以使用復合斷言"審查"520來檢驗每個中請,如圖5B所示。 如果申請者是女性并且處于懷孕狀態,"審査"運算為與直接結朿點 "$400"相關聯的結束值。(圖5B中在525處結束。)如果申請者的年齡低 于12歲,"審查"運算為與間接結束點"$400"相關聯的結束值。(圖5B 中在522處終止,然后在526處結束。)如果申請者的年齡不低于12歲但處 于貧窮狀態,"審査"運算為與間接結束點"$400"相關聯的結束值。(圖 5B中在523處終止,然后在526處結束。)如果申請者的年齡不低于12歲 并且不處于貧窮狀態,但是為肯尼亞公民或者剛果公民,"審查"運算為與 間接結束點"$100"相關聯的結束值。(圖5B中在524處終止,然后在527 處結束。)如果申請者不屬于上面的任何情況,"審査"運算為與隱含的 "No"結束點相關聯的結束值。
為了進一步澄清本發明,圖5B 520中的"審查"的行為可以用如下偽代 碼來表示
審査(){if(性別==女&&狀態懷孕)return批準400;
if (年齡< 12) return批準400;
if(年齡> 12&&狀態==貧窮)return批準400;
if(年齡> 12 &&狀態!二貧窮){
if(公民==肯尼亞II剛果))return批準100;
}
return ru^
本發明中描述的復合斷言可通過以下方式應用在一個擴充的DSC圖中 1)復合斷言可用于定義一個決策點,來從多個后續的子DS中選擇下一個該 執行的子DS。如圖20所示,復合斷言"Dl" 2000有一個由兩個順序型子斷 言構成的序列。這些子斷言是"more "禾卩"true " 。 "Dl"復合斷言首先 運算"more "子斷言。如果"more "結果非正,"Dl"在"noMore"結束 點處結束。否則,下一步將執行"true "子斷言。如果"true "結果是非正 的,"Dl"在"false"結束點處結束。否則它在"true"結束點處結束。
如圖20,定義了 "Dl"復合斷言2000, "B" 2002執行后,名為"Dl" 的復合斷言可用作一個決策點2001。決策點"Dl" 2001有3個往外的箭頭, 叫做"false" 、 "true",和 "noMore"。如果"Dl"運算的結果值為 "false",下一步將執行"A" 2003。如果"Dl"運算的結果值為"true", 下一步將執行"C" 2004。如果"Dl"運算的結果值為"noMore",下一步 將執行"E" 2005。
2)復合斷言的細節也可以在決策點處定義。例如,圖21顯示了決策點被 定義為一個帶有3個往外的箭頭的復合斷言"Dl" 2101,其中每個往外的箭 頭從復合斷言的一個結束點指向下一個子DS。
復合斷言在其他圖形語言中的用法
除了將圖形化的斷言擴展到DSC之外,本發明中的復合斷言也可以用于取代一個流程圖中的一個文本的布爾型表達式,比如UML活動圖(UML Activity Diagram)或者BPMN。后文中,當描述BPMN組件時將采用BPMN 的原文術語;而當描述UML組件時將采用UML的原文術語。
在UML活動圖中,圖20中所描述的同樣的行為可以依照圖22中所示在 UML活動圖的一個擴展版中來定義。圖22的右圖定義了一個名為"Dl"的 復合斷言2200,決策節點2201顯示為名字為"Dl"的復合斷言。注意因 為UML活動圖用圓角矩形表示Activity,為了和一般Activity區分開來,斷 言2200可以用尖角矩形表示。
UML活動圖中使用復合斷言的另一種方式是將復合斷言看做一個常規的 Activity node。圖23顯示了 "Dl"復合斷言2300可以作為"B" Activity的 ActivityEdge所指向的一個目標Activity2301 。 一個往外的ActivityEdge將 "Dl" Activity連接至lj一個decision node, 然后該decision node基于 "Dl" Activity 2301的結果制定決策,從其三個往外的ActivityEdge中選擇 一個來執行。
在BPMN中,圖20中描述的同樣的行為可以依照圖24所示在BPMN圖 的一個擴展版本中來定義。"Dl"復合斷言2400可用于定義BPMN中 Complex Gateway2401中的OutgoingCondition屬性。Complex Gateway有多個 往外的sequence flow,復合斷言的每個特定結果值可以定義在這些sequence flow的ConditionExpression屬性中。例如,圖24中,"false" , "true"禾口 "noMore"是Complex Gateway "Dl" 2401的往外的sequence flow。注意 因為BPMN用圓角矩形表示Activity,為了和一般Activity區分開來,復合斷 言可以用尖角矩形表示,比如"D1" 2400。
本發明中,在BPMN中使用復合斷言的另一種方式是將之看作一個一般 Activity。如圖25所示,"Dl"復合斷言2500作為"B" Activity的往外的 sequence flow的目標活動2501。 "Dl" 2501有3個往外的conditional sequence flow,卩^1做2502, 2503禾口 2504。 conditional sequence flow的ConditkmExpression屬性定義了如果"D1"復合斷言運算結果為某個值, 相關聯的的s叫uenceflow將會被執行。例如,"false" ConditionExpression屬 性定義了 "D1"的結果有一個與"D1"的"false"結束點相關聯的結束值。 如果該表達式為真,則下一步將執行"A" Activity。
一個流程圖經過如前所述的擴展后,雖然可以成為支持復合斷言的圖形 語言,比如UML活動圖和BPMN,但有些設計者可能不喜歡這種方式,因為 上面描述的圖形語言使用了和該流程圖本身不同的風格。如果設計者需耍先 用該流程圖的風格來定義一個應用行為,然后再轉用上面描述的DSC風格來 定義一個復合斷言,設計者可能會感到困惑。 一個更好的方法是在已有的流 程圖中以一種更一致的方式來支持復合斷言。
在擴展的BPMN中模擬復合斷言
這部分描述了如何擴展BPMN,以一種比DSC方式更類似于BPMN的方 式來模擬一個復合斷言。為了模擬復合斷言,下面的新組件可以加入到BPMN 中1)用來模擬復合斷言的"復合斷言活動",2)用來模擬序列的"序列 框",3)用來模擬復合斷言中簡單子斷言的"簡單斷言活動"。另外,需要 一種模擬"結果"屬性、終點和結束點功能的方法。為了簡化起見,復合斷 言活動和簡單斷言活動也被叫做斷言活動。
復合斷言活動是用于模擬一個復合斷言的。 一個復合斷言活動是加入到 BPMN中的一個特殊的sub-process。它可以有一個"結果"屬性來模擬復合斷 言中的"結果"屬性,來存儲它結束后的結果值。另外, 一個復合斷言活動可 以包含多個序列框,多個斷言活動, 一個結束—Gateway和多個Final Event, 其中每一個斷言活動模擬了一個并行子斷言。例如,圖4中所示的"PredO"復 合斷言400可以由圖27所示的BPMN的復合斷言活動2700來模擬。
對于復合斷言中的每個序列,復合斷言活動都有一個序列框來模擬該序 列。該序列框和BPMN中一般的Activity相似,但有一點除外抵達序列框 里面的一個End Event時,不僅會終止序列框,還會終止包含它的模擬復合斷言的復合斷言活動。為了與一般的Activity相區分,序列框可以顯示為一個虛 線框2701,如圖27所示。復合斷言中的每個序列都由這樣一個序列框來模擬, 該序列框帶有一個sequence flow來指向一個用來接合的Gateway。例如,序 列框2701模擬了圖4中"PredO"復合斷言的第一個序列,而另一個序列框 2702模擬了圖4中的"PredO"復合斷言的第二個序列。這些序列框都有一個 sequence flow來指向用來接合的Gateway2707。
復合斷言的整個序列可以在BPMN中由序列框內部的一系列斷言活動來 模擬,其中每個斷言活動模擬了序列中的一個順序型子斷言。如果順序型子 斷言是簡單斷言,它就由簡單斷言活動來模擬。否則就由復合斷言活動來模 擬。序列框里面的這些斷言活動由conditional sequence flow連接起來。如圖 27所示,斷言活動"Sub-pred3" 2703和"Sub-pred4" 2704模擬了圖4中 同名的子斷言。圖4屮的"TransCond4"遷移是由圖27中的名為 "TransCond4 ,,的conditional sequence flow模擬的,該conditional sequence flow由源頭斷言活動"Sub-pred3" 2703指向目標斷言活動"Sub-pred4" 2704。和每個conditional sequence flow相關聯的ConditionExpression屬性則 描述了和復合斷言中的遷移相關聯的遷移條件。
為了模擬序列中的終點,可以把一個新的Event類型——終點事件加到 BPMN中。 一個終點事件和被模擬的終點有同樣的名字。當到達序列框中的一 個終點事件時,序列框終止,記錄下剛到達的終點事件的名字或其內部的代號, 使得后來的結束條件可以檢驗復合斷言中每個序列的終止狀態。為了和BPMN 中的其他Event相區分,終點事件可以顯示為0 。復合斷言中,指向終點的遷 移箭頭由指向這樣一個終點事件的conditional sequence flow來模擬。例如,圖 27中名為"EP2"的終點事件2705模擬了圖4中的"EP2"終點。
雖然BPMN要求把所有的sequence flow都顯式地定義出來,但為了簡化 圖形,序列框支持復合斷言的隱含終點行為,而不在擴展BPMN圖中顯示出 隱含終點。換句話說, 一個在其ConditionExpression屬性中定義了 "else"的conditional s叫uence flow會被自動添加到每個源頭斷言活動中,并且該 conditional sequence flow指向一個名字為"No"的隱含的終點事件。當一個 源頭斷言活動結束之后,如果其用戶定義的遷移條件都不為真,序列框會在 隱含的"No"終點處終止,并且將這個隱含終點事件的名字或其內部的代號 記錄下來,以備稍候使用。如圖27所示,"Sub-pred3" 2703有2個遷移條 件,叫做"TmnsCond3" 和"TransCond4"。雖然沒有顯示出來,
"Sub-pred3"也有一個隱含的conditional sequence flow指向一個名為"No" 的隱含終點事件。因此,"Sub-pred3" 2703結束之后,如果"TransCond3" 和"TransCond4"都不為真,序列框2702在隱含的終點事件處終止。
如果復合斷言中的并行子斷言是一個簡單斷言,它就由一個簡單斷言活 動來模擬。否則就由一個復合斷言活動來模擬。這兩者都有一個指到一個用 來接合的Gateway的往外的sequence flow。例如,圖4中的并行子斷言
"Sub-pred5"由圖27中的"Sub-predicate5" 2706模擬,它既可以是一個簡 單斷言活動,也可以是一個復合斷言活動,這取決于被模擬的并行子斷言是 簡單的還是復合的。它還有一個從它指向用來接合的 Gateway2707的 sequence flow。
把所有序列框和模擬并行子斷言的斷言活動接合起來的Gateway叫做結 束-Gateway,這是一個加入BPMN的新的Gateway類型。為了和BPMN中 的其他Gateway相區分,結束一Gateway可以顯示為一個菱形,菱形內部為 " "。 一個結束一Gateway有多個往內的和多個往外的sequence flow。每個 往內的s叫uence flow從一個序列框或者一個模擬并行子斷言的斷言活動連接 過來。每個往外的s叫uence flow則指向一個End Event,該End Event模擬了 復合斷言中的 一 個間接結束點。每個往外的sequence flow有 一 個 ConditionExpression屬性,該屬性定義了與結束點相關聯的結束條件,而該結 束點由sequence flow所指向的End Event來模擬。例如,圖4中的"Resultl" 結束點由圖27中的"Resultl" End Event來模擬,"ExitCondl"結束條件由ConditionExpression屬性"ExitCond 1"來模擬,并且被關聯到圖27中的往外 的s叫職ce flow2708。
結束一Gateway的行為會一直等待,直到從各個序列框和模擬并行子斷言 的斷言活動中都收到一個token后,然后再從其往外的sequence flow中選出 下一個。如果有任何ConditionExpression屬性為真,則選擇其sequence flow, 并開始執行該sequence flow所指向的End Event。 End Event開始時,包含它 的復合斷言活動就結束了,其"結果"屬性設為與被模擬的結束點相關聯的 結束值。
結束點的名字是在模擬結束點的End Event的Name屬性中定義的。例如, 圖27中的End Event, "Resultl"和"Yes",各自對應于圖4中同名的各
個結束點。
為了模擬一個復合斷言完整的功能,每個往外的sequence flow的 ConditionExpression屬性可以定義為運算為正值的序列的數量。如前所述,它 包括等于N,大于等與N,小于等于N。而ConditionExpression屬性的句法 需要遵從在BPMN中業務流程圖屬性的ExpressionLanguage中所定義的語言。
在BPMN中,復合斷言的直接結束點可以由End Event來模擬,并且這 個End Event被一個來自模擬其源頭順序型子斷言的斷言活動的conditional s叫uence flow所指向。該End Event可以顯示在包含了模擬源頭順序型子斷言 的斷言活動的序列框里面。如圖27所示,"Sub-pred2" 2709有一個 conditional sequence flow2710直接指向"ResultO" End Event 2711 ,它模擬了 圖4中的直接結束點"ResultO" 410。 "Sub-pred2" 2709執行完之后,如果 "TransCond2" 2710為真,則到達"ResultO" 2711。 "ResultO" End Event 2711會終止包含它的復合斷言活動,并且其結果設為與圖4中"ResultO"結 束點相關聯的結束值。
如前所述,如果在復合斷言中沒有用戶定義的結束點,就假定一個將結 束條件定義為"A"、而將其名字定義為"Yes"的結束點。該結束點是由一個conditional-sequence-flow來模擬的,該conditional-sequence-flow從結束 -gateway指向一個End Event,其名字屬性定義為"Yes"。這個 conditional-sequence-flow的ConditionExpression屬性用表達式語言的句法被 定義為"如果所有模擬并行子斷言的斷言活動和序列框的運算結果都為 正。"如圖28所示,在DSC語言中, 一個復合斷言"D2" 2800有3個子斷 言"P" , "Q"和"R",而沒有用戶定義的結束點。圖29顯示了 DSC中帶 有"Yes"結束點的同樣的復合斷言"D2" 2卯0,將"A"作為其結束條件 明確地顯示出來。圖30顯示了復合斷言"D2" 2900在BPMN中如何被模擬 為復合斷言活動3000。特別是,"Yes"結束點被一個conditional sequence flow 所模擬,該conditional s叫uence flow來自結束一Gateway 3001,指向名字屬性 定義為"Yes"的End Event3002 。這個conditional-sequence-flow的 ConditionExpression屬性是"全為正",它定義了以下的條件——"如果所 有的序列框和模擬并行子斷言的斷言活動的執行結果都為正",該條件是依 照BPMN業務流程圖中指定的ExpressionLanguage的句法來定義的。
如果一個復合斷言只有直接結束點,在BPMN中模擬這種復合斷言時, 不必使用結束—Gateway。另夕卜,每個代表序列框的虛線框也可以省略。如圖 31所示,用DSC描述的復合斷言"Pred5" 3100有2個序列和4個直接結束 點,這4個直接結束點叫做"Result0" , "Result 1" , "Result2" 和 "Result3"。圖31中的"Pred5" 3100可以由圖32所示的BPMN中的 "Pred5"復合斷言活動3200模擬,而不需要結束一Gateway。圖32中的 "Sub-predl" , "Sub-pred2" , "Sub-pred3",禾B "Sub-pred4"都是復合活 動,這些復合活動模擬了圖31中"Pred5"復合斷言3100的子斷言。
BPMN中可以用一個"簡單斷言活動"來模擬一個"簡單斷言"。簡單 斷言活動是BPMN中一種特殊的Task類型。和復合斷言活動一樣, 一個簡單 斷言活動可以有一個"結果"屬性。一個簡單斷言活動完成之后,其"結果" 屬性可以設為一個正值或一個非正值。復合斷言活動在擴展版的BPMN中的應用方式類似于復合斷言在圖24 中的用法。在BPMN中, 一個復合斷言活動可用于定義一個Complex Gateway 的OutgoingCondition屬性,并且該Complex Gateway可以用作一個決策 Gateway。例如,圖33中的Complex Gateway3300的OutgoingCondition屬性 被定義為圖27中的"Pred0"復合斷言活動2700。根據其"結果"屬性的值, 從"A" , "C"和"E"中選擇一個作為下一步要執行的Activity。
圖34顯示了使用復合斷言活動進行決策的另一種方式。類似于圖25中 所示的如何將一個復合斷言當作一般Activity的使用方法,圖27中定義的 "Pred0"復合斷言活動2700在圖34中作為從"B" Activity指向外的 sequence flow的目標Activity3400。 "Pred0"復合斷言活動有3個指向外的 conditional sequence flow。每個conditional sequence flow的ConditionExpression 屬性定義了如果"Pred0"的"結果"屬性有與某個結束點相關聯的結束值, 那么執行相應的sequence flow。
在UML活動圖的擴展版中模擬一個復合斷言
本部分描述了如何擴展UML活動圖來模擬一個復合斷言,使其風格相 比較于DSC風格更能一致于UML風格。為了模擬復合斷言,以下新的組件 可以作為擴展添加到UML中1)模擬一個復合斷言的復合斷言節點;2)模 擬一個序列的序列框;3)模擬一個簡單子斷言的簡單斷言節點。另外,需要 一種方法來模擬結果屬性、終點和結束點的功能。為了簡化起見,復合斷言 節點和簡單斷言節點都被叫做斷言節點。
一個復合斷言節點是用于模擬一個復合斷言的。 一個復合斷言節點是添 加到UML中的一種特殊Activity。它可以有一個"結果"屬性來模擬復合斷 言的"結果"屬性以存儲它終止后的結果。另外, 一個復合斷言節點包含了 多個序列節點,多個模擬并行子斷言的斷言節點,每個斷言節點既可以是一 個簡單斷言節點,也可以是一個復合斷言節點、 一個joinnode、 一個decision node和多個ActivityFinalNodes。例如,圖35中用UML表示的復合斷言節點3500模擬了圖4中的"PredO"復合斷言400。
復合斷言節點包含一個模擬復合斷言中每個序列的序列框。該序列框類 似于UML中其他的普通Activity,唯一不同的是當抵達里面的一個 ActivityFinalNode時,不只是序列框終止,包含它的復合斷言節點也將終止。 為了和其他普通的Activity相區分,該序列框可以顯示為一個虛線框,如圖 35中3501所示。復合斷言屮的每個序列由這樣一個序列框模擬,該序列框有 一個指向一個join node的往外的ActivkyEdge。例如,圖35中的序列框3501 模擬了圖4中的"PredO"復合斷言中的第一個序列,序列框3502模擬了第二 個序列。每個序列框有一個指向joinnode3503的往外的ActivityEdge。
在UML中,復合斷言中的整個序列可以由序列框中一系列的斷言節點來 模擬,而每個斷言節點模擬序列中的一個順序型子斷言。例如,圖35中的
"Sub-pred3" 3503和 "Sub-pred4" 3504模擬圖4中的"Pred0"復合斷言 400的第二個序列的這些同名子斷言。如果圖4中的"Sub-pred3"是一個簡 單斷言,圖35中的"Sub-pred3" 3503是一個簡單斷言節點。否則,
"Sub-pred3" 3503是一個復合斷言節點。
在一個序列內部,從一個源頭指向一個目標的一個遷移箭頭在UML中被 一個從模擬源頭的斷言節點指向一個決策節點的ActivityEdge及其往外的 ActivityEdge所模擬。另外,和遷移箭頭相聯系的遷移條件在UML中由模擬 遷移箭頭的往外的ActivityEdge的guard所模擬。例如,圖4中的遷移條件
"TransCond3" 和 "TransCond4"的遷移箭頭由一個指向一個decision node 3505的ActivityEdge來模擬,后面一個將帶有[TransCond3]的往外的 ActivityEdge作為其guard,另一個將帶有[TransCond4]的往外的ActivityEdge 作為其guard,如圖35所示。
序列中的終點可以由UML中的FlowFinalNode模擬。例如,圖4中的
"EP2"終點被圖35中有同樣的名字的FlowFinalNode3506所模擬。當到達 FlowFinalNode時,序列框終止, 一個token被送往join node,并記錄下被模擬的終點名字或其內部的代號。稍后,結束條件將會用到這些信息。
序列中隱含終點的行為在UML中可以通過以下方式來模擬若模擬一個
源頭子斷言的遷移條件的每個往外的ActivityEdge的所有guard都不滿足,則 終止該序列框,并且記錄下隱含終點名字或其內部代號,稍后結束條件檢驗 時會用到。如圖35所示,"Sub-pred3" 3503完成之后,檢査每個往外的 ActivityEdge的guard,比如[TrasnsCond3]禾B [TransCond4]。如果都不為真, 終止序列框3502,并記錄其隱含的終點名稱或其內部的代號。
直接結束點可由序列框里面的ActivityFinalNode來模擬。當 ActivityFinalNode執行時,終止包含它的復合斷言節點,并且將復合斷言節點 的"結果"屬性設為與ActivityFinalNode所模擬的結束點相關聯的結束值。 例如,圖4中的直接結束點"ResultO" 410是由從decision node 3509指向的 "Result0" ActivityFinalNode3501戶7f豐莫擬的。該decision node有一個帶有 [TransCond2]guard的往夕卜的ActivityEdge 。
如果[TransCond2]為真, "Result0" ActivityFinalNode 開始執行。當它開始的時候, "Result0" ActivityFinalNode終止了 "Pred0"復合斷言節點,并且設其"結 果"屬性為與"Result0" ActivityFinalNode所模擬的結束點相關聯的結束值。 在UML中,由斷言節點來模擬復合斷言中的并行子斷言,該斷言節點既 可以是簡單斷言節點,也可以是復合斷言節點,這取決于被模擬的子斷言是 簡單的還是復合的。 一個模擬并行子斷言的斷言節點有一個和被模擬的子斷 言有同樣的名字以及一個指向join node的往外的ActivityEdge。例如,圖4 中的并行子斷言"Sub-pred5"由圖35中的"Sub-pred5"節點3507模擬。如 果圖4中的"Sub-pred5"子斷言是一個簡單斷言,則圖35中的"Sub-pred5" 是一個簡單斷言節點。否則,圖35中的"Sub-pred5"是一個復合斷言節點。 將所有序列框和模擬并行子斷言的斷言節點都合并在一起的join node有 一個默認為"and"的JoinSpec,使得當來自每個序列框或者模擬并行子斷言 的復合節點的token都抵達時,join node就完成了。例如,圖35中的join節點3503有默認的JoinSpec。
在UML中, 一個復合斷言的間接結束點的模擬方式如下 一個 ActivityEdge從join node指向一個decision node, 再從該decision node用 ActivityEdge指向ActivityFinalNode 。每個間接結束點是由 一 個往外的 ActivityEdge從decision node指向一個ActivityFinalNode來模擬的。每個結束 點的結束條件則由指向一個模擬結束點的ActivityFinalNode的ActivityEdge 的guard來模擬。當一個ActivityFinalNode執行時,包含它的復合斷言節點就 終止,并且設其"結果"屬性為與該ActivityFinalNode所模擬的結束點相關 聯的結束值。如圖35所示,join node3503有一個往外的ActivityEdge指向了 一個decision node3508。 decision node3508有~^個帶有[ExitCond l]guard的往 外的ActivityEdge指向了名為"Resultl"的ActivityFinalNode。它模擬了圖4 中"Pred0"復合斷言400中的 "Resultl" 結束點411。 decision節點3508 有另一個帶有"ExitCond 2" guard的往外的ActivityEdge指向了另 一個名為 "Yes"的ActivityFinalNode。它模擬了圖4中的"Yes"結束點412。
復合斷言的隱含結束點的行為在UML中可以用如下方式來模擬如果 decision node的所有往外的ActivityEdge的guard都不為真,包含它的復合斷 言節點被終止,其"結果"屬性設為與隱含結束點相聯系的結束值。如圖35 所示,如果[ExitCond 1]禾卩[ExitCond 2]都不為真,"Pred0"復合斷言節點 3500終止,其"結果"屬性被設為與隱含結束點相關聯的結束值。
基于同樣的方法,圖29中的"D2"復合斷言可以由圖36中的"D2"復 合斷言節點3600來模擬。更明確地來說,"Yes"結束點是如下來模擬的 從decision node 3601有一個往外的指向"Yes" ActivityFinalNode3602的 ActivityEdge,并且這個往外的ActivityEdge的guard是[全為正],這意為"如 果所有的序列框和模擬并行子斷言的斷言節點都運算為正的結果。"
如果一個復合斷言所有的結束點都是直接結束點,那么在UML中模擬這 個復合斷言時不必有join node和decision node。另外,每個代表序列框的虛線框也可以省略掉。例如,圖31中的"Pred5"復合斷言可以由以UML圖37 中的"Pred5" 3700復合斷言節點來模擬。圖37中的"Sub-predl",
"Sub-pred2" , "Sub-pred3",和"Sub-pred4"模擬了圖31中"Pred5"復 合斷言3100中的同名子斷言。圖37中的每個ActivityFinalNode,比如
"ResultO" 、 "Resultl"和"Result3"則模擬了圖31中"Pred5"復合斷言 3100的同名結束點。
在UML中,可用簡單斷言節點來模擬復合斷言中的簡單子斷言。簡單斷 言節點是UML中一種特殊的Action類型,它有一個"結果"屬性。當簡單 斷言節點執行完成之后,其結果可以設為一個正值或者一個非正值。
復合斷言節點在擴展后的UML中的使用方式和圖23中所示的使用復合 斷言的方式一樣。圖38A顯示了圖35中的"PredO"復合斷言節點3500是 如何被用作一個decision node3800,來從"A" , "C"和"E"中選擇下一步 要執行的Activity。該"PredO"復合斷言節點模擬了圖4中的"PredO"復合 斷言400。
圖38B顯示了使用復合斷言節點來制定決策的另一種方式。和圖25所示 的將復合斷言作為一個Activity的用法類似,圖35中的"PredO"復合斷言節 點3500在圖38B中被用作"B" Activity的往外的sequence flow的目標節點 3801 。 "PredO"復合斷言節點3801有一個往外的edge指向了 decision node3802,并且該decision node有3個往外的ActivityEdge。每個ActivityEdge 的guard定義了如果"PredO" 3801的"結果"屬性運算為與某個結束點相 關聯的結束值,將會執行相關聯的ActivityEdge。
在一種圖形語言中來模擬復合斷言
上述在BPMN和UML中模擬復合斷言的方式可以推廣應用到其他類似 的圖形建模語言中。
為了模擬復合斷言,下面的新組件可以擴展到一種圖形語言中l)模擬 復合斷言的復合斷言節點;2)模擬一個序列的序列框;3)模擬終點的終止節點;4)模擬結束點的結束節點;5) —個聯結了復合斷言節點中所有序列 框和斷言節點的合并分叉節點;6)模擬一個簡單斷言的簡單斷言節點。為了 簡化起見,復合斷言節點和簡單斷言節點也被稱作斷言節點。
在一個圖形語言中, 一個復合斷言節點可以模擬一個復合斷言。 一個復 合斷言節點可以有一個"結果"屬性來存儲它終止后的結果,它模擬了復合 斷言的"結果"屬性。 一個復合斷言節點可以顯示為一個框,它包含了序列 框和模擬并行子斷言的斷言節點。這些模擬并行子斷言的斷言節點和序列框 都由一個合并分叉節點結合起來,該合并分叉節點后面跟著指向多個結束節 點的有條件的箭頭。例如,用一種一般的圖形語言,圖4中的復合斷言 "PredO" 400可以由復合斷言節點"PredO" 3900來模擬,如圖39所示。序 列框3901 、序列框3卯2、模擬并行子斷言的斷言節點"Sub-pred5"和 "Sub-pred6"由合并分叉節點3907結合起來,其后跟著指向結束節點 "Resultl"和"Yes"的有條件的箭頭。注意 一種圖形語言通常用節點 (node)來表示要做的一些活動(activity),而用箭頭來將一個節點連接到另一個 節點。岡為BPMN與一般圖形語言的形式較類似,這里用BPMN的圖形語言 為例來說明在一般的圖形語言中如何模擬復合斷言。
一個序列框可以包含多種類型的節點,包括模擬順序型子斷言的斷言節 點、終止節點和結朿節點,并且每個節點由有條件箭頭連接到其它節點。如 圖39所示,序列框3902包含了模擬順序型子斷言的斷言節點"Sub-pred3" 和"Sub-pred4"、終止節點"EP2"禾B "EP3"以及結束節點"Result3"。 因為模擬斷言節點的每個子斷言也可以是一個復合斷言節點,所以一個 復合斷言節點可以是嵌套的。如圖39所示,"Sub-pred3"可以是一個復合斷 言節點。
復合斷言中的簡單子斷言可以由簡單斷言節點來模擬,簡單斷言節點是 在圖形語言中用來代表單一執行步驟的一個組件,比如BPMN中的Task和 UML中的Action。和復合斷言節點一樣,簡單斷言節點有一個"結果"屬性。執行完之后,其"結果"屬性被設為一個正值或者一個非正值。
雖然在上面的描述中,復合斷言節點中的各個組件是以某種語言來顯示 的,但在本發明的具體實現中,每個組件可以用另一種不同的圖形語言來顯 示而不影響其功能。例如,圖39中的終止節點顯示為《 。但在另一個實施例 中,終止節點可以顯示為實心方框。而在另一個實施例中,終止節點可以顯 示為空心方框。只要每種組件類型都有一個獨特的圖形顯示方法使得它們能 彼此區分開來,本發明的功能就不會削弱。 在一種圖形語言中來模擬復合DS
上文描述了如何在其他圖形語言中來模擬復合斷言。同樣的方法也可以
用在其他圖形語言中來模擬一個復合DS,因為復合DS和復合斷言有幾乎同
樣的復合結構。
復合DS去掉了對復合斷言的某些限制,所以可以看成是對復合斷言的一 種推廣。復合斷言中的每個序列中可能只有一個初始子斷言,而復合DS中的 每個序列中則可能有多個初始子DS。復合斷言中的遷移條件和結束條件有更 多限制,而復合DS中,除了在復合斷言中可以定義的內容之外,其遷移條件 和結束條件還可以用任何復合斷言或者簡單斷言來定義。
由丁其組成結構的相似性,可以把圖19所示的對復合斷言"pred"的執 行過程"evalPred (pred) " 1900修改成描述一個名為"DS"的復合DS的執 行過程evaIDS(DS),只要把過程1900中的每個"pred"或"Pred"都改成 "DS"即可。換句話說, 一個復合DS的執行類似于一個復合斷言的執行。 唯一的不同是evalPred (pred)過程是針對一個復合斷言和其所有的子斷言來 執行,而evalDS(DS)過程則是針對一個復合DS和其所有的子DS來執行。
因此,上述在其他圖形語言中模擬復合斷言的方式可以推廣應用到復合 DS中。 一個圖形語言通常使用節點(node)表示要做的活動,并且通過箭頭把 一個節點連接到另一個節點。因為BPMN類似于此類圖形語言的一般形式, 這里使用BPMN圖形語言作為一個例子來示范如何在此類圖形語言中模擬復 合DS。為了模擬一個復合DS,下面一些新的組件可以擴展到一個圖形語言中
1)模擬復合DS的復合DS節點,2)模擬復合DS中序列的序列框,3)模擬 序列中起點的起始節點,4)模擬序列中終點的終止節點,5)模擬結束點的 結束節點,6)用來結合所有在復合DS中的序列框和模擬并行子DS的DS 節點的合并分叉節點,7)模擬一個簡單DS的簡單DS節點。為了簡化起見, 復合DS節點和簡單DS節點也叫做DS節點。
復合DS節點是用來模擬一個復合DS的。 一個復合DS節點可以有一個 "結果"屬性來模擬復合DS的"結果"屬性,它用來存儲一個復合DS節點 終止后的執行結果。另外, 一個復合DS節點可以包括1)多個序列框,2) 復合DS中多個模擬并行子DS的DS節點,3) —個合并分叉節點,4)多個 間接結束節點。例如,圖3中"DSO"復合DS 300可以由圖40所示的"DSO" 復合DS節點4000來模擬。
復合DS的每個序列都是由復合DS節點中的一個序列框來了模擬的。該 序列框可以有1)多個用來模擬序列中順序型子DS的DS節點,2)將一個 序列框中的DS節點連接起來的箭頭,3)多個起始節點,4)多個終止節點, 5)多個直接結束節點。 一個序列框可以顯示為虛線框,并且由一個往外的箭 頭連接到合并分叉節點。例如,圖40中的序列框4001模擬了圖3中"DSO" 復合DS 300中的第一個序列,而序列框4002則模擬了第二個序列。圖40中, 每個序列框都有1個往外的箭頭指到合并分叉節點4007上。
一個序列框中,每個DS節點都模擬了序列中的一個順序型子DS。例如, 在序列框4002中,圖40中的"Sub-DS3" , "Sub-DS4"和 "Sub扁DS5"模 擬了圖3中"DSO"復合DS 300的第二個序列中的各個同名的子DS。如果 一個子DS是簡單DS,則由一個簡單DS節點來模擬。否則,由序列框中的 一個復合DS節點來模擬。
序列中的起點可以由起始節點來模擬。例如,圖3中的起點309由圖40 中的起始節點4009來模擬。一個序列中從一個源頭指向多個目標的每個遷移箭頭都是由一個從模擬 源頭的節點指向一個模擬目標的節點的箭頭來模擬的。另外,和每個遷移箭 頭相聯系的遷移條件則用一個與箭頭相關聯的條件屬性來模擬。這個條件屬
性可以顯示在箭頭附近。例如,圖3中的"cond3"遷移在圖40中是由從起 始節點4009指向"Sub-DS3"的箭頭來模擬的,其條件屬性"cond3"則顯示 在箭頭附近;圖3中的"cond4"遷移在圖40中是由從起始節點4009指向 "Sub-DS4"的箭頭來模擬的,其條件屬性"cond4"則顯示在箭頭附近。另 一個例子巾,圖3中的遷移"TransCond3"和 "TransCond4"是由指向 "EP2" 4003和指向"Sub-DS5"的箭頭來模擬的,如圖40所示。
序列中的終點可以由終止節點來模擬。為了將終止節點和起始節點及結 朿節點區分開來,終止節點可以顯示為《> 。例如,圖3中的"EP2"終點307 在圖40中由同名的4003終止節點來模擬。當到達終止節點時,模擬一個終 點的終止節點需要記錄它所模擬的終點的名字或其內部代號。該信息后面將 被每個結束條件使用,來檢驗復合DS是否應當在其對應的結束點處結束。
一個序列中,隱含終點的行為是這樣來模擬的源頭執行完之后,如果 源頭的每個往外的箭頭的條件屬性都不滿足,模擬該序列的序列框就終止了 , 并且記錄下其隱含終點的名字或其內部的代號,以備后面被結束條件檢查。 如圖40所示,"Sub-DS3"完成之后,檢驗每個往外的箭頭的條件屬性,比 如"cond5"和"cond6"。如果它們都不為真,序列框4002就終止,并且記 錄下其隱含的終點名稱或其內部的的代號。
直接結束點是由一個序列框內部的結束節點來模擬的。當這個結束節點 執行時,包含它的復合DS節點就終止了,將其"結果"屬性設為被與該結束 節點所模擬的結束點相關聯的結束值。例如,圖3中的直接結束點"Result0" 311在圖40中是用"Result0"結束節點4011來模擬的。如果"cond2" 4010 為真,"Result0"結束節點4011開始執行,它終止了 "DS0"復合DS節點 4000,并且將其"結果"屬性設為與被"Result0"結束節點所模擬的結束點相關聯的結束值。
復合DS中每個并行子DS既可以由一個簡單DS節點來模擬,也可以由
一個復合DS節點來模擬,這取決于該并行子DS是簡單的還是復合的,并且 模擬子DS的這個DS節點只有一個指向合并分叉節點的往外的箭頭。例如, 圖3中,并行子DS "Sub-DS6"在圖40中是用"Sub-DS6" 4006來模擬的, 它既可以是復合DS節點,也可以是簡單DS節點,這取決于圖3中的 "Sub-DS6"是簡單的還是復合的。
用來結合復合DS中所有序列框和模擬并行子DS的DS節點的合并分叉 節點有如下行為當每個序列框或者模擬并行子DS的DS節點終止時,所有 合并分叉節點的往外的箭頭的條件屬性都會被檢査。如果這些條件屬性中有 任何一個為真,包含它的復合DS就結束,并且其"結果"屬性被設為與由帶 有"真"條件屬性的結束節點模擬的結束點相關聯的結束值。否則,合并分 叉節點會繼續等待。在本圖形語言的實施例中,合并分叉節點顯示為里面為 " "的菱形。例如,圖40中,合并分叉節點4007合并了序列框4001和4002, 以及"Sub匿DS6" DS節點4006。
復合DS的一個間接結束點可以由一個結束節點來模擬,該結束節點有一 個來自合并分叉節點并指向它的箭頭。每個結束點的結束條件由一個條件屬 性來模擬,這個條件屬性和指向相對應的結束節點的箭頭是相關聯的。當執 行到一個結束節點時,包含它的復合DS節點就終止了,并且包含它的復合 DS節點的"結果"屬性被設為與被模擬的結束點相關聯的結束值。如圖40 所示,合并分叉節點4007有一個條件屬性為"ExitCondl"的箭頭4008指向 "Resultl"結束節點。它模擬了圖3中"DSO"復合DS 300的"Resultl"結 束點312。為了模擬一個復合DS的完整的功能,每個箭頭的條件屬性可以定 義為以下之一l)一個簡單斷言節點;2)—個復合斷言節點;3)運算為正的 終止值的序列數目,包括"等于N"、"大于等與N"、"小于等于N"。
復合DS的隱含結束點可以用如下方式來模擬如果這些指向結束節點的箭頭所相關聯的條件屬性都不為真,包含它的復合DS節點就終止,并且其 "結果"屬性被設為與隱含結束點相關聯的結束值。如圖40所示,如果
"ExitCond 1"和"ExitCond 2"都不為真,"DS0"復合DS節點4000就結 束,并且其"結果"屬性設為與隱含結束點相關聯的結束值。
如果復合DS中的于DS是個簡單DS,它由簡單DS節點來模擬。和復合 DS節點一樣,簡單DS節點有一個"結果"屬性。其操作完成之后,"結果" 屬性可以設為反映其執行狀態的一個值。
為了在BPMN中模擬一個復合DS,這些添加到一般圖形語言中的新組件 可以進一步映射到如下所添加到BPMN中的新組件1)簡單DS節點被映射 到簡單DS活動,2)復合DS節點被映射到復合DS活動,3)起始節點被映 射到BPMN的Start Event, 4)終止節點被映射到終點事件,5)箭頭既可以 被映射到BPMN的一個sequence flow,也可以被映射到BPMN的一個 conditional sequence flow, 6)每個箭頭的條件屬性被映射到與每個conditional sequence flow相關聯的BPMN的ConditionExpression屬性,7)結束節點被 映射到BPMN的一個End Event , 8)合并分叉節點被映射到一個結束一 Gateway。為了簡化起見,復合DS活動和簡單DS活動也被叫做DS活動。下
面提供了詳細闡述。
在BPMN中,簡單DS活動是一種特殊的Task類型,它有一個"結果" 屬性。完成之后,其"結果"屬性可以設為一個反映其執行狀態的值。
在BPMN中,復合DS活動是一種特殊的sub-process。它可以有一個"結 果"屬性來模擬復合DS的"結果"屬性,來存儲與被模擬的復合DS終止處 的結束點相關聯的結束值。另外,復合DS活動還包含了復合DS中的多個序 列框,多個模擬并行子DS的DS活動, 一個結束一Gateway和多個End Event。
序列框也是BPMN中一種特殊的sub-process。它禾Q BPMN中一般的 sub-process類似,唯一不同的是到達一個內部End Event不僅會終止該序列 框,還會結束包含該序列框的模擬復合DS的復合DS活動。每個序列框都是由sequence flow連接到結束一Gateway上的。
從一個源頭指向多個目標的遷移箭頭在BPMN中由從源頭指向其目標的 conditional s叫uence flow來模擬。這里的一個源頭可能是一個起始節點、 一個 簡單DS活動或者一個復合DS活動,而每個目標可能是一個終止節點, 一個 簡單DS活動或者一個復合DS活動。另外,與每個遷移箭頭相關聯的遷移條 件在BPMN中由和模擬遷移箭頭的每個conditional sequence flow相關聯的 ConditionExpression屬性來模擬。
模擬一個終點的終點事件是增加到BPMN中的一種新的Event類型。它 有一個名字屬性,設為與被模擬的終點一樣的名字。到達一個序列框中的終 點事件時,該序列框就終止。并記錄下剛到達的終點事件的名字或其內部的 代號以備稍后的檢驗。為了和BPMN中的其它Event相區分, 一個終點事件 可以顯示為0 。
在BPMN中,模擬結束點的是一種特殊的EndEvent。其名稱屬性被設為 和被模擬的結束點同名。 一個間接結束點的結束條件可以定義在 ConditionExpression屬性中,該屬性是關聯到一個從結束一Gateway指向它的 往外的sequence flow。這種特殊的End Event有如下行為到達End Event時, 包含它的復合DS活動就結束了,并且該復合DS活動的"結果"屬性設為與 被模擬的結朿點相關聯的結束值。
BPMN中,復合DS中每個并行子DS可以由一個簡單DS活動或者一個 復合DS活動來模擬,該簡單DS活動或復合DS活動有1個往外的s叫uence flow指向結束一 Gateway 。
結束一Gateway是一個添加到BPMN中的新的Gateway類型。它支持前 面所述的合并分叉節點的行為。為了和BPMN中其它的Gateway區分開來, 結束—Gateway顯示為里面帶有"?"的菱形。
通過這種模擬方法,圖3中的"DS0"復合DS300在BPMN的擴展版中 可以由圖40所示的"DS0"復合DS活動4000來模擬。為了在UML活動圖中模擬復合DS,這些添加到一般圖形語言中的新組 件可以進一步映射到以下所添加到UML中的新組件中1)起始節點被映射 為InitialNode; 2)終止節點被映射為FlowFinalNode; 3)決策節點后面的箭 頭被映射為ActivityEdge ; 4)每個箭頭的條件屬性被映射為和每個 ActivityEdge相聯系的guard; 5)結朿節點被映射為ActivityFimlNode; 6)合 并分叉節點被映射為一個join node,后面跟著一個往外的ActivityEdge指向一 個decision node。為了簡化起見,復合DS節點和簡單DS節點也被叫做DS 節點。下面提供了詳細闡述。
UML屮,簡單DS節點是一種特殊類型的Action,它有一個"結果"屬 性。完成之后,其"結果"屬性設為反映其執行狀態的一個值。
復合DS節點是新加到UML中的一種特殊Activity.它有一個"結果" 屬性來模擬一個復合DS的結果屬性,用來存儲終止后的結果。另外, 一個復 合DS節點包含了多個序列框,模擬復合DS中的并行子DS的多個DS節點, 一個join node , ~"個decision node禾口多個ActivityFinalNode 。
序列框是一種新加到UML中的特殊Activity。它和ULM中其他一般的 Activity類似,唯一不同的是當內部的ActivityFinalNode執行時,不只是序 列框會終止,包含它的復合DS節點也會終止。每個序列框都有一個指向一個 join node的往夕卜的ActivityEdge。
在UML中,從一個源頭指向多個目標的遷移箭頭是由從模擬源頭的節點 指向一個decision node的ActivityEdge來模擬的,它有一個模擬每個源頭子 DS的遷移箭頭的往外的ActivityEdge。另外,在UML中,和每個遷移箭頭相 關聯的遷移條件是由模擬遷移箭頭的ActivityEdge的guard來模擬的。
在UML中,模擬終點的FlowFinalNode類似于UML中一般的 FlowFinalNode ,不同的是當抵達FlowFinalNode時,模擬一種終點的 FlowFinalNode需要記錄下被模擬的終點名稱或其內部ID。
UML中模擬一個結束點的ActivityFinalNode類似于UML中的普通ActivityFinalNode,不同的是當抵達ActivityFinalNode時,包含它的復合DS 節點終止,并設復合DS節點的"結果"屬性為與被模擬的結束點相關聯的結 朿值。
在復合DS中,模擬并行子DS的簡單DS節點或者復合DS節點有一個 從它指向join node的往外的ActivityEdge。
由合并分叉節點所映射的join node有一個默認為"and"的JoinSpec,使 得當一個來自模擬一個序列或者一個并行子DS的每個節點的token到達后, 該join node也京尤完成。
在UML中, 一個復合DS的間接結束點可以由一個從join node指向一 個decision node的Acti vityEdge及其后面一個指向ActivityFinalNode的 ActivityEdge所模擬。每個間接結束點由一個從decision node指向一個 ActivityFinalNode的往外的ActivityEdge來模擬。每個結束點的結束條件則由 這個指向相對應的ActivityFinalNode的往外的ActivityEdge的guard來模擬。
用這種模擬方法,在UML擴展版中,圖3中的"DS0"復合DS 300可 以由圖41所示的"DS0"復合DS節點4100模擬。
用這種方法, 一個嵌套的復合DS也可以由一種圖形語言的復合DS節點 來模擬,比如BPMN或者UML。例如,圖42中顯示了一個嵌套DS "DS1"。 它的一個子DS "Sub-DSl" 4201包含了 2個子DS——"Sub-DS4"和 "Sub-DS5"。圖43顯示了在BPMN擴展版或者類似的圖形語言中如何由 "DS1"復合DS節點4300來模擬圖42中的"DS1" 4200。圖44顯示了在 UML擴展版中如何由"DS1"復合DS節點4400來模擬圖42中的 "DS1" 4200。
結論
本發明中描述的圖形語言是靈活的、而且是組件化的。它適用于對復雜 行為的結構化和組件化的設計。因此,在計算機系統生命周期的多個階段都 可以用到本發明。在本發明的一個實施例中,用戶可以在一個設計工具中編輯和展示上述用圖形語言及其擴展描述的計算機系統行為定義。在本發明的 另一個實施例中,用戶可在監控工具中監控上述用圖形語言及其擴展描述的 被監控的計算機系統在運行時的操作。但在另一個實施例中,計算機系統自 身也可在圖形顯示器中用上述圖形語言及其擴展來顯示其在運行時的執行。
這些工具內部,可以由多種可能的內部表現方法之一來實施上面描述的 DS和斷言。
一種內部表現方法可以是一種編程語言的數據結構形式,比如C
或者Java。另一種內部表現方法是以數據描述語言(data description language ) 的形式,比如XML。 DS組件或者斷言組件一旦以一種可以被計算機程序讀 取的形式被內部地表示出來,比如Java程序,那么即使沒有用這些圖形語言 來顯示其行為,本發明也可以有所裨益。
類似地,本發明的另一個實施例可以直接在計算機程序代碼中嵌入本發 明所描述的DS和斷言的部分結構。例如,計算機程序為了將一個結束值關聯 到某個結束點,可以為每個隱含結束點在計算機代碼中直接設為零,而不用 以數據結構來存儲其值。
從另一方面來看,不是所有的DS和斷言都需要由軟件來自動化或者由硬 件來執行。 一個實施例可以使用這些結構以DS和斷言組件來定義人類的活 動、業務流程或者行動計劃。這些DS和斷言組件中有一些可以由軟件或者硬 件來實施,而另一些則可由人以手工來實施。
雖然上面的描述包含了許多詳細說明,但這些詳細說明僅僅是為了提供 對本發明描述的實施例作一些闡述,而不應當視為對本發明的范圍做了任何 限制。基于這里提供和闡述的內容,本技術領域里的一般人可以在本發明的 范圍內擴展到其他的各種實現及應用上。
例如,與結束點或者終點相關聯的結束值可以通過下面的一種方式來實 施比如一個無符號整數、 一個整數或者一個字符串。在本發明的另一個實 施例中,可以用零或者一些負數來表示一個非正結果,而用正數來表示正的 結果。在本發明的另一個實施例中,大于或者等于某個邊界值的數可以用于表示一個正值的結果;而小于或者等于某個邊界值的數則可以用于表示一個 非正值的結果。在本發明的另一個實施例中, 一個非零數可用于表示一個正 的結果,零則可用于表示一個非正的結果。在另一個實施例中,也可使用一 個字符串來表示一個負結果,比如"No"或者"false",而用其他不同的 字符串來表示正的結果。在本發明的一個實施例中,也可將結束值和結束點 的名字聯合在一起。例如,某個名字可用于表示一個非正結果,比如"No", 而用戶定義的任何其他名字可用于表示一個正的結果。
本發明的一個實施例中,為方便起見,某個結束點的結朿值或者某個終 點的終止值可以由編輯工具自動分配,而在另一個實施例中,為靈活起見, 設計者可以定義這些值。但在另一個實施例中,結束點的名字串本身即可能 用作為結束點的結束值,反之亦然。
當序列到達一個終點, 一個實施例可以記錄下剛剛到達的終點名稱,使 得結束條件稍后可以檢驗它。但是,另一個實施例可以通過記錄和每個終點 相關聯的唯 -的內部標識符來更有效率地達到同樣的目的。
本發明中的一些名字可以用其它名字來代替。例如,隱含結束點"No" 也可以用"False"或者"negative"來代替。
本發明中描述的許多組件有一個可視化的表現。雖然本發明中用到了某 種可視化的形式,但是也可以用其他可視化的形式來表現。例如,結束一 Gateway不僅可以顯示為里面有一個問號的菱形,也可以顯示為六邊形或其他 形狀。舉另一個例子,在本發明中,結束點的名字和條件以兩個獨立的文本
顯示在結朿點附近。在本發明的一個實施例中也可以將它們顯示在同一個文 本中,比如"name: condition"。
雖然本發明中描述了許多組件,但在應用中不是所有的組件都會被用到。 例如,圖20中的"D1"復合斷言2000沒有并行子斷言。另一個例子圖28中, "D2"復合斷言2800既沒有任何序列也沒有結束點。
為了進一步澄清這點,這里提供了更多的例子。圖45顯示了帶有一個子簡單斷言"simp-predO"和一個間接結束點"ExitCondl"的復合斷言例子。圖 46顯示了帶有一個子復合斷言"predl"和一個間接結束點"ExitCondl"的 復合斷言例子。圖47顯示了帶有一個子簡單斷言、 一個遷移和一個間接結束 點"ExitCondl"的復合斷言例子。圖48顯示了帶有兩個子簡單斷 言"simp-predl" 、 " simp-pred2"和一個間接結朿點"ExitCondl"的復合 斷言例子。圖49顯示了帶有一個子簡單斷言"simp-predO"、 一個子復合斷 言"predl"和一個間接結束點的復合斷言例子。圖50顯示了帶有一個子簡單 斷言"simp-predO"、 一個遷移和一個直接結朿點的復合斷言例子。圖51顯 示了帶有兩個子簡單斷言"simp-predO" 、 " simp-predl"、 一個遷移和一個 直接結束點的復合斷言例子。圖52顯示了帶有一個子復合斷言"pred2"、 一 個遷移和一個直接結束點的復合斷言例子。
本應用中所描述的任何軟件組件或者功能都可以用程序代碼來實施,而 被一個或者多個處理器來執行,這些程序代碼可以使用任何合適的計算機語 言,例如,Java, 0++或者?61"1,而開發的方法則可用傳統的或者面向對象的 技術。程序代碼可以作為一系列的指令或者命令存儲在計算機中的可讀介質 上以便于存儲和/或傳輸,合適的介質包括了隨機訪問內存(RAM),只讀存儲器 (ROM),磁性介質,比如硬盤或者軟盤,或者光學介質,比如光盤(CD)或者 DVD(數字多功能磁盤),閃存,諸如此類。計算機可讀介質可以是這些存儲或 者傳輸設備中的任何形式的結合。
這種程序代碼也可以通過遵守各種協議,包括因特網協議,的有線的、 光學的、和/或無線的網絡來使用適合傳輸的載波信號進行編碼和傳輸。同樣 地,根據本發明的一個實施例, 一個計算機可讀介質可以使用一個用這種程 序代碼編碼的數據信號來創建。這種用程序代碼編碼的計算機可讀介質也可 以由一個兼容的設備來包裝,或者由其他設備單獨提供(例如,通過網絡下 載)。任何這種計算機可讀介質可以保存在一個單獨的計算機程序產品中(比 如,硬盤驅動器或者整個計算機系統),也可以放在一個系統或者網絡中不同的計算機程序產品中。 一個計算機系統可能包括一個顯示器、打印機或者 其他合適的顯示設備來給用戶提供這里談到的任何結果。當程序代碼被加載 到實質的計算機設備上或者在機器上執行時,該機器即實施了本發明。
由此可見,依據本發明,所描述的DS、斷言和與相關的GUI組件的表示 和過程,當用在定義許多計算機系統的復雜行為時,是一個很強大的技術。 特別是,本發明在以下的一些主要領域里擴展和改進了之前的一些技術,比
如BPMN,XPDL, WS-CDL或者UML。
第-,即使復雜決策也可以被圖形化地用復合斷言來顯示。以至于更多 的行為都可以用圖形來表現,而不須依賴代碼和數據。如須依賴代碼或者數 據,在設計和維護上都會造成困難。第二,復合斷言中直接支持順序型子斷 言和并行子斷言。這種靈活性讓我們可以用組件化的和簡潔的方式在更廣泛 的范圍中來定義復雜的決策行為。第三,支持多個正的結束值,使得多個布 爾型決策可以合并成一個復合斷言,以提高性能。第四,自動提供了隱含結 束點和隱含終點的行為,使得設計被大大地簡化了。第五,通過提供強大并 且靈活的組合結構,可以消除掉設計上的一些復雜性。例如,在BPMN中復 合DS和復合斷言的模擬只用了一種結束-Gateway,就可以取代了 BPMN中 所有的四種Gateway類型和其各種的組合方式。
為了說明和闡述本發明,上面的描述中給出了許多本發明的實施例。但 提供這些實施例的并非用這些固定形式來限制本發明,根據上文的描述,對 本發明還應該可以做出多種修改和變化。之所以選擇了以上所描述各種實施 例和各種形式,其目的是為了更好的解釋本發明的原則及其應用,以便于本 領域的技術人員能更好地使用本發明。以上所引用的出版物,專利或專利申 請,在此以引證的方式并入其全部內容。
權利要求
1.一種計算機系統,該計算機系統包括有程序指令,所述程序指令用來控制至少一個處理器去運算至少一個復合斷言,來檢驗所述復合斷言是否滿足至少一個復雜條件,并且將所述復合斷言分別運算成一個正值或者一個非正值,其中,各所述復合斷言均包括至少一個間接結束點、一個結果和至少一個序列,其中a)各所述間接結束點均包括一個結束值和一個結束條件;其中,所述結束值的值是一個正值和一個非正值之一;所述結束條件定義了一種終止情況,在該情況下,所述復合斷言的運算會結束;b)所述結果是一個屬性,該屬性用于當所述復合斷言在所述間接結束點處結束時存儲所述結束值;并且c)當運算所述復合斷言時,各所述序列都被運算,并且各所述序列均包括至少一個子斷言,其中,各所述子斷言均包括一個下層的復合斷言和一個簡單斷言之一,其中所述簡單斷言定義了要檢驗的一個簡單條件,如果滿足所述簡單條件,所述簡單斷言就會運算成一個正值,而如果不滿足所述簡單條件,所述簡單斷言就會運算成一個非正值。
2. 根據權利要求1所述的計算機系統,其中,所述間接結束點中的至少一 個進一步包括一個結束名稱,該結束名稱用來定義一個名稱以標識所述間接 結束點。
3. 根據權利要求1所述的計算機系統,其中,所述序列中的至少一個進一 步包括至少一個遷移,其中,各所述遷移均包括一個源頭、 一個目標和一個遷移條件,其中a) 所述源頭定義了第一個所述子斷言;b) 所述目標定義了第二個所述子斷言;并且C)所述遷移條件定義了這樣一種情況,即,如果滿足所述情況,則在運算 了所述源頭之后運算所述目標。
4. 根據權利要求3所述的計算機系統,其中,所述序列中的至少一個進一 歩包括至少一個直接結束點作為所述遷移之一的"目標",其中,各所述直 接結束點均包括所述"結束值"之一,當運算到所述直接結束點時,所述復 合斷言終止,并且運算出與所述直接結束點相關聯的所述結束值。
5. 根據權利要求3所述的計算機系統,其中,所述序列中的至少一個進一步包括一個被至少一個所述遷移所指向的用戶定義的終點,其中,當運算到 所述用戶定義的終點時,所述序列中的所述至少一個在所述用戶定義的終點 處終止并運算成一個正值。
6. 根據權利要求3所述的計算機系統,其中,所述序列中的至少一個進一 步包括一個隱含終點,其中,當運算完所述源頭之一,并且該源頭的所述遷 移條件都不滿足時,所述序列中的所述至少一個在所述隱含終點處終止,并 且運算成一個非正值。
7. 根據權利要求1所述的計算機系統,其中,所述復合斷言中的至少一個 進一歩包括一個隱含結束點,其中,當各所述序列結束,并且沒有到達所述 間接結束點和所述直接結束點中的任意一個時,所述復合斷言中的所述至少 一個在所述隱含結束點處結束,并且運算成一個非正值。
8. 根據權利要求1所述的計算機系統,其中,所述間接結束點中的至少一 個中的所述結束條件定義了當多少個所述序列算成正值時,所述復合斷言 將結束,并且運算成所述間接結束點中的所述至少一個的結束值。
9. 根據權利要求8所述的計算機系統,其中,至少一個所述間接結束點中 的所述結束條件定義了一個邏輯或的條件,該條件聲明當所述序列中的至少 一個已經運算成一個正值時,所述復合斷言結束并且運算成所述間接結束點 中的所述至少一個的結束值。
10. 根據權利要求8所述的計算機系統,其中,所述間接結束點中的至少一個的所述結束條件定義了一個邏輯和的條件,該條件聲明當所述序列中的 每一個都已經運算成一個正值時,所述復合斷言結束,并且運算成所述間接 結朿點中的所述至少一個的結束值。
11. 一種計算機系統,該計算機系統包括有程序指令,所述控制指令用來 控制至少 一個處理器去運算至少一個復合斷言,來檢驗是否滿足至少一個復 雜條件,并將其分別運算成一個正值或者一個非正值,其中,各所述復合斷 言均包括至少一個序列和一個結果,其中當運算所述復合斷言時,各所述序列都被運算,并且各所述序列均包括 至少一個子斷言、至少一個遷移和至少一個直接結束點,其中a) 各所述子斷言均包括一個下層的復合斷言和一個簡單斷言之一,其中, 所述簡單斷言定義了需要檢查的一個簡單條件,如果滿足所述簡單條件,所 述簡單斷言就會運算成第一個正值,如果不滿足所述簡單條件,所述簡單斷 言就會運算成第一個非正值;b) 各所述遷移均包括一個源頭、 一個目標和一個遷移條件,其中 所述源頭定義了第一個所述子斷言;所述目標定義了第二個所述子斷言或者所述直接結束點之一;并且 所述遷移條件定義了這樣一種情況,即,如果滿足所述情況,就在運算 完所述源頭之后運算所述目標;c) 各所述直接結束點均包括一個結束值,其值是第二個正值或者第二個非 正值;并且當運算到所述直接結束點時,所述復合斷言的運算結束并且運算成與該 直接結束點相關聯的結束值;所述結果是一個屬性,該屬性用于存儲與所述復合斷言所結束的直接結 束點相關聯的所述結束值。
12. 根據權利要求11所述的計算機系統,其中,所述直接結束點中的至少 一個進一步包括一個結束名稱,該結束名稱用來定義一個名稱以標識所述直接結束點。
13.根據權利要求ii所述的計算機系統,其中,所述復合斷言中的至少一個進一步包括至少一個間接結束點,其中,各所述間接結束點均包括一個結束值和一個結束條件,其中a) 所述結束值的值是一個正值和一個非正值之一;b) 所述結束條件定義了一種終止情況,在該情況下,所述復合斷言的運算 結束,并運算成所述結束值。
14. 一種計算機系統,該計算機系統包括一個圖形用戶界面GUI,該圖形 用戶界面用來在一個顯示設備上顯示至少一個復合斷言部件,所述至少一個 復合斷言部件視覺化地呈現一個復合斷言,來檢驗是否滿足至少一個復雜條 件,并分別運算成第一個正值或者第一個非正值,其中各所述復合斷言部件均包括至少一個間接結束點部件、至少一個序 列部件,其中a) 各所述間接結束點部件均包括一個結束點部件、 一個結束條件部件和 一個結束值,其巾所述結束點部件視覺化地呈現了一個點,在該點處所述復合斷言可以結束; 所述結束條件部件視覺化地呈現了一種終止情況,在該情況下,所述復合 斷言部件的運算結束并且運算成與所述間接結束點部件相關聯的所述結束值;b) 當運算所述復合斷言部件時,各所述序列部件都被運算,并且各所述序 列部件均包括至少一個子斷言部件,其中各所述子斷言部件均視覺化地呈現 了一個下層的復合斷言和一個簡單斷言之一,其中所述簡單斷言定義了一個 要檢驗的簡單條件,如果滿足所述簡單條件,所述簡單斷言就會運算成第二 個正值;如果不滿足所述簡單條件,所述簡單斷言部件就會運算成第二個非 正值。
15. 根據權利要求14所述的計算機系統,其中,所述間接結束點部件中的 至少一個進一步包括一個結束名稱,該結束名稱用來視覺化地定義一個名字以標識所述間接結束點部件。
16. 根據權利要求14所述的計算機系統,其中,由所述復合斷言部件、所述間接結束點部件、所述序列部件和所述簡單斷言部件構成的組中的至少一 個由一個圖形語言中的己有的圖形元素來視覺化地呈現。
17. 根據權利要求14所述的計算機系統,其中,所述序列部件中的至少一 個進一步包括至少一個遷移部件,其中,各所述遷移部件均視覺化地將一個源頭連接到一個目標,并且包括一個遷移條件部件,其中所述源頭定義了第一個所述子斷言部件; 所述目標定義了第二個所述子斷言部件;并且所述遷移條件部件視覺化地呈現了 一個遷移條件,該遷移條件定義了 一 種情況,即,如果滿足所述情況,就將在運算完所述源頭之后運算所述目標。
18. 根據權利要求17所述的計算機系統,其中,所述遷移部件中的至少一 個由一個圖形語言中的已有的圖形元素來視覺化地呈現。
19. 根據權利要求17所述的計算機系統,其中,所述序列部件中的至少一 個進一步包括至少一個直接結束點部件,來作為所述遷移部件之一的目標, 其中,當運算到所述直接結束點時,所述復合斷言結束并且運算成一個正值 或一個非正值。
20. 根據權利要求19所述的計算機系統,其中,所述直接結束點部件中的 至少一個由一個圖形語言中的已有的圖形元素來視覺化地呈現。
21. 根據權利要求17所述的計算機系統,其中,所述序列部件中的至少一 個進一步包括一個被所述遷移部件中的至少一個所指向的用戶定義的終點部 件,其中,當運算到所述用戶定義的終點部件時,所述序列部件中的所述至 少一個終止并且運算成一個正值。
22. 根據權利要求21所述的計算機系統,其中,所述用戶定義的終點部件 由一個圖形語言中的己有的圖形元素來視覺化地呈現。
23. —種計算機系統,該計算機系統包括一個圖形用戶界面,該圖形用戶 界面用來在一個顯示設備上顯示至少一個復合斷言部件,所述至少一個復合 斷言部件視覺化地呈現一個復合斷言來檢驗是否滿足至少一個復雜條件,并 分別運算成第一個正值或者第一個非正值,其中,各所述復合斷言部件均包括至少一個序列部件,其中,當運算所述復合斷言部件時,各所述序列部件都被運算,各所述 序列部件均包括至少一個子斷言部件、至少一個遷移部件和至少一個直接結 束點部件,其中a) 各所述子斷言部件均包括一個下層的復合斷言部件和一個簡單斷言部 件之一,其中,所述簡單斷言部件視覺化地呈現一個要檢驗的簡單條件,如 果滿足所述簡單條件,所述簡單斷言部件就會運算成第二個正值,如果不滿足所述簡單條件,所述簡單斷言部件就會運算成第二個非正值;b) 各所述遷移部件將一個源頭和一個目標視覺化地聯系起來,并包括一個 遷移條件部件,其中所述源頭定義了第一個子斷言部件;所述目標定義了所述子斷言部件之一或者所述直接結束點部件之一; 所述遷移條件部件視覺化地呈現一種情況,其中,如果滿足所述情況, 就在運算完所述源頭之后運算所述目標;c) 各所述直接結束點部件均被所述遷移部件之一所連接而作為所述目 標,其中,當運算到所述直接結束點部件時,所述復合斷言部件結朿,并且 運算成所述第一個正值和所述第一個非正值之一。
24. 根據權利要求23所述的計算機系統,其中,所述直接結束點部件中的 至少一個進一步包括一個結束名稱,該結束名稱用來視覺化地定義一個名稱 以標識所述直接結束點部件。
25. 根據權利要求23所述的計算機系統,其中,由所述復合斷言部件、所 述序列部件、所述簡單斷言部件、所述直接結束點部件和所述遷移部件構成的組中的至少一個由一個圖形語言中的己有圖形元素來視覺化地呈現。
26. 根據權利要求23所述的計算機系統,其中,所述復合斷言部件中的 至少一個進一步包括至少一個間接結束點部件,其中,各所述間接結束點部件均包括一個結束點部件和一個結束條件部件,其中所述結束點部件視覺化地呈現一個點,在該點處所述至少一個復合斷言 可以結束;并且所述結束條件部件視覺化地呈現一種終止情況,在該情況下,所述復合 斷言部件結束,并且運算成一個正值和一個非正值之一。
27. 根據權利要求26所述的計算機系統,其屮,所述間接結束點部件中 的至少一個由一個圖形語言中的己有圖形元素來視覺化地呈現。
全文摘要
本發明提供了復合斷言和復合動態系統的系統定義和其操作程序。復合斷言用于當在計算機系統中制定決策時檢查復雜條件;復合動態系統則是用于定義整個計算機系統的行為。另外,為了顯示復合斷言和動態系統,在圖形圖表中提供了圖形語言的示例。并將類似的性能擴展到一些已有的圖形語言里,比如BPMN和UML活動圖。
文檔編號G06F9/44GK101589367SQ200880002646
公開日2009年11月25日 申請日期2008年9月10日 優先權日2007年9月11日
發明者夏壽民 申請人:夏壽民