欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

由非專屬語言驅(qū)動的通用序列圖生成器的制作方法

文檔序號:6554154閱讀:279來源:國知局
專利名稱:由非專屬語言驅(qū)動的通用序列圖生成器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及由非專屬(non-proprietary)語言驅(qū)動的通用(application-generic)序列圖(sequence diagram)生成器。
背景技術(shù)
序列圖(也稱為序列表、時序圖/表、消息序列圖/表、鐵路圖/表(railroad diagram/chart)或階梯圖/表(ladder diagram/chart))常用于提供應(yīng)用流程的圖示。更具體而言,序列圖通常提供兩個或更多個被稱為“動作者(actor)”的實體之間的一系列被稱為“消息”的事務(wù)的圖示。在序列圖中,時間通常表示為沿頁面垂直向下發(fā)展。每個動作者在序列圖中通常由垂直線(或列)來表示。消息通常由交換中涉及的動作者的垂直線之間的水平線表示,這些水平線通常被標(biāo)注并且通常以指示通信方向的箭頭結(jié)束。序列圖中有時包括其他裝飾,例如事務(wù)項目號碼或事務(wù)之間的其他關(guān)系,比如超時。
許多類型的應(yīng)用的流程可由序列圖表示,包括但不限于諸如通信協(xié)議、計算機(jī)可執(zhí)行軟件、裝配線或其他制造過程這樣的應(yīng)用。實際上,序列圖可用于表示任何應(yīng)用的動作者之間的消息交換流程,例如水果銷售者和希望從該銷售者處購買水果的客戶之間交換的消息的流程。序列圖可用于清楚地表示應(yīng)用的消息交換(或“流程”),以取代這種消息交換的文本描述或附加于這種消息交換的文本描述。例如,在許多情況下,比起查看應(yīng)用的文本描述,通過查看序列圖可以更快速地理解諸如通信協(xié)議這樣的應(yīng)用。正如古語“一圖值千言”所言,序列圖在傳達(dá)給定應(yīng)用的消息交換方面大有幫助。
因此,序列圖常被用于說明書、設(shè)計和其他文檔中,以便以文檔方式記錄實現(xiàn)方式,并作為預(yù)測或測量的系統(tǒng)行為的表示。例如,在電信領(lǐng)域,序列圖被廣泛用于以文檔方式記錄所需的、所預(yù)期的或?qū)嶋H的協(xié)議消息交換。
雖然序列圖大有裨益,但是要創(chuàng)建和維護(hù)序列圖卻常常是很麻煩的。傳統(tǒng)上是用基本位圖編輯器(例如Microsoft Paint)、更復(fù)雜的制圖工具(例如Microsoft Visio)或有時用專門的CASE工具(例如RationalRose)來手動創(chuàng)建序列圖。以這種方式創(chuàng)建序列圖要求原作者和維護(hù)者都能訪問兼容的工具的適當(dāng)許可的版本。此外,序列圖創(chuàng)建者需要就樣式和布局做出決定,雖然某些工具在這些領(lǐng)域提供了幫助。此手動方法耗費大量時間和精力,并且由于創(chuàng)建和維護(hù)序列圖的高成本,使人失去了在文獻(xiàn)中包含序列圖的信心。
最近,已開發(fā)了自動圖生成工具,其能夠根據(jù)描述應(yīng)用的事務(wù)序列的輸入文本文件,生成序列圖。從而,這種自動圖生成工具減輕了用戶手動創(chuàng)建序列圖的要求?,F(xiàn)有技術(shù)中可用的自動圖生成工具包括可從EventHelix.com獲得的EventStudio2.5(參見http//www.eventhelix.com/EventStudio/),可從SourceForge.net獲得的Callflow序列圖生成器(參見http//sourceforge.net/projects/callflow),可從International Business Machines(IBM)獲得的WebSphere StudioApplication Developer中提供的序列圖工具,以及可從NASRA獲得J2u(參見http//www.nasra.fr/)。
現(xiàn)有的自動圖生成工具通常要求使用專屬語言來定義源文件中的文本描述。從而,用戶可能需要學(xué)習(xí)專屬語言,以便生成自動圖生成工具要使用的適當(dāng)?shù)奈谋久枋觥?br> 此外,某些自動圖生成工具不是通用的。而是,某些自動圖生成工具被限制為只用于為特定類型的應(yīng)用生成序列圖,從而缺乏為任何希望類型的應(yīng)用生成序列圖的靈活性。例如,WebSphere Studio ApplicationDeveloper中提供的序列圖工具能夠接收J(rèn)ava源代碼作為源文件,并且可操作以生成表示接收到的Java源代碼的流程的序列圖。從而,雖然此工具不要求用戶學(xué)習(xí)專屬語言以便生成源文件(而是Java源代碼可被輸入作為源文件),但它卻是專用(application-specific)的,因為它只能為輸入的Java源代碼生成序列圖。從而,例如,此工具無法接收例如描述客戶和水果銷售者之間的消息交換的文本源文件并為該應(yīng)用生成序列圖,而是限于生成表示輸入到其中的Java源代碼的流程的序列圖。從而,某些序列圖生成工具不是通用序列圖生成器,而是針對特定應(yīng)用或特定任務(wù)的,例如對現(xiàn)有源代碼進(jìn)行逆向工程,或根據(jù)運行時的追蹤,自動以文檔方式記錄軟件運行時行為。
此外,現(xiàn)有技術(shù)的自動序列圖生成工具一般不允許命令行操作,從而無法被集成到終端用戶的文檔發(fā)布自動化過程中。從而,用戶一般沒有有效的方式來用現(xiàn)有自動序列圖生成器創(chuàng)建一組圖。而是,用戶一般需要坐在計算機(jī)前,并輸入信息(例如源文件)來一次生成一幅圖。

