我想表達對WF4一些擔憂。在我看來,就像你從鳥類角度描述工作流程一樣。工作流程是一個信息(表格)必須由多方批准,每個方面都有不同的責任。
當你從一個MVC前瞻性看問題,你會發現以下內容:
- 你有ASP.NET表單與基於角色的身份驗證的身份驗證。
- 您有多種型號 - 信息(您稱之爲表格)以及其他多種型號 - 例如
project manager
,team leader
和director
。在你的域模型(實體框架4/LINQ2SQL/NHibernate)中還有更多的其他連接器表/實體...
- 每個人都應該有一組不同的視圖,他們可以根據他們的權限訪問,以便與這些數據進行交互。
- 在每個視圖背後,您還有控制器負責處理讀取/寫入數據源以及其他邏輯的繁瑣工作。
雖然您當然可以創建工作流以在您的應用中實現一些邏輯 - 最終這些工作流將從您的控制器中調用。更進一步的,如果各方的批准過程是點擊「批准」按鈕或其他一些UI交互 - 我認爲使用WF4來實現這一點並不合理。
在我看來,WF4並不適合UI交互。當你想要創建後端代碼來處理大量數據和/或編排複雜的邏輯來完成某些任務時,這非常好。但是在你描述的情況下你並沒有真正的這種用途。
您的審批流程應至多在包含FormID,ApproverID,DateApproved,ApproverType和其他一些信息的數據庫中設置一個「已批准」記錄。 (批准者ID是進行批准的用戶的Guid/uniqueidentifier)。
爲團隊負責人和董事顯示「等待審批」表單的視圖應只查詢表單表,其中審批表上的聯接表示空記錄(又名...不存在審批記錄)在任何案例 - 根據您的領域模型以及數據結構的不同,您實際上並不需要比您的控制器更多的東西來實現您正在尋找的內容。
+1提學習曲線所需 – Habib
感謝Habib.OSU .. – Vivek
是lookslike學習曲線陡峭:( – user603007