逐步解說:建立並偵錯 SharePoint 工作流程方案

本逐步解說將示範如何建立基本的循序工作流程範本。工作流程會檢查共用文件庫的屬性,以判斷文件是否已經過檢視。如果文件已經過檢視,則工作流程會結束。

這個逐步解說將說明下列工作:

  • 在 Visual Studio 中建立 SharePoint 清單定義循序工作流程專案。

  • 建立工作流程活動。

  • 處理工作流程活動事件。

注意事項注意事項

雖然本逐步解說使用循序工作流程專案,但狀態機器工作流程的程序完全相同。

此外,在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置。您所擁有的 Visual Studio 版本和使用的設定決定了這些項目。如需詳細資訊,請參閱Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

將屬性加入至 SharePoint 共用文件庫

為在 [共用文件] 庫中追蹤文件的檢視狀態,我們將在 SharePoint 網站上為共用文件建立三個新屬性:Status、Assignee 和 Review Comments。我們會在 [共用文件] 庫中定義這些屬性。

若要將屬性加入至 SharePoint 共用文件庫

  1. 在 Web 瀏覽器中開啟 SharePoint 網站,例如 http://<系統名稱>/SitePages/Home.aspx。

  2. 在快速啟動列上,選取 [共用][文件]。

  3. 在 [程式庫工具] 功能區的 [程式庫] 然後選取在功能區上的 [建立資料行] 按鈕建立新的資料行。

  4. 將資料行命名檔案狀態,將其型別設為 [選取 (選取的功能表會從)],並指定下列三個選項,然後選取 [確定] 按鈕:

    • 需要檢視

    • 檢視完成

    • 要求變更

  5. 另外再建立兩個資料行,並分別命名為 [Assignee] 和 [Review Comments]。將 [Assignee] 資料行類型設定為單行文字,並將 [Review Comments] 資料行類型設定為多行文字。

啟用不需簽出文件即可進行編輯

如果能夠編輯文件而不需將其簽出,則可更容易測試工作流程範本。在下一個程序中,您將設定 SharePoint 網站來啟用該功能。

啟用不需簽出文件即可進行編輯

  1. 在快速啟動列上,選取 [共用文件] 連結。

  2. 在 [程式庫工具] 功能區,請選取 [程式庫] 索引標籤,然後選取 [程式庫設定] 按鈕顯示 [文件庫設定] 網頁。

  3. 在 [一般設定] 區段中,選取 [版本控制設定] 連結顯示 [版本控制設定] 網頁。

  4. 確認 [需要先簽出文件才能進行編輯] 的設定為 []。如果不是,請將它變更為 [如果] 然後選取 [確定] 按鈕。

  5. 關閉瀏覽器。

建立 SharePoint 循序工作流程專案

循序工作流程是依順序執行直到最後一個活動完成為止的一組步驟。在此程序中,我們會建立將套用至共用文件清單的循序工作流程。工作流程精靈會讓您將工作流程與網站定義或清單定義相關聯,以及讓您決定工作流程將在何時啟動。