發(fā)明內(nèi)容
考慮到上述情況,需要一種能夠接收以非專屬語言定義應(yīng)用的流程(例如消息交換)的源文件的自動序列圖生成器。此外,還希望這種自動序列圖生成器是通用的(general purpose或application-specific)圖生成器,而不是限于為特定應(yīng)用生成序列圖。
本發(fā)明針對一種提供由非專屬語言驅(qū)動的通用序列圖生成器的系統(tǒng)和方法。根據(jù)一個實施例,源文件以非專屬語言描述應(yīng)用的流程(例如消息交換)。自動序列圖生成器可操作以接收源文件作為輸入,并且基于這種源文件生成表示源文件所描述的流程的序列圖。
在示例性實施例中,非專屬語言是標(biāo)記語言,如可擴(kuò)展標(biāo)記語言(XML)。從而,用戶不需要學(xué)習(xí)專屬語言以便創(chuàng)建序列圖生成器所使用的源文件,而是例如可以用XML來描述要用圖表示的流程。此外,序列圖生成器是通用的(general purpose或application-generic),因為它能夠生成表示源文件中所描述的任何應(yīng)用的流程的序列圖。被源文件描述了流程的應(yīng)用可以是任何類型的應(yīng)用,包括但不限于計算機(jī)可讀軟件應(yīng)用程序、通信協(xié)議或動作者之間的任何消息交換(例如客戶和水果銷售者之間的消息交換)。
根據(jù)一個實施例,序列圖生成器包括源解析器、圖解析器和呈現(xiàn)引擎。源解析器接收文本源文件,并且基于接收到的源文件,為源文件所描述的流程的圖構(gòu)建數(shù)據(jù)模型。圖解析器處理源解析器所構(gòu)建的數(shù)據(jù)模型,以生成相應(yīng)的繪圖命令,這些繪圖命令被輸入到呈現(xiàn)引擎。響應(yīng)于接收到繪圖命令,呈現(xiàn)引擎生成表示文本源文本所描述的流程的序列圖。
在這里所描述的各種實施例中,文本源文件是獨立于該文本源文件為之定義流程的應(yīng)用的。例如,文本源文件描述將對其生成序列圖的應(yīng)用(例如通信協(xié)議或動作者之間的其他消息交換)的流程,而不是源文件本身是要為其生成序列圖的應(yīng)用。例如,文本源文件可以是描述Java程序的流程的XML文件。從而,XML文件是獨立于Java程序的,而不是Java程序的源代碼被用作序列圖生成器的輸入。
以上已相當(dāng)寬泛地概述了本發(fā)明的特征和技術(shù)優(yōu)點,以便以下對本發(fā)明的詳細(xì)描述能被更好地理解。形成本發(fā)明的權(quán)利要求的主題的本發(fā)明的附加特征和優(yōu)點將在下文中描述。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,所公開的概念和特定實施例易被用作修改或設(shè)計其他實現(xiàn)與本發(fā)明相同的目的的結(jié)構(gòu)的基礎(chǔ)。本領(lǐng)域的技術(shù)人員還應(yīng)當(dāng)意識到,這種等同構(gòu)造不脫離所附權(quán)利要求書所闡述的本發(fā)明的精神和范圍。當(dāng)聯(lián)系附圖進(jìn)行考慮時,可從以下描述中更好地理解被認(rèn)為是本發(fā)明的特點的新穎特征的組織結(jié)構(gòu)和操作方法,以及其他目的和方法。但是,要清楚理解,每幅附圖都只是提供來用于說明和描述目的的,而不想要用作對本發(fā)明的范圍的限定。


