共用方式為


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

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

本逐步解說將說明下列工作:

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

  • 建立工作流程活動。

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

注意

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

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

必要條件

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

  • 支援的 Microsoft Windows 和 SharePoint 版本。

  • Visual Studio。

將屬性新增至 SharePoint 共用文件庫

為了追蹤共用文件庫中文件的檢閱狀態,我們將在 SharePoint 網站上為共用文件建立三個新屬性:StatusAssigneeReview Comments。 我們會在共用文件庫中定義這些屬性。

將屬性新增至 SharePoint 共用文件庫

  1. 在網頁瀏覽器中開啟 SharePoint 網站,例如 http://<system name>/SitePages/Home.aspx。

  2. 在快速啟動列上,選擇 [SharedDocuments]

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

  4. 將資料行命名為 [文件狀態]、將其類型設定為 [選項 (從中選擇的功能表)]、指定下列三個選項,然後選擇 [確定] 按鈕:

    • 需要檢閱

    • 檢閱完成

    • 已要求變更

  5. 再建立兩個資料行,並將其命名為 [受託人] 和 [檢閱註解]。 將 [受託人] 資料行類型設定為單行文字,並將 [檢閱註解] 資料行類型設定為多行文字。

啟用文件進行編輯而無需簽出

當您可以編輯文件,而不必將其簽出時,測試工作流程範本會更容易進行。在下一個程序中,您會設定 SharePoint 網站以啟用該動作。

啟用文件進行編輯而無需將其簽出

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

  2. 在 [文件庫工具] 功能區上,選擇 [文件庫] 索引標籤,然後選擇 [文件庫設定] 按鈕以顯示 [文件庫設定] 頁面。

  3. 在 [一般設定] 區段中,選擇 [版本設定] 連結以顯示 [版本設定] 頁面。

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

  5. 關閉瀏覽器。

建立 SharePoint 循序工作流程專案

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

建立 SharePoint 循序工作流程專案

  1. 啟動 Visual Studio。

  2. 在功能表列上,選擇 [檔案]>[新增]>[專案],以顯示 [新增專案] 對話方塊。

  3. 展開 [Visual C#] 或 [Visual Basic] 底下的 [SharePoint] 節點,然後選擇 [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 中手動啟動工作流程時,或當建立與工作流程相關聯的項目時,工作流程就會啟動。

建立工作流程活動

工作流程包含一或多個「活動」,代表要執行的動作。 使用工作流程設計工具來安排工作流程的活動。 在此程序中,我們會將兩個活動新增至工作流程:HandleExternalEventActivity 和 OnWorkFlowItemChanged。 這些活動會監視 [共用文件] 清單中文件的檢閱狀態

建立工作流程活動

  1. 工作流程應該會顯示在工作流程設計工具中。 如果不是,則在 [方案總管] 中開啟 Workflow1.csWorkflow1.vb

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

  3. 在 [屬性] 視窗中,於 [Invoked] 屬性旁邊輸入 [onWorkflowActivated],然後選擇 Enter 鍵。

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

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

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

    1. 開啟 [While] 活動的捷徑功能表,然後選擇 [複製]。 在工作流程設計工具中,開啟 [onWorkflowActivated1] 活動底下那一行的捷徑功能表,然後選擇 [貼上]

    2. 將 [While] 活動從 [工具箱] 拖曳至工作流程設計工具,然後將該活動連線到 [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.csWorkflow1.vb 中,將下列欄位新增至 Workflow1 類別頂端。 此欄位用於活動中,判斷工作流程是否已完成。

    Boolean workflowPending = true;
    
  2. 將下列方法新增至 Workflow1 類別。 此方法會檢查文件清單的 Document Status 屬性值,以判斷是否已檢閱文件。 如果 Document Status 屬性設定為 Review Complete,則 checkStatus 方法會將 workflowPending 欄位設定為 false,表示工作流程已準備好完成。

    private void checkStatus()
    {
        if ((string)workflowProperties.Item["Document Status"] == "Review Complete")
        workflowPending = false;
    }
    
  3. 將下列程式碼新增至 onWorkflowActivatedonWorkflowItemChanged 方法,以呼叫 checkStatus 方法。 當工作流程啟動時,onWorkflowActivated 方法會呼叫 checkStatus 方法來判斷是否已檢閱文件。 如果尚未檢閱,工作流程會繼續。 儲存文件時,onWorkflowItemChanged 方法會再次呼叫 checkStatus 方法,以判斷是否已檢閱文件。 當 workflowPending 欄位設定為 true 時,工作流程會繼續執行。

    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 void isWorkflowPending(object sender, ConditionalEventArgs e)
    {
        e.Result = workflowPending;
    }
    
  5. 儲存專案。

測試 SharePoint 工作流程範本

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

測試 SharePoint 工作流程範本

  1. Workflow1.csWorkflow1.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] 資料行下方的值是否已設定為 [已完成]。 這表示工作流程已完成,且已檢閱文件。

下一步

您可以深入了解如何從下列主題建立工作流程範本: