2009-10-20 189 views
4

我有一個客戶端誰的興趣使用Windows Workflow Foundation(WF)技術在網絡驅動的應用程序。我是一名.NET開發人員,但我對WF或SharePoint工作流程沒有經驗。客戶想要做的大部分工作似乎很簡單,只是他們希望最終用戶能夠創建/編輯他們自己的定製工作流程。在我對WF的簡短研究中,似乎並不是典型的情況。允許用戶自己創建工作流是否可行,還是應該是一個自定義的ASP.NET MVC應用程序或者SharePoint應用程序?Windows工作流動態,用戶創建的工作流程

+0

SharePoint工作流程_are_ WF工作流程。 –

+1

SharePoint工作流程是準確的WF 3工作流程。 – Maurice

回答

4

用戶能夠改變工作流程應該是WF的重點之一。然而,在WF 3中,整個模型非常適用於代碼生成而不是標記,因此很難做到。並非不可能,因爲您可以使用純標記工作流程,但很難。

隨着WF 4的故事應該是更好的,因爲所有的工作流程都是純標記並沒有在所有涉及的代碼。所有代碼都在預定義的活動中進行編譯,用戶可以根據需要更改工作流程。此外,WF設計人員更容易在您的應用程序中重新放置。

PS SharePoint工作流是WF 3點的工作流程,即使在新的SharePoint版本,和WF 4是任何股無碼一個全新的產品。

2

您可能想建立一個狀態機,可以接受來自用戶的觸發器。 Nicholas Blumhardt擁有一款名爲stateless的非常棒的輕量級狀態機實現。您可以創建一個狀態機用一個簡單的聲明:

var stateMachine = new StateMachine<TState, TTrigger>(); 

從項目選址:

var phoneCall = new StateMachine<State, Trigger>(State.OffHook); 

phoneCall.Configure(State.OffHook) 
    .Permit(Trigger.CallDialed, State.Ringing); 

phoneCall.Configure(State.Ringing) 
    .Permit(Trigger.HungUp, State.OffHook) 
    .Permit(Trigger.CallConnected, State.Connected); 

phoneCall.Configure(State.Connected) 
    .OnEntry(() => StartCallTimer()) 
    .OnExit(() => StopCallTimer()) 
    .Permit(Trigger.LeftMessage, State.OffHook) 
    .Permit(Trigger.HungUp, State.OffHook) 
    .Permit(Trigger.PlacedOnHold, State.OnHold); 

// ... 

phoneCall.Fire(Trigger.CallDialled); 
Assert.AreEqual(State.Ringing, phoneCall.State); 

正如你所看到的代碼是非常簡單的。您可以使用單個項目完成所需的一切。

由於國家和觸發可以是任何類型的,則可以從數據庫中,也許步驟工作臺進給狀態機,並允許批准= 1的觸發器,拒絕= 2。您可以提前爲用戶創建一系列步驟,並允許他們通過呈現一個步驟來選擇觸發器,然後根據他們選擇的觸發器分配下一個步驟。

1

我會小心之前,WF要檢查出來的東西(任何版本包括4.0)的向後兼容性/版本,特別是如果你將有長時間運行的工作流程。

一旦工作流程實例「正在運行」,對組件(代碼活動)進行更改可能很困難。有幾種處理這個問題的版本管理方法,但您可能會發現這兩種方法在實際中都不是真實的。

相關問題