逐步解說:建立並偵錯 SharePoint 工作流程解決方案
本逐步解說示範如何建立基本的循序工作流程範本。 工作流程會檢查共用文件庫的屬性,以判斷是否已檢閱文件。 如果已檢閱文件,則工作流程完成。
本逐步解說將說明下列工作:
在 Visual Studio 中建立 SharePoint 清單定義循序工作流程專案。
建立工作流程活動。
處理工作流程活動事件。
注意
雖然本逐步解說使用循序工作流程專案,但流程與狀態機器工作流程專案的流程相同。
此外,您的電腦可能會在下列指示中為某些 Visual Studio 使用者介面元素顯示不同的名稱或位置。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化。
必要條件
您需要下列元件才能完成這個逐步解說:
支援的 Microsoft Windows 和 SharePoint 版本。
Visual Studio。
將屬性新增至 SharePoint 共用文件庫
為了追蹤共用文件庫中文件的檢閱狀態,我們將在 SharePoint 網站上為共用文件建立三個新屬性:Status
、Assignee
和 Review Comments
。 我們會在共用文件庫中定義這些屬性。
將屬性新增至 SharePoint 共用文件庫
在網頁瀏覽器中開啟 SharePoint 網站,例如 http://<system name>/SitePages/Home.aspx。
在快速啟動列上,選擇 [SharedDocuments]。
選擇 [程式庫工具] 功能區上的 [程式庫],然後選擇功能區上的 [建立資料行] 按鈕,以建立新的資料行。
將資料行命名為 [文件狀態]、將其類型設定為 [選項 (從中選擇的功能表)]、指定下列三個選項,然後選擇 [確定] 按鈕:
需要檢閱
檢閱完成
已要求變更
再建立兩個資料行,並將其命名為 [受託人] 和 [檢閱註解]。 將 [受託人] 資料行類型設定為單行文字,並將 [檢閱註解] 資料行類型設定為多行文字。
啟用文件進行編輯而無需簽出
當您可以編輯文件,而不必將其簽出時,測試工作流程範本會更容易進行。在下一個程序中,您會設定 SharePoint 網站以啟用該動作。
啟用文件進行編輯而無需將其簽出
在快速啟動列上,選擇 [共用文件] 連結。
在 [文件庫工具] 功能區上,選擇 [文件庫] 索引標籤,然後選擇 [文件庫設定] 按鈕以顯示 [文件庫設定] 頁面。
在 [一般設定] 區段中,選擇 [版本設定] 連結以顯示 [版本設定] 頁面。
確認 [需要簽出文件,然後才能進行編輯] 的設定為 [否]。 如果不是,請將其變更為 [否],然後選擇 [確定] 按鈕。
關閉瀏覽器。
建立 SharePoint 循序工作流程專案
循序工作流程是一組依序執行,直到最後一個活動完成的步驟。 在此程序中,我們會建立將套用至共用文件清單的循序工作流程。 工作流程精靈可讓您將工作流程與網站定義或清單定義建立關聯,並可讓您確定工作流程何時開始。
建立 SharePoint 循序工作流程專案
啟動 Visual Studio。
在功能表列上,選擇 [檔案]>[新增]>[專案],以顯示 [新增專案] 對話方塊。
展開 [Visual C#] 或 [Visual Basic] 底下的 [SharePoint] 節點,然後選擇 [2010] 節點。
在 [範本] 窗格中,選擇 [SharePoint 2010 專案] 範本。
在 [名稱] 方塊中,輸入 MySharePointWorkflow ,然後選擇 [確定] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定偵錯的網站和安全性層級] 中,選擇 [部署為伺服器陣列解決方案] 選項按鈕,然後選擇 [完成] 按鈕,以接受信任層級和預設網站。
此步驟會將解決方案的信任層級設定為伺服器陣列解決方案,這是工作流程專案唯一可用的選項。 如需詳細資訊,請參閱沙箱化解決方案考量。
在 [方案總管] 中選擇專案節點,然後在功能表列上選擇 [專案]>[加入新項目]。
在 [Visual C#] 或 [Visual Basic] 底下展開 [SharePoint] 節點,然後選擇 [2010] 節點。
在 [範本] 窗格中,選擇 [循序工作流程 (僅限伺服器陣列解決方案)] 範本,然後選擇 [新增] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定工作流程名稱進行偵錯] 頁面上,接受預設名稱 (MySharePointWorkflow - Workflow1)。 保留預設工作流程範本類型值 ([清單工作流程]),然後選擇 [下一步] 按鈕。
在 [您要 Visual Studio 在偵錯工作階段中自動關聯工作流程嗎?] 頁面中,選擇 [下一步] 按鈕以接受所有預設設定。
此步驟會自動將工作流程與共用文件庫建立關聯。
在 [指定工作流程的啟動條件] 頁面中,保留在 [您要如何啟動工作流程?] 區段中選取的預設選項,然後選擇 [完成] 按鈕。
此頁面可讓您指定工作流程何時開始。 根據預設,當使用者在 SharePoint 中手動啟動工作流程時,或當建立與工作流程相關聯的項目時,工作流程就會啟動。
建立工作流程活動
工作流程包含一或多個「活動」,代表要執行的動作。 使用工作流程設計工具來安排工作流程的活動。 在此程序中,我們會將兩個活動新增至工作流程:HandleExternalEventActivity 和 OnWorkFlowItemChanged。 這些活動會監視 [共用文件] 清單中文件的檢閱狀態
建立工作流程活動
工作流程應該會顯示在工作流程設計工具中。 如果不是,則在 [方案總管] 中開啟 Workflow1.cs 或 Workflow1.vb。
在設計工具中,選擇 [OnWorkflowActivated1] 活動。
在 [屬性] 視窗中,於 [Invoked] 屬性旁邊輸入 [onWorkflowActivated],然後選擇 Enter 鍵。
程式碼編輯器隨即開啟,且名為 onWorkflowActivated 的事件處理常式方法會新增至 Workflow1 程式碼檔案。
切回工作流程設計工具、開啟工具箱,然後展開 [Windows Workflow v3.0] 節點。
在 [工具箱] 的 [Windows Workflow v3.0] 節點中,執行下列其中一組步驟:
開啟 [While] 活動的捷徑功能表,然後選擇 [複製]。 在工作流程設計工具中,開啟 [onWorkflowActivated1] 活動底下那一行的捷徑功能表,然後選擇 [貼上]。
將 [While] 活動從 [工具箱] 拖曳至工作流程設計工具,然後將該活動連線到 [onWorkflowActivated1] 活動底下的那一行。
選擇 [WhileActivity1] 活動。
在 [屬性] 視窗中,將 [條件] 設定為 [程式碼條件]。
展開 [條件] 屬性,在子 [條件] 屬性旁邊輸入 [isWorkflowPending],然後選擇 Enter 鍵。
程式碼編輯器隨即開啟,且名為 isWorkflowPending 的方法會新增至 Workflow1 程式碼檔案。
切回工作流程設計工具、開啟工具箱,然後展開 [SharePoint 工作流程] 節點。
在 [工具箱] 的 [SharePoint 工作流程] 節點中,執行下列其中一組步驟:
開啟 [OnWorkflowItemChanged] 活動的捷徑功能表,然後選擇 [複製]。 在工作流程設計工具中,開啟 [whileActivity1] 活動內那一行的捷徑功能表,然後選擇 [貼上]。
將 [OnWorkflowItemChanged] 活動從 [工具箱] 拖曳至工作流程設計工具,然後將該活動連線到 [whileActivity1] 活動內的那一行。
選擇 [onWorkflowItemChanged1] 活動。
在 [屬性] 視窗中,設定如下表所示的屬性。
屬性 值 CorrelationToken workflowToken Invoked onWorkflowItemChanged
處理活動事件
最後,檢查每個活動的文件狀態。 如果已檢閱文件,則工作流程完成。
處理活動事件
在 Workflow1.cs 或 Workflow1.vb 中,將下列欄位新增至
Workflow1
類別頂端。 此欄位用於活動中,判斷工作流程是否已完成。將下列方法新增至
Workflow1
類別。 此方法會檢查文件清單的Document Status
屬性值,以判斷是否已檢閱文件。 如果Document Status
屬性設定為Review Complete
,則checkStatus
方法會將workflowPending
欄位設定為 false,表示工作流程已準備好完成。將下列程式碼新增至
onWorkflowActivated
和onWorkflowItemChanged
方法,以呼叫checkStatus
方法。 當工作流程啟動時,onWorkflowActivated
方法會呼叫checkStatus
方法來判斷是否已檢閱文件。 如果尚未檢閱,工作流程會繼續。 儲存文件時,onWorkflowItemChanged
方法會再次呼叫checkStatus
方法,以判斷是否已檢閱文件。 當workflowPending
欄位設定為 true 時,工作流程會繼續執行。將下列程式碼新增至
isWorkflowPending
方法,以檢查workflowPending
屬性的狀態。 每次儲存文件時,whileActivity1 活動都會呼叫isWorkflowPending
方法。 這個方法會檢查 ConditionalEventArgs 物件的 Result 屬性,以判斷 WhileActivity1 活動應該繼續還是完成。 如果此屬性設定為 true,活動會繼續。 否則,活動會完成,且工作流程也會完成。儲存專案。
測試 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 命名空間。