圖3描述了業務流程的實例。角色客戶(customer) 下了一份定單,然后銷售(sales)部門中的某個工人確認此定單。如果定單有效,此工人調用另一業務流程“公司運輸物品(company ships an item)”的實例。這個類型的圖在UML表示法指南中沒有明確的提到,然而,它符合UML的元模型。在對象生命線頂部的符號代表分類器角色,如圖3中的角色、對象角色和用例角色。
圖4 UML用例圖描述業務流程之間的靜態關系
圖4是UML用例圖,描述了業務流程之間的靜態關系。業務流程描述組織(organization)與角色客戶(customer)的協作。注意在UML的1.1版本中,用例不能相互聯系而總是由角色發送信號觸發。這給建模環境帶來困難,一個用例在運行期間,當特殊條件出現時,另一個用例也開始啟動。在這種情況下,角色通過與另一個用例的聯系初始化此用例而不需發出任何特定的開始信號。例如,如果客戶的請求被評估為有效,用例公司運輸物品(company ships an item)被組織中的對象觸發。這個用例實例不直接由客戶觸發,希望下一版本的UML將減少用例間有關聯系的限制。
UML用例圖不容易表達出用例實例的順序,例如,首先客戶請求一項物品,然后公司將傳送此物品,最后客戶付款。一個解決的方法就是在用例間使用約束{precedes}或依賴關系 <<precedes>> 。類似的關系同樣存在于OML(OPEN modeling language),參看[3],Robert C. Martin建議使用關鍵字follows替代precedes,參看[6]。這樣替代的原因是依賴關系 <<follows>>與依賴關系<<preceds>>的指向相反,依賴關系<<follows>> 指向通常的依賴方向——從依賴元素指向獨立元素,至于哪一個更直觀仍是個未解決的問題。然而,帶約束或依賴的圖仍然是靜態結構圖,并不描述特定場景。
組織級(organization level)指定了一個組織(如公司、學校和政府機關)的職責,以及該組織的業務環境。工件組織(organization)指定了組織的職責和相關的靜態屬性。工件組織模型(organization model)指定了組織與其他組織之間的關系。工件組織用例(organization use case)用流程目標、前置條件、后置條件和業務流程必須符合與其相關的靜態屬性的業務規則來指定組織范圍的業務流程。這個業務流程是組織與其他組織之間的協作,這種協作是在工件組織用例模型(organization use model)中指定的,見圖11中的依賴關系協作。組織業務流程的實例是由組織交互模型(organization interaction model)用組織與其他組織間的交互來指定的。組織業務流程可以精化到更具體的系統業務流程,見圖11中的依賴關系精化。工件組織用例生命周期(organization use case life cycle)指定了所允許的系統業務流程。組織用例交互模型(organization use case interaction model)指定了典型的業務流程實例序列,見圖11中的實例依賴關系。組織業務流程的實現用軟件系統和它的用戶(團隊角色)之間的交互來指定,見圖11和12中實現依賴關系。
系統級(system level)指定了軟件系統的環境以及與它的角色之間的關系。工件系統(system)用職責、前置條件、后置條件、參數和返回值來指明系統的接口和操作。若角色職責和接口是相關的,并由工件角色(actor)指定。系統生命周期(system lifecycle)指定了所允許的系統操作和事件。系統模型(system model)指定了軟件系統和角色(其他系統和用戶)之間的關系,系統交互模型(system interaction model)指定了軟件系統和角色之間的交互。這些交互是系統業務流程的實例,見圖11中依賴關系實例。工件系統用例(system use case)用流程的目標、前置條件、后置條件、非功能性需求、業務規則和其他相關靜態屬性指定了在系統范圍內的業務流程。這個業務流程是系統與其它系統或用戶的協作。
這些系統與它的角色之間的協作是在工件系統用例模型(system use case model)中描述的,見圖11中的依賴關系協作。業務流程接口的動態屬性,如在業務流程范圍內所允許的系統操作順序,是在系統用例生命周期(system use case life cycle)中指定的。系統用例交互模型(system use case interaction model)指定了典型的業務流程實例的序列。系統業務流程可以精化到子系統業務流程中,見圖11中的依賴關系精化。系統業務流程的實現用構架級的子系統間的交互來指定,見圖11中的依賴關系實現。
構架級(architectual level)定義了子系統(組件)、子系統的職責、接口、關系和交互。工件子系統(subsystem)職責、前置條件、后置條件、參數和返回值指定了子系統接口和子系統操作。子系統生命周期(subsystem lifecycle)指定了所允許的子系統的操作和事件的順序。子系統模型(subsystem model)指定了子系統和其他子系統之間的關系,子系統交互模型(subsystem interaction model)指定了子系統之間的交互,這些交互是子系統業務流程的實例,見圖11中依賴關系<<實例>>。工件子系統用例(subsystem use case)指定了在子系統范圍內的業務流程,這個業務流程是子系統與其它子系統、系統和用戶之間的協作。子系統和它的角色之間的所有協作是在系統用例模型(system use case)中描述的,見圖11中的依賴關系<<協作>>。子系統業務流程接口的動態特性,如在業務流程范圍里所允許的子系統操作順序是在子系統用例生命周期(subsystem use case life cycle)中指定的。子系統用例交互模型(subsystem use case interaction model)指定了業務流程實例的典型序列。子系統業務流程的實現用類級別上對象之間的交互來描述,見圖11中的依賴關系<<實現>>。
圖12中,設計工件描述了組織團隊結構。事實上,它與描述軟件子系統結構的工件沒有什么太大的區別。團隊的角色可以表示成UML構造型的類,工件角色(role)指定工人角色的職責及其它相關的靜態屬性。工件角色生命周期(role lifecycle)指定了角色的動態屬性、它們的狀態以及它們所響應的事件。工件角色模型(role model)指定角色之間的靜態關系。成員級業務流程(member level business process)指定團隊成員角色與其它團隊成員角色之間的協作,見圖12中的依賴關系<<協作>>。這些業務流程的實例是在工件角色交互模型(role interaction model)用角色實例之間的交互指定的,見圖12中的依賴關系<<實例>>。
圖12 在團隊和業務流程視圖中,設計工件描述了軟件系統
稱為團隊(team)的設計工件是一個角色包,指明了團隊的職責以及相關的靜態屬性。團隊的動態屬性是在工件團隊生命周期(team life cycle)中指定的。工件團隊模型(team model)指定了團隊之間的靜態關系。團隊級業務流程(team level business process)指定了團隊和其它團隊之間的協作,見圖12中的依賴關系<<協作>>。團隊級業務流程的實例是在團隊交互模型(team interaction level)中指定的,見圖12中的依賴關系<<實例>>。團隊級業務流程的實現用團隊成員之間的交互以及團隊成員與軟件系統之間的交互來指定,如圖12中的依賴關系<<實現>>。設計工件的模式可以用相似的方法應用在更高的抽象級4上。