為了更全面地理解本發(fā)明,現(xiàn)結(jié)合附圖參考以下描述,附圖中圖1示出了包括根據(jù)本發(fā)明的實施例的序列圖生成器的示例性系統(tǒng);圖2示出了根據(jù)本發(fā)明的某些實施例的序列圖生成器;圖3更詳細(xì)示出了根據(jù)本發(fā)明的一個示例性實施例的序列圖生成器;圖4示出了可由根據(jù)本發(fā)明的一個實施例的序列圖生成器生成的示例性序列圖;圖5示出了根據(jù)本發(fā)明的一個實施例的序列圖生成器的操作流程圖;圖6示出了一個示例性系統(tǒng),其中文檔生成器和序列圖生成器被實現(xiàn)為分別的組件,它們可并行使用,以從源文件生成整個文檔(既有文本又有序列圖);以及圖7示出了一個示例性系統(tǒng),其中序列圖生成器被集成在文檔生成器應(yīng)用中。
具體實施例方式
現(xiàn)參考以上附圖描述本發(fā)明的示例性實施例,在若干附圖中,類似的標(biāo)號表示類似的部分。轉(zhuǎn)到圖1,示出了示例性系統(tǒng)100,該系統(tǒng)包括序列圖生成器102,該序列圖生成器102可操作以接收文本源文件101作為輸入,并且從該源文件101生成序列圖103。序列圖103例如可被存儲到文件和/或被輸出(例如輸出到顯示設(shè)備)。根據(jù)這里所描述的各種實施例,源文件101以諸如XML之類的非專屬語言,描述諸如通信協(xié)議等的應(yīng)用的流程(例如消息交換)。序列圖生成器102可以被稱為通用(general purpose或application-generic)序列圖生成器,因為它可操作以為在源文件101中描述了流程的任何類型的應(yīng)用生成序列圖。
此外,如這里進(jìn)一步描述的,文本源文件101獨立于該源文件為之描述流程的應(yīng)用。例如,文本源文件描述要為之生成序列圖的應(yīng)用(例如通信協(xié)議或動作者之間的其他消息交換)的流程,而不是源文件本身是要為之生成序列圖的應(yīng)用。例如,文本源文件101可以是描述Java程序流程的XML文件。從而,XML文件獨立于Java程序,而不是Java程序的源代碼被用作序列圖生成器102的輸入。因此,序列圖生成器102不限于為輸入其中的源文件的流程生成序列圖,而是可操作來為由被輸入其中的源文件所描述的任何應(yīng)用的流程生成序列圖。
圖2示出了根據(jù)本發(fā)明的某些實施例的圖生成器102。如圖所示,圖生成器102包括解析器組件201和呈現(xiàn)引擎(rendering engine)203。解析器組件可操作以基于輸入的文本源文件101,生成繪圖命令202到呈現(xiàn)引擎203,以使呈現(xiàn)引擎203生成表示源文件101中描述的流程的序列圖103。
根據(jù)此示例性實施例,源文件101以非專屬語言(例如XML)提供了應(yīng)用流程的序列定義。源文件被輸入到序列圖生成器102,該序列圖生成器102解析源文件101的數(shù)據(jù),并且將序列圖103呈現(xiàn)在顯示屏幕上或者以幾種格式(bmp、gif、jpg等)之一呈現(xiàn)到文件中。解析器201負(fù)責(zé)讀取和解釋源文件101的輸入數(shù)據(jù)(例如XML),以提取元素定義。呈現(xiàn)引擎203負(fù)責(zé)用其內(nèi)部樣式和布局規(guī)則呈現(xiàn)繪圖元素。呈現(xiàn)引擎應(yīng)用程序接口(API)提供了適用于繪制序列圖的抽象,其獨立于圖的任何特定領(lǐng)域的應(yīng)用。解析器201在源文件(例如XML)中的特定領(lǐng)域編碼和呈現(xiàn)API之間進(jìn)行映射。這使序列圖生成器102能夠迅速適應(yīng)于各種領(lǐng)域,而無需更改控制樣式和布局的核心繪圖邏輯。
呈現(xiàn)引擎203及其相應(yīng)的API可以是已知的或以后開發(fā)的提供接收繪圖命令并根據(jù)這些繪圖命令生成序列圖的能力的任何引擎和API。解析器201(更具體而言是以下圖3的示例性實施例中描述的圖解析器303)應(yīng)該擁有關(guān)于呈現(xiàn)引擎API的知識,以便它能夠生成適當(dāng)?shù)睦L圖命令,以使呈現(xiàn)引擎采取正確的行動來生成適當(dāng)?shù)男蛄袌D。在某些實施例中,呈現(xiàn)引擎的API可被開發(fā)為在繪制序列圖方面具有特定實用性(例如能夠接收動作者、消息序列等,并且繪制表示動作者之間的消息序列的相應(yīng)特征),但這不是實現(xiàn)這里所描述的概念所必需的。
根據(jù)一個示例性實施例的序列圖生成器102在圖3中更詳細(xì)示出。在此示例性實施例中,序列圖生成器102包括源解析器301、圖解析器303和呈現(xiàn)引擎203。從而,在此示例性實施例中,圖2的解析器組件201包括源解析器301和圖解析器303。源解析器301接收源文件101作為輸入,并且基于這種源文件101,構(gòu)建內(nèi)部數(shù)據(jù)模型302。更具體而言,源解析器301讀取源文件101的文本,檢查其語法,并且構(gòu)建內(nèi)部數(shù)據(jù)模型302,該內(nèi)部數(shù)據(jù)模型302代表從源文件101讀取的所有圖元數(shù)據(jù)信息。內(nèi)部數(shù)據(jù)模型302保持了源文件101中表達(dá)的層次結(jié)構(gòu)和關(guān)系。
在一個示例性實施例中,源文件是XML的,源解析器301解析XML元素,以從源文件中提取數(shù)據(jù),來生成數(shù)據(jù)模型302。更具體而言,在一個示例性實現(xiàn)方式中,XML源文件101被源解析器301加載到DOM(文檔對象模型)中。DOM是樹形結(jié)構(gòu),它捕捉來自XML的所有數(shù)據(jù),包括其層次結(jié)構(gòu)。DOM被源解析器301搜索以查找圖元數(shù)據(jù),圖元數(shù)據(jù)然后被提取到描述動作者和所有事務(wù)和裝飾的內(nèi)部數(shù)據(jù)結(jié)構(gòu)集合302中。事務(wù)數(shù)據(jù)被進(jìn)一步處理,以提取所有的源和目的地信息。然后,此內(nèi)部數(shù)據(jù)集合302被用于驅(qū)動呈現(xiàn)過程。通過XML標(biāo)簽的獨特集合,在XML源中,圖元數(shù)據(jù)被源解析器301識別,其示例在下文中進(jìn)一步描述。
圖解析器303處理內(nèi)部數(shù)據(jù)模型302中的數(shù)據(jù),以提取序列圖中要表示的特征,并且基于這種內(nèi)部數(shù)據(jù)模型302,圖解析器303生成抽象繪圖命令序列到呈現(xiàn)引擎203。呈現(xiàn)引擎203接收繪圖命令,并且將這種命令變換為低級操作系統(tǒng)圖形操作(例如繪制線條、圓圈或文本),以創(chuàng)建序列圖103,該序列圖103例如可被輸出到基于處理器的設(shè)備(例如個人計算機(jī))304的顯示器305上,和/或被存儲到文件中。
為了描述一個實施例的操作,考慮這樣一個簡單的情形三個動作者A、B和C之間的會話被描述在源文件101中,該源文件101然后被圖生成器102用于生成表示這種會話中的動作者之間的消息交換的序列圖103。從而,在此情形下,動作者之間的會話被視為應(yīng)用,并且這種應(yīng)用的流程在源文件101中描述。假設(shè)會話如下·A對B說“Hello”;·B對A說“Hello there”,對C說“Hi”;·C對B和A說“G’day”。
在此示例性實施例中,源文件101以XML表達(dá),并且上述會話可由以下的XML源文件101來表示<?xml version=″1.0″standalone=″yes″?>
<SequenceDefinition title=”A Simple Diagram”>
<MessageSequence>
<Message from=”A”to=”B”msg=”Hello”/>
<Message from=”B”to=”A”msg=”Hello there”/>
<Message from=”B”to=”C”msg=”Hi”/>
<Message from=”C”to=”A”msg=”G’day”/>
<Message from=”C”to=”B”msg=”G’day”/>
<MessageSequence>
</Sequence Definition>
正如公知的,XML允許利用標(biāo)簽定義元素。XML是一種“標(biāo)記”語言,它可能包含標(biāo)記符號來描述頁面或文件的內(nèi)容。XML按照被描述的是什么數(shù)據(jù)來描述文件的內(nèi)容。例如,被置于標(biāo)記標(biāo)簽內(nèi)的詞“phonenum”可指示接下來的數(shù)據(jù)是電話號碼。從而,XML允許定義元素,例如此示例中的“phonenum”元素。這意味著XML文件可單純地作為數(shù)據(jù)被程序處理,或者它可以以類似的數(shù)據(jù)被存儲在另一計算機(jī)上,或者就像HTML文件那樣,它可被顯示。例如,根據(jù)接收計算機(jī)中的應(yīng)用程序希望如何處理電話號碼,它可被存儲、顯示或撥號。XML是“可擴(kuò)展”的,因為與HTML不同,標(biāo)記符號是無限制的并且是自定義的。在上述示例性XML代碼中,定義了元素SequenceDefinition、MessageSequence和Message。SequenceDefinition元素在此情形下是最外層標(biāo)簽,它包含了單幅圖的完整定義。SequenceDefinition元素包括“title”屬性,該屬性可用于提供圖的標(biāo)題。MessageSequence元素包含動作者之間的事務(wù)集合,并且每個消息元素利用“msg”屬性所給出的注釋來定義“來自”和“去往”動作者之間的單個事務(wù)。解析XML文件的程序(例如源解析器301)可通過搜尋SequenceDefinition元素,來確定該文件包括序列定義。然后解析器可假定在開放和關(guān)閉SequenceDefinition標(biāo)簽之間找到的所有內(nèi)容都與定義有關(guān),并且應(yīng)該遵循這種定義的預(yù)期語法,在此情況下預(yù)期語法是包含一個或多個消息標(biāo)簽的至少一個MessageSequence標(biāo)簽集合。
源解析器301接收源文件101的上述XML,并且將其解析為內(nèi)部數(shù)據(jù)模型302。從上述示例性XML代碼導(dǎo)出的內(nèi)部數(shù)據(jù)模型302可能是下面這個樣子的DiagramData{{Title {“A Simple Diagram”}}{ActorList {A B C}}{MessageList{{A B“Hellow”}{B A“Hello there”}{B C“Hi”}{C A“G’day”}{C B“G’day”}
源解析器301擁有關(guān)于源文件格式和語法的明確知識,以便能夠提取構(gòu)造圖所需的信息。這種知識特定于每種具體源文件類型,并且實際上可能會隨著時間而改變,或者對于本發(fā)明的不同實施例可能是不同的。以這種方式經(jīng)由內(nèi)部數(shù)據(jù)模型302將源解析器301與圖解析器303分離開來允許了一種能夠迅速適應(yīng)于不同源文件格式而無需改變基本圖生成過程的實現(xiàn)方式。從而單個實現(xiàn)方式可以支持許多不同的XML語法,或者實際上可以一起支持其他文件格式,也許是類似于windows“.ini”文件的結(jié)構(gòu)化文本,或者任何其他任意的輸入格式。這種實現(xiàn)方式必須對每種支持的格式都有一個源解析器301實現(xiàn),但是對于內(nèi)部數(shù)據(jù)模型302、圖解析器303和呈現(xiàn)引擎203中的每一個,只要有單個實現(xiàn)即可。
此外,在某些實施例中,創(chuàng)建序列圖103所需的信息中的一些可能不是在源文件101中明確提供的,而是在其已經(jīng)全部被解析之后,從可用數(shù)據(jù)導(dǎo)出的。在這種情況下,單次通過源文件101就直接生成呈現(xiàn)引擎命令是不可行的,而是,數(shù)據(jù)必須被存儲直到可以創(chuàng)建整個集合。在該示例中,只有在所有的消息元素已被解析之后,動作者的完整列表才能被確定。但是,在可以生成圖時,動作者的完整列表必須是已知的。
一旦源文件的上述XML已被解析成內(nèi)部數(shù)據(jù)模型302,圖解析器303就處理這種內(nèi)部數(shù)據(jù)模型302,并生成繪圖命令序列。對于上述示例和示例性的呈現(xiàn)引擎API,命令集合可能如下SequenceDiagram::sequencediagram.myDiag-title“A Simple Diagram”myDiag add actor-id AmyDiag add actor-id BmyDiag add actor-id CmyDiag add message-from A-to B-text“Hello”myDiag add message-from B-to A-text“Hello there”myDiag add message-from B-to C-text“Hi”myDiag add message-from C-to A-text“G’day”myDiag add message-from C-to B-text“G’day”myDiag refresh
呈現(xiàn)引擎203接收上述繪圖命令,并且生成圖4的示例性序列圖400。如圖4所示,序列圖400包括標(biāo)題401“A Simple Diagram”,如上述示例性XML源文件101中指定的那樣。另外,序列圖400包括動作者A(402)、B(403)和C(404),如上述示例性XML源文件所定義的那樣。序列圖400經(jīng)由箭頭405示出動作者A對動作者B說“Hello”。序列圖400經(jīng)由箭頭406和407示出動作者B對動作者A說“Hellothere”以及對動作者C說“Hi”。最后,序列圖400經(jīng)由箭頭408和409示出動作者C對動作者A和B說“G’day”。
應(yīng)該從上述示例中使用的示例性會話中意識到,任何應(yīng)用(例如通信協(xié)議等)的流程都可被描述在XML源文件中,該XML源文件被序列圖生成器102用于生成表示這種應(yīng)用的流程的序列圖。
轉(zhuǎn)到圖5,其中示出了根據(jù)一個實施例的序列圖生成器的操作流程圖。在操作塊501中,源解析器301接收以非專屬語言(例如XML)寫成的文本源文件101,并且定義應(yīng)用(例如兩個或更多個動作者之間的會話、通信協(xié)議等)的流程。在操作塊502中,源解析器301基于文本源文件101構(gòu)建數(shù)據(jù)模型302,用于文本源文件101所定義的流程的圖示。在操作塊503中,圖解析器303基于數(shù)據(jù)模型302生成相應(yīng)的繪圖命令。在操作塊504中,響應(yīng)于接收到繪圖命令,呈現(xiàn)引擎203呈現(xiàn)表示文本源文件101所定義的流程的序列圖103。
如上所述,在某些實施例中,XML被用在源文件中,用來描述應(yīng)用的序列(或“流程”)。一個實施例中使用的示例性XML元素在下文中進(jìn)一步描述。
如上所述,根據(jù)一個實施例,在XML中,序列是用SequenceDefinition元素來定義的。構(gòu)成一個實施例中的序列描述的各種XML元素在以下表1中提供。


表1應(yīng)該注意,為了支持連續(xù)/單次XML解析器,GroupDefinitions元素應(yīng)該出現(xiàn)在ActorRoleMap之前,并且ActorRoleMap元素應(yīng)該在任何Heading、Link或Message元素之前。ActorRole元素在ActorRoleMap內(nèi)的順序定義圖中Actor從左到右的順序。
Heading、Link和Message元素都可出現(xiàn)零次或更多次,并且可以是任何順序。它們的順序定義了沿圖中的垂直時間軸從上到下的布置。
根據(jù)一個實施例的SequenceDefinition元素屬性定義在以下表2中提供。


表2根據(jù)一個實施例的ActorRole元素屬性定義在以下表3中提供。

表3根據(jù)一個實施例的Group元素屬性定義在以下表4中提供。


表4根據(jù)一個實施例的Actor元素屬性定義在以下表5中提供。

表5根據(jù)一個實施例的Heading元素屬性定義在以下表6中提供。

表6根據(jù)一個實施例的Message元素字段定義在以下表7中提供。


表7根據(jù)一個實施例的Link元素字段定義在以下表8中提供。

表8考慮到上述情況,本發(fā)明的實施例使得能夠從簡單的文本描述,自動生成高質(zhì)量序列圖。這種序列圖自動生成解決了格式不統(tǒng)一、標(biāo)準(zhǔn)化布局、易于維護(hù)以及處理任意大的數(shù)據(jù)集合或在數(shù)據(jù)變化時迅速重新生成圖的能力等問題,這些在手動創(chuàng)建/維護(hù)序列圖時都是成問題的。
如上所述,提供了支持以非專屬語言(例如XML)寫成的文本描述的實施例。過去,非專屬語言被定義來描述消息交換(例如,EventStudio,http//www.eventhelix.com/EventStudio/)。本發(fā)明的一個實施例使得能夠使用XML這種非專屬語言來表達(dá)對于圖生成引擎的輸入數(shù)據(jù)。許多免費商業(yè)工具普遍可用于書寫和編輯XML文本。XML的語法和結(jié)構(gòu)是廣為人知的并且是易于學(xué)習(xí)的。使用XML這種標(biāo)準(zhǔn)的且受到良好支持的語言,使得終端用戶能夠更快更容易地實現(xiàn)其目標(biāo),而無需學(xué)習(xí)新的或?qū)俚恼Z言。以上提供了用于指定序列事務(wù)的XML格式的示例性定義。從而可以開發(fā)明確地定義事務(wù)文件語法的XML方案。當(dāng)然,本發(fā)明的范圍不限于這里所描述的特定語法,而是任何可開發(fā)的適當(dāng)語法都可根據(jù)這里所描述的概念而被利用。
本發(fā)明的某些實施例還使得能夠交互式地編輯消息定義數(shù)據(jù)。即,提供了圖形用戶界面(GUI),其允許用戶編輯屏幕上的輸入數(shù)據(jù)(源文件101),然后按照需要重新生成序列圖,以查看對輸入數(shù)據(jù)做出的改變的結(jié)果。這是通過將源文件全文加載到中間變量中來實現(xiàn)的。此變量的內(nèi)容被顯示在GUI中作為可編輯文本。每當(dāng)用戶請求重新生成圖時,此變量的內(nèi)容就被饋送到源解析器中,就好像它是來自源文件本身一樣。這通過提供關(guān)于生成的圖看起來會是什么樣子的立即反饋,加速了有效輸入數(shù)據(jù)的開發(fā)。
另外,本發(fā)明的某些實施例提供了用于靜態(tài)圖生成的命令行引擎。即,提供了命令行引擎,其允許圖被自動生成并被保存到文件和/或被顯示。這允許了圖生成過程被集成到終端用戶的發(fā)布自動化過程中。在這種實施例的一個示例中,命令行引擎接收定義要處理的輸入文件(“源文件”)列表的命令行參數(shù)集合、所需的圖文件格式以及生成的文件(即生成的序列圖)將寫入的目的地目錄,作為輸入。以下是根據(jù)一個實施例的這種命令行的示例generatediagrams-srcdir“c/My xml”-filepattern*.xml-imageformatjpg-outdir“c/My Pictures”在此示例中,在目錄“c/My xml”中找到的所有匹配模式“.xml”的文件都被圖生成器處理,一次處理一個。對于每個輸入文件,生成器在目錄“c/My Pictures”中創(chuàng)建JPEG格式的輸出文件。這種實施例允許了自動生成數(shù)十、數(shù)百甚至數(shù)千序列圖,而不需要每次生成都要用戶交互。命令行引擎還可用于按照需要生成圖。其中這一點有意義的一個實施例是測試管理器應(yīng)用,在這種應(yīng)用中每個測試案例將具有唯一的描述,包括序列定義。為了避免隨每個測試案例而將在線幫助中的圖的內(nèi)容保持最新的維護(hù)成本,測試管理器應(yīng)用可經(jīng)由命令行引擎,在用戶打開任何給定測試案例的幫助頁面時,按照需要為該具體測試案例生成圖。
本發(fā)明的某些實施例還提供了用于動態(tài)圖生成的運行時引擎。這允許了提供這樣一種運行時引擎的能力這種運行時引擎可被集成到GUI應(yīng)用中,并且可按照需要從被封裝應(yīng)用動態(tài)提供的數(shù)據(jù)生成圖。此方法的一個示例是根據(jù)協(xié)議分析器捕捉的分組序列,自動生成序列圖。在這種應(yīng)用中,源文件是捕捉到的數(shù)據(jù)分組。此應(yīng)用中的源解析器的實現(xiàn)從每個捕捉到的分組中提取信息,以便構(gòu)建內(nèi)部數(shù)據(jù)模型,然后可根據(jù)該內(nèi)部數(shù)據(jù)模型生成示出分組流程的圖。在這種應(yīng)用中,可在每個分組被捕捉時即時生成圖,或者在協(xié)議分析器應(yīng)用的用戶為目前在捕捉緩沖器中的分組集合請求圖時,按照需要生成圖。
在某些實施例中,序列圖生成器可以實現(xiàn)為整個文檔生成工具的一部分。從而,序列圖自動生成可被集成到更廣泛的文檔自動過程中,動態(tài)地生成與從共同或不同源取得的封裝文本集成并被組合成最終的集成文檔中的圖。
此方法的一個示例是從以XML寫成的原始說明書自動生成以HTML寫成的說明書文檔。XML可包含完整的說明書細(xì)節(jié),其中包括說明書文本和(一個或多個)序列圖定義。
此方法的優(yōu)點是說明書的內(nèi)容可被捕捉,并被維護(hù)在單個源文件中,而包括序列圖在內(nèi)的印刷質(zhì)量輸出可被自動生成??赏耆毩⒂诖鎯υ谠糥ML源文件中的內(nèi)容而更改生成的輸出的外觀。
該過程可擴(kuò)展到提供一個接著一個的多個輸入說明書的批處理。例如,說明書組可在單個目錄中一起成組,或者分散在共同根目錄的多個目錄中。在此情況下,文檔生成器可被設(shè)計為在目錄間重復(fù),搜索正確格式的輸入文件,并依次處理每一個輸入文件??赏ㄟ^以下方式來識別輸入文件通過定義的文件命名協(xié)定、通過位于預(yù)定目錄或子目錄中、或者通過檢查其內(nèi)容以查找對預(yù)期的XML格式的匹配。
轉(zhuǎn)到圖6,其中示出了示例性系統(tǒng)600,其中文檔生成器601和序列圖生成器102A被實現(xiàn)為分離的組件,它們可并行使用,以從源文件101A生成整個文檔(既有文本又有序列圖),在此情形下源文件101A是XML源文件。在此情形下,主文檔生成應(yīng)用601的源解析器301A解析輸入源文件101A,以構(gòu)建其內(nèi)部數(shù)據(jù)模型302A。例如,數(shù)據(jù)模型302A標(biāo)識源文件101A中的元素,例如源文件101A中描述的文本元素和序列圖元素。對于源解析器301A所識別的序列圖元素,源解析器301A可在數(shù)據(jù)模型302A中例如包含諸如以下信息指示源文件101A的相應(yīng)部分描述了序列圖元素的標(biāo)識符、源文件名稱和/或用于生成的序列圖(由圖生成器102A以下述方式生成)的輸出文件名。源解析器301A構(gòu)建的內(nèi)部數(shù)據(jù)模型302A維持了源文件101A中描述的各種元素(例如文本元素和序列圖元素)的關(guān)系和層次結(jié)構(gòu)。從而,可生成所得到的輸出文檔605,以保持各種文本和序列圖元素在源文件101A中出現(xiàn)的相對順序。
根據(jù)數(shù)據(jù)模型302A,文檔生成器601生成輸出文檔605的各種部分,在此示例中是HTML的。更具體而言,文檔解析器602使用數(shù)據(jù)模型302A中的信息來識別將被寫入到HTML輸出文檔605的源文件101A的文本部分,以及識別序列圖元素。源文件101A中的序列圖定義的每個實例變成生成的HTML文檔605中對外部圖像文件103A的引用604(例如<imgsrc=”xxx”>標(biāo)簽)。
輸入源文件101A還被饋送到圖生成應(yīng)用102A中,該圖生成應(yīng)用102A以上述方式為源文件101A中的每個序列圖定義生成輸出圖文件103A。在此示例中,一旦文檔解析器602遇到源文件101A的內(nèi)部數(shù)據(jù)模型302A中標(biāo)識的序列圖元素,這種文檔解析器602就調(diào)用圖生成器102A,并且使這種圖生成器生成相應(yīng)的序列圖。從而,序列圖生成器102A以上述方式(例如利用圖3的序列圖生成器102)訪問源文件101A,識別其中定義的相應(yīng)的序列圖元素,并且基于源文件的描述生成適當(dāng)?shù)男蛄袌D103A。即,源解析器301按照以上結(jié)合圖3所描述的方式,解析XML源文件101A,并且用與這種源文件101A中描述的識別的(一個或多個)序列圖相對應(yīng)的信息,填充內(nèi)部數(shù)據(jù)模型302。圖解析器303解析內(nèi)部數(shù)據(jù)模型302,并且生成繪圖命令到呈現(xiàn)引擎203,以按上述方式生成序列圖文件103A。
從而,在此示例性實施例中,(文檔生成器601的)源解析器301A讀取源文本101A,檢查語法,并構(gòu)建內(nèi)部數(shù)據(jù)模型302A,該內(nèi)部數(shù)據(jù)模型302A表示了從源101A讀取的將作為文本內(nèi)容包含在要生成的文檔605中的所有信息,而(序列圖生成器102A的)源解析器301讀取源文本101A,檢查語法,并構(gòu)建內(nèi)部數(shù)據(jù)模型302,該內(nèi)部數(shù)據(jù)模型302表示了源101A中描述的所有序列圖。數(shù)據(jù)模型302和302A保持了源101A中表達(dá)的層次結(jié)構(gòu)和關(guān)系(例如,文本內(nèi)容和序列圖的層次結(jié)構(gòu)和關(guān)系)。文檔生成器601的文檔解析器602處理模型數(shù)據(jù)302A,以識別文檔605中要生成的部分,并提取每個部分的內(nèi)容。然后文檔解析器602生成輸出格式化命令序列到HTML生成器603。HTML生成器603將格式化命令變換為格式良好的HTML,并將其寫到輸出文件605。
從而,文檔生成器601使用源文件101A來創(chuàng)建輸出文件605的文本,并且創(chuàng)建對于源文件101A中標(biāo)識的序列圖的引用(例如超鏈接)604,圖生成器102A創(chuàng)建源文件101A中標(biāo)識的序列圖103A。因此,在某些實施例中,引用604可以是文檔605內(nèi)的到相應(yīng)的序列圖的超鏈接,以使得用戶可點擊超鏈接來訪問相應(yīng)的序列圖103A。在其他實施例中,序列圖103A可被顯示在605內(nèi)相應(yīng)的引用604處。
轉(zhuǎn)到圖7,其中示出了示例性系統(tǒng)700,其中序列圖生成器被集成在文檔生成器應(yīng)用601A內(nèi)。在此情形下,圖生成器的特征被與文檔生成器601A集成。輸入源文件101A被源解析器301A解析一次,文檔解析器602和圖解析器303A共享共同的內(nèi)部數(shù)據(jù)模型302A。從而,在此示例中,源解析器301A解析源文件101A中包含的文本內(nèi)容信息和序列圖信息,同時保持這種源文件101A的關(guān)系和層次結(jié)構(gòu)。對于在輸入源文件101A中找到的每個序列圖定義,文檔解析器602調(diào)用圖解析器303A。
從某種意義上來說,圖7的這種文檔生成器配置是較簡單的方案,因為它使得兩個分離的應(yīng)用之間不需要傳輸信息來為每個生成的序列圖識別輸入文件和所需的輸出文件名和位置。所有這些信息現(xiàn)在都包含在一個應(yīng)用中。
在一個實施例中,序列圖生成器和文檔生成器是存儲到計算機(jī)可讀介質(zhì)上并可由諸如個人計算機(jī)(PC)這樣的基于處理器的設(shè)備所執(zhí)行的軟件代碼。但是,應(yīng)該理解上述序列圖生成器和文檔生成器的元素可實現(xiàn)為軟件、硬件和/或其組合。
雖然已詳細(xì)描述了本發(fā)明及其優(yōu)點,但是應(yīng)該理解,在不脫離所附權(quán)利要求書所限定的本發(fā)明的精神和范圍的情況下,可對其進(jìn)行各種變化、替換和更改。此外,本申請的范圍不是限于說明書中描述的過程、機(jī)器、制造、物質(zhì)構(gòu)成、裝置、方法和步驟的特定實施例。正如本領(lǐng)域的普通技術(shù)人員易從本發(fā)明的公開中意識到的,根據(jù)本發(fā)明,可利用現(xiàn)存的或以后將開發(fā)的與這里所描述的相應(yīng)實施例執(zhí)行基本相同的功能或?qū)崿F(xiàn)基本相同的結(jié)果的過程、機(jī)器、制造、物質(zhì)構(gòu)成、裝置、方法或步驟。因此,所附權(quán)利要求書是將這種過程、機(jī)器、制造、物質(zhì)構(gòu)成、裝置、方法或步驟包括在其范圍內(nèi)。
權(quán)利要求
1.一種系統(tǒng),包括以非專屬語言寫成的文本源文件,其中所述文本源文件描述應(yīng)用的流程;以及通用序列圖生成器,所述通用序列圖生成器可操作以接收所述源文件作為輸入,并且生成表示所述源文件所描述的所述流程的序列圖。
2.如權(quán)利要求1所述的系統(tǒng),其中,所述非專屬語言包括標(biāo)記語言。
3.如權(quán)利要求1所述的系統(tǒng),其中,所述非專屬語言包括可擴(kuò)展標(biāo)記語言。
4.如權(quán)利要求1所述的系統(tǒng),其中,所述序列圖生成器的通用在于所述序列圖生成器可操作以為所述文本源文件所描述的任何應(yīng)用的流程生成所述序列圖。
5.如權(quán)利要求1所述的系統(tǒng),其中,被所述文本源文件描述了所述流程的所述應(yīng)用包括從以下組中選擇的一個計算機(jī)可執(zhí)行軟件應(yīng)用程序、通信協(xié)議以及動作者之間的消息交換。
6.如權(quán)利要求1所述的系統(tǒng),其中,被所述文本源文件描述了所述流程的所述應(yīng)用不是所述文本源文件。
7.如權(quán)利要求1所述的系統(tǒng),其中,所述通用序列圖生成器包括源解析器,所述源解析器可操作以讀取輸入源文件,并且構(gòu)建表示圖元數(shù)據(jù)的內(nèi)部數(shù)據(jù)模型。
8.如權(quán)利要求7所述的系統(tǒng),其中,所述源解析器可操作以在所述輸入源文件中識別所描述的動作者和動作者之間傳遞的消息序列。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述內(nèi)部數(shù)據(jù)模型包括與識別出的動作者和消息序列相對應(yīng)的所述圖元數(shù)據(jù)。
10.如權(quán)利要求7所述的系統(tǒng),其中,所述通用序列圖生成器還包括圖解析器,所述圖解析器可操作以處理所述內(nèi)部數(shù)據(jù)模型并生成相應(yīng)的繪圖命令。
11.如權(quán)利要求10所述的系統(tǒng),其中,所述通用序列圖生成器還包括呈現(xiàn)引擎,所述呈現(xiàn)引擎可操作以接收所述繪圖命令,并生成表示所述源文件所描述的所述流程的所述序列圖。
12.如權(quán)利要求1所述的系統(tǒng),其中,所述通用序列圖生成器包括命令行工具,所述命令行工具可操作以響應(yīng)于接收到的命令行命令,從至少一個源文件生成至少一個序列圖。
13.一種方法,包括將文本源文件接收到源解析器中,所述文本源文件是用非專屬語言寫成的并且描述應(yīng)用的流程;通過所述源解析器并基于所述文本源文件,為所述文本源文件所描述的所述流程的圖構(gòu)建數(shù)據(jù)模型;通過圖解析器并基于所述數(shù)據(jù)模型,生成相應(yīng)的繪圖命令;以及響應(yīng)于所述繪圖命令,通過呈現(xiàn)引擎呈現(xiàn)表示所述文本源文件所描述的所述流程的序列圖。
14.如權(quán)利要求13所述的方法,其中,所述非專屬語言包括標(biāo)記語言。
15.如權(quán)利要求13所述的方法,其中,所述非專屬語言包括可擴(kuò)展標(biāo)記語言。
16.如權(quán)利要求13所述的方法,其中,所述文本源文件獨立于被所述文本源文件描述了所述流程的所述應(yīng)用。
17.如權(quán)利要求13所述的方法,其中,所述的通過所述源解析器構(gòu)建所述數(shù)據(jù)模型包括在所述文本源文件中識別所描述的動作者和動作者之間傳遞的消息序列。
18.如權(quán)利要求17所述的方法,其中,所述的通過所述源解析器構(gòu)建所述數(shù)據(jù)模型還包括在所述數(shù)據(jù)模型中包括與識別出的動作者和消息序列相對應(yīng)的信息。
19.如權(quán)利要求13所述的方法,其中,所述源解析器、圖解析器和呈現(xiàn)引擎可操作以生成表示在所述文本源文件中所描述的任何應(yīng)用的流程的所述序列圖。
20.如權(quán)利要求13所述的方法,其中,被所述文本源文件描述了所述流程的所述應(yīng)用包括從以下組中選擇的任何一個計算機(jī)可執(zhí)行軟件應(yīng)用程序、通信協(xié)議和動作者之間的消息交換。
21.如權(quán)利要求13所述的方法,其中,所述的將所述文本源文件接收到所述源解析器中包括響應(yīng)于命令行命令,將至少一個文本源文件接收到所述源解析器中。
22.一種被存儲到計算機(jī)可讀介質(zhì)的計算機(jī)可讀代碼,所述計算機(jī)可讀代碼包括用于接收描述應(yīng)用的流程的文本源文件的代碼,其中所述文本源文件是用非專屬語言寫成的并且是獨立于所述應(yīng)用的;以及用于生成繪圖命令的代碼,所述繪圖命令用于呈現(xiàn)表示所述文本源文件所描述的所述流程的序列圖。
23.如權(quán)利要求22所述的計算機(jī)可執(zhí)行代碼,其中,所述用于生成繪圖命令的代碼包括用于在所述文本源文件中識別所描述的動作者和動作者之間傳遞的消息序列的代碼。
24.如權(quán)利要求23所述的計算機(jī)可執(zhí)行代碼,還包括用于構(gòu)建數(shù)據(jù)模型的代碼,所述數(shù)據(jù)模型包括與識別出的動作者和消息序列相對應(yīng)的信息。
25.如權(quán)利要求23所述的計算機(jī)可執(zhí)行代碼,其中,所述用于生成繪圖命令的代碼還包括用于基于識別出的動作者和消息序列生成所述繪圖命令的代碼。
26.如權(quán)利要求22所述的計算機(jī)可執(zhí)行代碼,還包括用于響應(yīng)于生成的繪圖命令,呈現(xiàn)表示所述文本源文件所描述的所述流程的所述序列圖的代碼。
27.如權(quán)利要求22所述的計算機(jī)可執(zhí)行代碼,其中,所述非專屬語言包括標(biāo)記語言。
28.如權(quán)利要求22所述的計算機(jī)可執(zhí)行代碼,其中,所述非專屬語言包括可擴(kuò)展標(biāo)記語言。
29.如權(quán)利要求22所述的計算機(jī)可執(zhí)行代碼,其中,被所述文本源文件描述了所述流程的所述應(yīng)用包括從以下組中選擇的任何一個計算機(jī)可執(zhí)行軟件應(yīng)用程序、通信協(xié)議和動作者之間的消息交換。
30.一種通用序列圖生成器,所述通用序列圖生成器可操作以生成表示在文本源文件中所描述的任何應(yīng)用的流程的序列圖,所述通用序列圖生成器包括用于接收所述文本源文件的裝置,其中所述文本源文件是用非專屬語言寫成的并且描述應(yīng)用的流程;以及用于生成表示所述源文本所描述的所述流程的序列圖的裝置。
31.如權(quán)利要求30所述的通用序列圖生成器,其中,所述非專屬語言包括可擴(kuò)展標(biāo)記語言。
全文摘要
一種由非專屬語言驅(qū)動的通用序列圖生成器。根據(jù)一個實施例,源文件以非專屬語言描述應(yīng)用的流程(例如消息交換)。自動序列圖生成器可操作以接收源文件作為輸入,并且基于這種源文件,生成表示源文件所描述的流程的序列圖。在示例性實施例中,非專屬語言是標(biāo)記語言,如可擴(kuò)展標(biāo)記語言(XML)。序列圖生成器是通用的,因為它能夠生成表示源文件中所描述的任何應(yīng)用的流程的序列圖。源文件為之描述流程的應(yīng)用可以是任何類型的應(yīng)用,包括但不限于計算機(jī)可讀軟件應(yīng)用程序、通信協(xié)議或動作者之間的任何消息交換。
文檔編號G06F9/44GK1808377SQ20061000153
公開日2006年7月26日 申請日期2006年1月18日 優(yōu)先權(quán)日2005年1月19日
發(fā)明者肯尼思·M·格林 申請人:安捷倫科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
北海市| 长治市| 图木舒克市| 大厂| 金川县| 东丰县| 东莞市| 浦东新区| 宿迁市| 宁晋县| 溆浦县| 房产| 孙吴县| 龙海市| 江华| 恩施市| 荣成市| 涞水县| 孝感市| 南宫市| 祁门县| 收藏| 北川| 石家庄市| 将乐县| 兰溪市| 板桥市| 麦盖提县| 林口县| 休宁县| 盐亭县| 鄂伦春自治旗| 清原| 合江县| 贺兰县| 舞钢市| 安顺市| 重庆市| 德江县| 荆门市| 合水县|