建立 SharePoint 循序工作流程專案

  1. 啟動 Visual Studio。

  2. 在功能表列上的 [],然後選取 [檔案], [新增], [專案] 顯示 [新增專案] 對話方塊。

  3. 展開 [SharePoint] 節點在 [Visual C#] 或 [Visual Basic],然後選取 [2010 年] 節點。

  4. 在 [樣板] 窗格中,選取 [SharePoint 2010 專案] 範本。

  5. 在 [名稱] 方塊中,輸入 MySharePointWorkflow 然後選取 [確定] 按鈕。

    [SharePoint 自訂精靈] 隨即出現。

  6. 在 [指定網站和安全性層級進行偵錯] 頁面上,選取 [部署為陣列方案] 選項按鈕,然後選取 [完成] 按鈕的信任層級和預設網站。

    此步驟會將方案的信任層級設定為陣列方案,這是工作流程專案唯一可用的選項。如需詳細資訊,請參閱沙箱化方案考量

  7. 在 [方案總管],請選取中的專案節點,然後按一下 [],在功能表列上,選擇 [專案], [加入新項目]。

  8. 在 [Visual C#] 或 [Visual Basic] 下,展開 [SharePoint] 節點,然後選取 [2010 年] 節點。

  9. 在 [樣板] 窗格中,選取 [循序工作流程 (僅限陣列方案)] 範本,然後選取 [加入] 按鈕。

    [SharePoint 自訂精靈] 隨即出現。

  10. 在 [指定工作流程名稱進行偵錯] 頁面中,接受預設名稱 (MySharePointWorkflow - Workflow1)。保留預設工作流程範本類型值, [清單工作流程],然後選取 [下一個] 按鈕。

  11. 在 [您要 Visual Studio 自動產生中的工作流程專案的偵錯工作階段?] 頁面上,選取 [下一個] 按鈕接受所有預設設定。

    此步驟會自動將工作流程與共用文件庫相關聯。

  12. 在 [針對工作流程如何指定條件啟動] 頁面上,保留預設選項區段中選取 [您要如何啟動工作流程?] 部分並選取 [完成] 按鈕。

    此頁面可讓您指定工作流程應於何時開始。根據預設,當使用者以手動方式在 SharePoint 中啟動工作流程,或當建立工作流程關聯的項目時,就會啟動工作流程。

建立工作流程活動

工作流程包含一個或多個代表要執行之動作的「活動」(Activity)。使用工作流程設計工具可排列工作流程的活動。在這個程序中,我們會將兩個活動加入至工作流程:HandleExternalEventActivity 和 OnWorkFlowItemChanged。這些活動會監視 [共用文件] 清單中的文件檢視狀態。

若要建立工作流程活動

  1. 工作流程應會顯示在工作流程設計工具中。如果沒有,請開啟 [Workflow1.cs] 或 [Workflow1.vb] 在 [方案總管]。

  2. 在設計工具中,選取 [OnWorkflowActivated1] 活動。

  3. 在 [內容 ][] 視窗中,輸入 onWorkflowActivated 在 [叫用] 屬性旁邊的 [],然後選取 ENTER 鍵。

    程式碼編輯器隨即開啟,而且名為 onWorkflowActivated 的事件處理常式方法會加入至 Workflow1 程式檔中。

  4. 切換回工作流程設計工具,開啟工具箱,然後展開 [Windows Workflow v3.0] 節點。

  5. 在 [工具箱] 的 [Windows Workflow v3.0] 節點,請執行下列其中一組步驟:

    1. 開啟 [當時] 活動的捷徑功能表,然後選取 [複製]。在工作流程設計工具中,開啟的捷徑功能表。 [onWorkflowActivated1] 活動],然後選取 [貼上]。

    2. 從 拖曳 [工具箱] 的 [當時] 活動加入至工作流程設計工具,並連接至活動中 [onWorkflowActivated1] 活動下。

  6. 選取 [WhileActivity1] 活動。

  7. 在 [內容] 視窗中,將 [條件] 編碼情況。

  8. 展開 [條件] 屬性,在 [條件] 子屬性旁輸入 isWorkflowPending,然後選取 ENTER 鍵。

    [程式碼編輯器] 隨即開啟,而且名為 isWorkflowPending 的方法會加入至 Workflow1 程式碼檔中。

  9. 切換回工作流程設計工具,開啟工具箱,然後展開 [SharePoint 工作流程] 節點。

  10. 在 [工具箱] 的 [SharePoint 工作流程] 節點,請執行下列其中一組步驟:

    • 開啟 [OnWorkflowItemChanged] 活動的捷徑功能表,然後選取 [複製]。在工作流程設計工具中,開啟的捷徑功能表。 [whileActivity1] 活動內,然後選取 [貼上]。

    • 從 拖曳 [工具箱] 的 [OnWorkflowItemChanged] 活動加入至工作流程設計工具,並連接至活動 [whileActivity1] 活動內的行。

  11. 選取 [onWorkflowItemChanged1] 活動。

  12. 在 [屬性] 視窗中,依照下表所示設定屬性。

    屬性

    CorrelationToken

    workflowToken

    Invoked

    onWorkflowItemChanged

處理活動事件

最後,檢查每一個活動的文件狀態。如果文件已經過檢視,工作流程就會結束。

處理活動事件

  1. 在 Workflow1.cs 或 Workflow1.vb 中,將下列欄位加入至 [Workflow1] 類別頂端。活動中會使用這個欄位判斷工作流程是否已結束。

    Dim workflowPending As Boolean = True
    
    Boolean workflowPending = true;
    
  2. 將下列方法加入至 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;
    }
    
  3. 將下列程式碼加入至 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();
    }
    
  4. 將下列程式碼加入至 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;
    }
    
  5. 儲存專案。

測試 SharePoint 工作流程範本

當您啟動偵錯工具時,Visual Studio 會將工作流程範本部署至 SharePoint 伺服器,並且建立工作流程與 [共用文件] 清單之間的關聯。若要測試工作流程,請從 [共用文件] 清單中的某個文件啟動工作流程的執行個體。

測試 SharePoint 工作流程範本

  1. 在 Workflow1.cs 或 Workflow1.vb 中,設定 [onWorkflowActivated] 方法旁的中斷點。

  2. 選取 F5 鍵以建置並執行方案。

    SharePoint 網站隨即出現。

  3. 在 SharePoint 中的巡覽窗格中,選取 [共用文件] 連結。

  4. 在 [共用文件] 頁面,請在 [程式庫工具] 索引標籤的 [文件] 連結,然後選取 [上傳文件] 按鈕。

  5. 在 [上傳文件] 對話方塊中,選取 [瀏覽] 按鈕,選取所有檔案,請選取 [[開啟]] 按鈕,然後選取 [確定] 按鈕。

    這樣做會將選取的文件上載至 [共用文件] 清單並啟動工作流程。

  6. 在 Visual Studio 中,確認偵錯工具在 onWorkflowActivated 方法旁的中斷點處停止。

  7. 選取 F5 鍵繼續執行。

  8. 您可以變更文件的設定,這裡,但保留預設值。藉由選取 [儲存] 按鈕。

    這會返回預設 SharePoint 網站的 [共用文件] 頁面。

  9. 在 [共用文件 ] 頁面中,確認在 [MySharePointWorkflow – Workflow1] 資料行下方的值設為 [進行中]。這表示工作流程正在進行,且文件正在等候檢視。

  10. 在 [共用文件] 頁面,請選取文件,選擇顯示的箭號,然後選取 [編輯屬性] 功能表項目。

  11. 設定 [檔案狀態] 至 [完成檢閱],然後選取 [儲存] 按鈕。

    這會返回預設 SharePoint 網站的 [共用文件] 頁面。

  12. 在 [共用文件 ] 頁面中,確認在 [檔案狀態] 資料行下方的值設為 [完成檢閱]。重新整理 [共用文件] 頁面並確認已 [MySharePointWorkflow – Workflow1] 資料行下方的值設為 [已完成]。這表示工作流程已結束,且文件已經過檢視。

後續步驟

您可以在下列主題中,進一步了解如何建立工作流程範本:

請參閱

其他資源

建立 SharePoint 工作流程方案

SharePoint 專案與專案項目範本

建置和偵錯 SharePoint 方案