活動圖
業務用例工作流程說明了業務為向所服務的業務主角提供其所需的價值而必須完成的工作。業務用例由一系列活動組成,它們共同為業務主角生成某些工件。工作流程通常包括一個基本工作流程和一個或多個備選工作流程。工作流程的結構使用活動圖來進行說明。
工作流程活動圖用於研究實現業務目標時所要執行的各項任務或活動的順序安排。活動既可以是手動執行的任務,也可以是自動執行的任務。它可完成一個工作單元。
活動圖是狀態圖的一種特殊形式。其中所有或多數狀態都是活動狀態,而且所有或多數轉移都在源狀態中的活動完成時立即觸發。
基本圖
一個活動圖可能包括以下元素:
活動狀態表示在工作流程中執行某個活動或步驟。
轉移表示各種活動狀態的先後順序。這種轉移可稱為完成轉移。它不同於一般的轉移,因為它不需要明顯的觸發器事件,而是通過完成活動(用活動狀態表示)來觸發。
決策,為其定義了一組警戒條件。這些警戒條件決定在活動完成後將執行一組備選轉移中的哪一個轉移。您也可以使用判定圖示來表示執行緒重新合併的位置。決策和警戒條件使您能夠顯示業務用例的工作流程中的備選執行緒。
同步示意條用於顯示平行分支流。同步示意條使您能夠顯示業務用例的工作流程中的並行執行緒。
條件執行緒
警戒條件用於說明一組並行執行緒中的某個執行緒是有條件的。例如,在上面的“個人登記”示例中,進行登記的乘客可能是頻繁乘機旅行的顧客。在此情況下,您需要給他獎勵一些飛行哩程數。
嵌套圖
一個活動狀態可能要引用另一個活動圖,因為後者顯示了前者的內部結構。換言之,您可以嵌套活動圖。您可以顯示活動狀態中的子圖或是讓活動狀態引用另一個圖。
如果您希望在一幅圖中展示所有的工作流程細節,那么可顯示活動狀態中的子圖,這不失為一種方便的辦法。但是,如果所展示的工作流程較為複雜,這就會使活動圖難以理解。
或者,也可將子圖單獨放在一個圖中,然後讓活動狀態引用它。
為簡化工作流程圖,您可能要將子圖單獨放在一個圖中,然後讓子圖所詳細說明的活動狀態來引用它。
使用泳道
可以使用垂直實線將活動圖劃分為泳道。每條泳道代表整個工作流程的某個部分的職責,該職責由組織的某個部門來執行。泳道最終可以由組織單元或者業務對象模型中的一組類來實施。
泳道之間的排序並不會影響語義。每個活動狀態都指派了一條泳道,而轉移則可能跨越數條泳道。
以上活動圖說明了代表一般銷售流程的業務用例工作流程。在此示例中,泳道代表組織中的各個部門。
使用示例
就工作流程的活動圖和文本說明來說,首先使用哪一個?這多少取決於您的工作習慣,以及您是否以圖表的方式進行思考。有些人傾向於先在一個圖中勾畫出結構的輪廓,然後再用文本進行詳細說明。其他人則可能願意先制定活動狀態的大綱;對此達成一致之後,再使用圖來定義結構。
另一個適當的問題是,您是否的確既需要文本文檔又需要圖。活動圖技術確實允許您為每個活動狀態撰寫簡要說明,這將使工作流程的文本規約變得毫無用處。在這種情況下,您需要對涉眾及其預期的規約格式保持高度的敏感性。
我們提供了一個示例活動圖,用於描述在指南:業務用例中定義的業務用例“提議流程”的工作流程。我們通過它來說明活動圖是如何幫助加深對工作流程的理解的。該示例來自於一個銷售電信網路解決方案的組織,其中每個解決方案都是為客戶量身定製的。
提議流程
名為“初步機會工作”的活動狀態包含了三個可平行執行的子步驟。這在此活動狀態的一個子圖中加以說明。
活動狀態“初步機會工作”的子圖。可以選擇制定銷售計畫,這通過即將進行的轉移中的警戒條件來說明。
活動狀態可以代表相當大的過程(帶有子結構),也可以代表某些相對較小的過程。如果您正使用活動圖來定義工作流程的結構,則不要表示活動圖中從頂層到最底層的所有結構層次。這很可能會使得活動圖非常難以理解(如果使用多個單獨的子圖,則會使多幅圖非常難以理解)。應該儘量在一個圖中概述整個工作流程,其中的少數幾個活動狀態可以有子圖。
業務對象
業務用例模型中的活動圖中對活動圖使用的符號作出了進一步的說明。本頁舉例說明如何套用符號來描述業務用例實現。
業務用例實現的活動圖用於研究完成業務目標的任務或活動的安排順序,並且這些任務或活動還可實現外部業務主角和內部業務角色之間的約定。活動是執行某個工作單元的任務,它既可手工執行,也可自動執行。
相關幫助
提供在業務中引入信息系統的理由以及對此舉措的理解。
為系統開發項目實施業務轉換機制確定目標。
證明基於詳細的業務流程指標而進行有關自動化方面的投資是正確的。
與序列圖(可認為它和活動圖具有類似的目的)相比,包含泳道和對象流的活動圖側重於如何將職責拆分為類,而序列圖則幫助您理解各對象是如何並且以何種順序進行互動的。活動圖側重於工作流程,而序列圖則側重於對業務實體的處理。活動圖和序列圖可作為互補性的技巧使用,其中序列圖用來表示活動狀態中發生的事情。
使用泳道
如果使用泳道,而且泳道與業務對象模型中的類(主要是業務角色)耦合,那么您就使用活動圖來記錄業務用例實現,而不是業務用例。
作為示例,我們給出了有關實現業務用例“提議流程”的活動圖。有關該業務用例的說明,請參見指南:業務用例。
通過檢查擔任特定角色(業務角色)的人員及其執行的活動,該活動圖向您詳細展示了業務中所發生的一切。如果是應用程式開發項目,這些圖將幫助您詳細了解該新應用程式將支持或影響的業務領域。它們幫助建立到所提議的新系統之間的連線點,而且這些連線點還產生了系統用例。
使用對象流
在本部分中,對象流用於顯示如何在工作流程中創建並使用業務實體。對象流允許您在活動圖中顯示活動狀態的輸入和輸出。這個符號有兩個元素:
對象流狀態代表一個類的對象,該對象參與了活動圖所表示的工作流程。該對象可以是某個活動的輸出,也可以是眾多其他活動的輸入。
對象流是一種控制流,其中有一個對象流狀態用作輸入或輸出。
對象流符號不僅僅表示對象本身的存在,而且還表明它所處的特定狀態。同一個對象可被大量的、改變該對象狀態的連續活動所控制。此後,該對象就可在活動圖中多次出現,而且每次出現時都表示其生命期中的不同狀態。該對象在每一點所處的狀態都可置於括弧內,並附加到其類名稱之後。
藉助於對象流表示的普通銷售流程,用來說明訂單狀態在執行工作流程的過程中是如何改變的。
一個對象流狀態可能表現為一個對象流(轉移)的目標和多個對象流(轉移)的來源。