逐步解說:建立並偵錯 SharePoint 工作流程方案
本逐步解說將示範如何建立基本的循序工作流程範本。工作流程會檢查共用文件庫的屬性,以判斷文件是否已經過檢視。如果文件已經過檢視,則工作流程會結束。
這個逐步解說將說明下列工作:
在 Visual Studio 中建立 SharePoint 清單定義循序工作流程專案。
建立工作流程活動。
處理工作流程活動事件。
注意事項 |
---|
雖然本逐步解說使用循序工作流程專案,但狀態機器工作流程的程序完全相同。 此外,在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置。您所擁有的 Visual Studio 版本和使用的設定決定了這些項目。如需詳細資訊,請參閱Visual Studio 設定。 |
必要條件
您需要下列元件才能完成此逐步解說:
支援的 Microsoft Windows 和 SharePoint 版本。如需詳細資訊,請參閱開發 SharePoint 方案的要求。
Visual Studio。
將屬性加入至 SharePoint 共用文件庫
為在 [共用文件] 庫中追蹤文件的檢視狀態,我們將在 SharePoint 網站上為共用文件建立三個新屬性:Status、Assignee 和 Review Comments。我們會在 [共用文件] 庫中定義這些屬性。
若要將屬性加入至 SharePoint 共用文件庫
在 Web 瀏覽器中開啟 SharePoint 網站,例如 http://<系統名稱>/SitePages/Home.aspx。
在快速啟動列上,選取 [共用][文件]。
在 [程式庫工具] 功能區的 [程式庫] 然後選取在功能區上的 [建立資料行] 按鈕建立新的資料行。
將資料行命名檔案狀態,將其型別設為 [選取 (選取的功能表會從)],並指定下列三個選項,然後選取 [確定] 按鈕:
需要檢視
檢視完成
要求變更
另外再建立兩個資料行,並分別命名為 [Assignee] 和 [Review Comments]。將 [Assignee] 資料行類型設定為單行文字,並將 [Review Comments] 資料行類型設定為多行文字。
啟用不需簽出文件即可進行編輯
如果能夠編輯文件而不需將其簽出,則可更容易測試工作流程範本。在下一個程序中,您將設定 SharePoint 網站來啟用該功能。
啟用不需簽出文件即可進行編輯
在快速啟動列上,選取 [共用文件] 連結。
在 [程式庫工具] 功能區,請選取 [程式庫] 索引標籤,然後選取 [程式庫設定] 按鈕顯示 [文件庫設定] 網頁。
在 [一般設定] 區段中,選取 [版本控制設定] 連結顯示 [版本控制設定] 網頁。
確認 [需要先簽出文件才能進行編輯] 的設定為 [否]。如果不是,請將它變更為 [如果] 然後選取 [確定] 按鈕。
關閉瀏覽器。
建立 SharePoint 循序工作流程專案
循序工作流程是依順序執行直到最後一個活動完成為止的一組步驟。在此程序中,我們會建立將套用至共用文件清單的循序工作流程。工作流程精靈會讓您將工作流程與網站定義或清單定義相關聯,以及讓您決定工作流程將在何時啟動。
建立 SharePoint 循序工作流程專案
啟動 Visual Studio。
在功能表列上的 [],然後選取 [檔案], [新增], [專案] 顯示 [新增專案] 對話方塊。
展開 [SharePoint] 節點在 [Visual C#] 或 [Visual Basic],然後選取 [2010 年] 節點。
在 [樣板] 窗格中,選取 [SharePoint 2010 專案] 範本。
在 [名稱] 方塊中,輸入 MySharePointWorkflow 然後選取 [確定] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定網站和安全性層級進行偵錯] 頁面上,選取 [部署為陣列方案] 選項按鈕,然後選取 [完成] 按鈕的信任層級和預設網站。
此步驟會將方案的信任層級設定為陣列方案,這是工作流程專案唯一可用的選項。如需詳細資訊,請參閱沙箱化方案考量。
在 [方案總管],請選取中的專案節點,然後按一下 [],在功能表列上,選擇 [專案], [加入新項目]。
在 [Visual C#] 或 [Visual Basic] 下,展開 [SharePoint] 節點,然後選取 [2010 年] 節點。
在 [樣板] 窗格中,選取 [循序工作流程 (僅限陣列方案)] 範本,然後選取 [加入] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定工作流程名稱進行偵錯] 頁面中,接受預設名稱 (MySharePointWorkflow - Workflow1)。保留預設工作流程範本類型值, [清單工作流程],然後選取 [下一個] 按鈕。
在 [您要 Visual Studio 自動產生中的工作流程專案的偵錯工作階段?] 頁面上,選取 [下一個] 按鈕接受所有預設設定。
此步驟會自動將工作流程與共用文件庫相關聯。
在 [針對工作流程如何指定條件啟動] 頁面上,保留預設選項區段中選取 [您要如何啟動工作流程?] 部分並選取 [完成] 按鈕。
此頁面可讓您指定工作流程應於何時開始。根據預設,當使用者以手動方式在 SharePoint 中啟動工作流程,或當建立工作流程關聯的項目時,就會啟動工作流程。
建立工作流程活動
工作流程包含一個或多個代表要執行之動作的「活動」(Activity)。使用工作流程設計工具可排列工作流程的活動。在這個程序中,我們會將兩個活動加入至工作流程:HandleExternalEventActivity 和 OnWorkFlowItemChanged。這些活動會監視 [共用文件] 清單中的文件檢視狀態。
若要建立工作流程活動
工作流程應會顯示在工作流程設計工具中。如果沒有,請開啟 [Workflow1.cs] 或 [Workflow1.vb] 在 [方案總管]。
在設計工具中,選取 [OnWorkflowActivated1] 活動。
在 [內容 ][] 視窗中,輸入 onWorkflowActivated 在 [叫用] 屬性旁邊的 [],然後選取 ENTER 鍵。
程式碼編輯器隨即開啟,而且名為 onWorkflowActivated 的事件處理常式方法會加入至 Workflow1 程式檔中。
切換回工作流程設計工具,開啟工具箱,然後展開 [Windows Workflow v3.0] 節點。
在 [工具箱] 的 [Windows Workflow v3.0] 節點,請執行下列其中一組步驟:
開啟 [當時] 活動的捷徑功能表,然後選取 [複製]。在工作流程設計工具中,開啟的捷徑功能表。 [onWorkflowActivated1] 活動],然後選取 [貼上]。
從 拖曳 [工具箱] 的 [當時] 活動加入至工作流程設計工具,並連接至活動中 [onWorkflowActivated1] 活動下。
選取 [WhileActivity1] 活動。
在 [內容] 視窗中,將 [條件] 編碼情況。
展開 [條件] 屬性,在 [條件] 子屬性旁輸入 isWorkflowPending,然後選取 ENTER 鍵。
[程式碼編輯器] 隨即開啟,而且名為 isWorkflowPending 的方法會加入至 Workflow1 程式碼檔中。
切換回工作流程設計工具,開啟工具箱,然後展開 [SharePoint 工作流程] 節點。
在 [工具箱] 的 [SharePoint 工作流程] 節點,請執行下列其中一組步驟:
開啟 [OnWorkflowItemChanged] 活動的捷徑功能表,然後選取 [複製]。在工作流程設計工具中,開啟的捷徑功能表。 [whileActivity1] 活動內,然後選取 [貼上]。
從 拖曳 [工具箱] 的 [OnWorkflowItemChanged] 活動加入至工作流程設計工具,並連接至活動 [whileActivity1] 活動內的行。
選取 [onWorkflowItemChanged1] 活動。
在 [屬性] 視窗中,依照下表所示設定屬性。
屬性
值
CorrelationToken
workflowToken
Invoked
onWorkflowItemChanged
處理活動事件
最後,檢查每一個活動的文件狀態。如果文件已經過檢視,工作流程就會結束。
處理活動事件
在 Workflow1.cs 或 Workflow1.vb 中,將下列欄位加入至 [Workflow1] 類別頂端。活動中會使用這個欄位判斷工作流程是否已結束。
Dim workflowPending As Boolean = True
Boolean workflowPending = true;
將下列方法加入至 Workflow1 類別。這個方法會檢查 [文件] 清單的 Document Status 屬性值,判斷文件是否已經過檢視。如果 Document Status 屬性設為 Review Complete,則 checkStatus 方法會將 workflowPending 欄位設為 false,表示工作流程已準備結束。
Private Sub checkStatus() If CStr(workflowProperties.Item("Document Status")) = "Review Complete" Then workflowPending = False End If End Sub
private void checkStatus() { if ((string)workflowProperties.Item["Document Status"] == "Review Complete") workflowPending = false; }
將下列程式碼加入至 onWorkflowActivated,並且加入 onWorkflowItemChanged 方法呼叫 checkStatus 方法。工作流程開始時,onWorkflowActivated 方法會呼叫 checkStatus 方法,判斷文件是否已經過檢視。如果文件尚未檢視,則工作流程會繼續。文件儲存時,onWorkflowItemChanged 方法會再次呼叫 checkStatus 方法,判斷文件是否已經過檢視。workflowPending 欄位設為 true 時,工作流程會繼續執行。
Private Sub onWorkflowActivated(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs) checkStatus() End Sub Private Sub onWorkflowItemChanged(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs) checkStatus() End Sub
private void onWorkflowActivated(object sender, ExternalDataEventArgs e) { // Check the status. checkStatus(); } private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e) { // Check the status. checkStatus(); }
將下列程式碼加入至 isWorkflowPending 方法,以便檢查 workflowPending 屬性的狀態。每次儲存文件時,whileActivity1 活動都會呼叫 isWorkflowPending 方法。這個方法會檢查 ConditionalEventArgs 物件的 Result 屬性,判斷 WhileActivity1 活動應繼續或結束。如果屬性設為 true,則活動會繼續。否則活動會結束,作業流程也會結束。
Private Sub isWorkflowPending(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ConditionalEventArgs) e.Result = workflowPending End Sub
private void isWorkflowPending(object sender, ConditionalEventArgs e) { e.Result = workflowPending; }
儲存專案。
測試 SharePoint 工作流程範本
當您啟動偵錯工具時,Visual Studio 會將工作流程範本部署至 SharePoint 伺服器,並且建立工作流程與 [共用文件] 清單之間的關聯。若要測試工作流程,請從 [共用文件] 清單中的某個文件啟動工作流程的執行個體。
測試 SharePoint 工作流程範本
在 Workflow1.cs 或 Workflow1.vb 中,設定 [onWorkflowActivated] 方法旁的中斷點。
選取 F5 鍵以建置並執行方案。
SharePoint 網站隨即出現。
在 SharePoint 中的巡覽窗格中,選取 [共用文件] 連結。
在 [共用文件] 頁面,請在 [程式庫工具] 索引標籤的 [文件] 連結,然後選取 [上傳文件] 按鈕。
在 [上傳文件] 對話方塊中,選取 [瀏覽] 按鈕,選取所有檔案,請選取 [[開啟]] 按鈕,然後選取 [確定] 按鈕。
這樣做會將選取的文件上載至 [共用文件] 清單並啟動工作流程。
在 Visual Studio 中,確認偵錯工具在 onWorkflowActivated 方法旁的中斷點處停止。
選取 F5 鍵繼續執行。
您可以變更文件的設定,這裡,但保留預設值。藉由選取 [儲存] 按鈕。
這會返回預設 SharePoint 網站的 [共用文件] 頁面。
在 [共用文件 ] 頁面中,確認在 [MySharePointWorkflow – Workflow1] 資料行下方的值設為 [進行中]。這表示工作流程正在進行,且文件正在等候檢視。
在 [共用文件] 頁面,請選取文件,選擇顯示的箭號,然後選取 [編輯屬性] 功能表項目。
設定 [檔案狀態] 至 [完成檢閱],然後選取 [儲存] 按鈕。
這會返回預設 SharePoint 網站的 [共用文件] 頁面。
在 [共用文件 ] 頁面中,確認在 [檔案狀態] 資料行下方的值設為 [完成檢閱]。重新整理 [共用文件] 頁面並確認已 [MySharePointWorkflow – Workflow1] 資料行下方的值設為 [已完成]。這表示工作流程已結束,且文件已經過檢視。
後續步驟
您可以在下列主題中,進一步了解如何建立工作流程範本:
若要進一步了解 SharePoint 工作流程活動,請參閱 SharePoint Foundation 的工作流程活動 (英文)。
若要進一步了解 Windows Workflow Foundation 活動,請參閱 System.Workflow.Activities 命名空間 (英文)。