如何從 SharePoint 2013 工作流程觸發 SharePoint 2010 工作流程
英文原文已於 2012 年 8 月 18 日星期六發佈
哈囉,大家好,
我是 Chong Youn (John) Choe,目前在 SharePoint Designer 小組中擔任 PM。SharePoint 與 SharePoint Designer 2013 Beta 2 現已公開,而我們的產品群組成員很高興與您們分享補充文章。
這篇文章將說明為什麼要啟用呼叫舊有樣式工作流程的功能,以及如何使用它。
背景
首先,我們預期此功能可以增強 SPD 工作流程的再使用性。使用者將能在 SharePoint 網站上設定具備高度可重複使用的工作流程,就像是使用指令碼或函數一樣地利用工作流程。
由於 SharePoint 2013 實際上是以不同平台為根據且已在其上進行重建,所以無法使用 SharePoint 2013 工作流程的功能完全取代 SharePoint 2010 動作的所有功能。工作流程產品小組已投注心力在建立新功能,讓新的使用者案例更為豐富,並根據使用者的意見反應而放棄甚少使用的功能。
不過,工作流程產品小組強烈地希望能夠涵蓋所有現有的案例。因此,設計了 [開始工作流程] 動作,藉由讓內部工作流程能夠從 2013 工作流程呼叫 2010 工作流程,讓使用者能夠將 SharePoint 2013 和 SharePoint 2010 組合在一起。這是唯一經濟實惠的解決方案,可以為目前的 SPD 使用者提供移轉路徑。
工作流程可以分類為 3 個類型:清單工作流程、可重複使用的工作流程及網站工作流程。如需詳細資料,請參閱部落格文章。可重複使用的工作流程會在關聯期間接受輸入參數,並且可在清單和清單中的項目上觸發,就像它之後是清單工作流程一樣。若要開始工作流程,SharePoint 2010 工作流程應該準備好可在呼叫它的時候執行,這表示如果它是可重複使用的工作流程,需要已經產生關聯。因此,這些都是透過可接收 2 個參數的單一動作 [開始清單工作流程] 來支援;要觸發與 SharePoint 2010 關聯的工作流程、從參數初始化,以及關聯的工作流程將在其上執行的目標項目。相反地,網站工作流程不需要可在其上執行的項目,因此,會依賴另一個可接受 2 個參數的動作 [開始網站工作流程];要觸發的 SharePoint 2010 網站工作流程,以及從參數初始化。
最後但並非最不重要的一點是,如果您想要了解「工作流程 interop 橋樑」的內部內容,請參閱下列網頁:https://msdn.microsoft.com/zh-tw/library/sharepoint/jj163181(office.15) (可能為英文網頁)。
範例案例
現在您已了解這個概念,讓我們來討論如何及何時使用這些動作。接下來將顯示範例案例與逐步說明。
假設 SharePoint 2010 網站上有一個「預算核准」工作流程可供使用。IT 系統管理員決定要將 SharePoint 2010 升級為 SharePoint 2013,現有的 SharePoint 2010 工作流程隨後已移轉至新網站 (附註:這不代表工作流程已升級為 SharePoint 2013 工作流程。這些工作流程仍然是 SharePoint 2010 工作流程)。「預算核准」工作流程可用來向財務或 HR 部門請求預算,並接受 4 個參數做為輸入;[請求的預算] 為請求的預算金額、[說明] 將說明需要此預算的理由、[請求核准到期日] 為回應到期日,而 [參考資料] 會指出所有相關資訊。
讓我們假設您想要使用「預算核准」工作流程來做為新工作流程程序的一部分,在過去,您必須建立新的工作流程,並在新架構中重寫工作流程。因此,如果想要將 2013 工作流程的新引進功能與「預算核准」工作流程組合在一起,就不能將它全部寫入同一個工作流程。
[開始工作流程] 動作在這類情況中就是一個完美的解決方案。讓我們假設「預算核准」工作流程是 [Contoso 財務部門] 清單下的清單工作流程,其中 Contoso 的財務部門程序會透過工作流程自動進行。
設計步驟
1. 當觸發的目標工作流程為清單工作流程或與清單相關聯之可重複使用的工作流程時,插入 [開始清單工作流程] (Start a List Workflow) 動作。
2. 插入此動作時,需要先選取工作流程或關聯,您可以藉由按一下 [SharePoint 2010 清單工作流程] (SharePoint 2010 list workflow) 連結來執行此動作。
3. 尋找目標工作流程所在的清單,接著選擇工作流程。
4. 按一下 [確定] (OK) 以關閉上述對話方塊。然後按一下可在 [開始清單工作流程] 動作句子中找到的 [參數] (parameters) 連結。SharePoint Designer 2013 接著將分析該工作流程,並顯示初始參數及其預先定義的值。
對話方塊將針對每個不同參數顯示其他「類型」資訊。這是因為 SharePoint 2013 工作流程的作者可能與 SharePoint 2010 工作流程的作者不同,而我們想要為 SharePoint 2013 工作流程的作者提供足夠的資訊,以設定初始表單參數值,而不需調查所呼叫的工作流程。
5. 您可以在設計期間設定每個參數的值,系統允許您在此處選擇查閱值,而此值實際上將會在執行階段加以設定。這樣讓您有足夠的彈性能夠使用呼叫的 SharePoint 2013 工作流程和已呼叫的 SharePoint 2010 工作流程來設計整合的程序。
對話方塊中也提供了限制,因此,您不需要事先了解參數的資訊。
6. 當然,您也可以直接在文字編輯器中輸入值來設定它。請注意,對話方塊及其功能會依參數類型而不同。
7. 當您按 […] 時,即會顯示已填入之參數類型的對應設計工具類型,並引導您輸入。按一下 [Fx] 按鈕時,即會顯示標準的查詢對話方塊。
8. 一旦設定所有參數之後,請關閉 [設定初始參數值] (Set Values for Initiation Parameters) 對話方塊。設定的參數數目會直接顯示在動作句子中。
9. 接著,選擇目標工作流程將在其上執行的項目。通常,您會想要在「目前的項目」上執行此程序,這表示要執行的呼叫工作流程與已呼叫工作流程及留下的記錄檔與結果都會在同一個項目上。若要支援一般案例,您應該針對 [這個項目] (this item) 參數選擇 [目前的項目] (Current Item)。
您已經完成了!呼叫 SharePoint 2010 工作流程就像新增動作句子並設定適當值一樣簡單。實際上,此程序與在 SharePoint 伺服器上觸發 SharePoint 2010 工作流程的使用者行為類似。選擇清單、項目及關聯的工作流程,以及填入初始表單。SharePoint 伺服器上的使用者步驟如下。
另一個絕佳功能是您可以使用在 SharePoint 2013 工作流程呼叫內使用已呼叫工作流程的變數值。這些變數都可以藉由使用查閱對話方塊,使它們在 SharePoint 2013 工作流程中變成可用狀態。
我將利用一個範例案例進一步說明這一點。
某家公司新公布了一項規則,而工作流程設計工具需要將通知電子郵件傳送給參與預算核准程序的人員以檢閱新原則。
10. 新增 [傳送電子郵件] 動作,將電子郵件傳送給參與預算核准的人員。
11. 若要查閱 SharePoint 2010 工作流程的變數,請為 [收件者] (To) 控制項選擇 [使用者的工作流程查閱] (Workflow Lookup for a User)。
12. 新的資料來源會在插入 [開始清單/網站工作流程] 動作並選擇 SharePoint 2010 工作流程之後自動產生。資料來源的名稱包含靜態文字 [SharePoint 2010 輸出] (SharePoint 2010 Output) 與工作流程的名稱。
13. [預算核准] 的每個變數都會顯示於第 2 個下拉式清單中:[來源的欄位] (Field from source)。選擇必要的變數並按 [確定] (OK) 按鈕,以設定電子郵件對話方塊中的 [收件者] (To) 值。
14. 以同樣方式填入 [副本] (CC) 區段。請注意,變數是由建立 SharePoint 2010 工作流程的人所手動建立的。在其餘的欄位中填入您想要的任何值。
我希望您現在可以完全了解如何使用 SharePoint 2010 工作流程的傳回值。
前一個範例展示了您如何使用 [開始工作流程] 動作來呼叫舊有工作流程。您還可以擴展這個概念,並使用相同的動作將其他功能新增至 SharePoint 2013 工作流程。例如,有一些動作只能用於 SharePoint 2010 工作流程 (例如,查閱主管動作),您可以使用 [開始工作流程] 動作來觸發其他使用這些舊有動作的工作流程,並擴展這些功能。
一旦您精通 [開始工作流程] 動作及其使用方式之後,SharePoint 2013 工作流程和 SharePoint 2010 工作流程將不再像是不同的工作流程表單。
限制
將 SharePoint 2013 與 2010 工作流程的優點完全組合在一起有一些限制。
部分是因為新平台中的設計變更所導致。例如,[開啟工作流程] 不支援 [指派階段] 類型參數,因為 SharePoint 2013 工作流程中不再支援此參數類型。換句話說,如果您必須使用 [開始核准程序],則需要單獨使用 SharePoint 2010 工作流程。
此外,您想要使用 [開始工作流程] 連結的任何工作流程都必須位於同一個網站上。但是,所有不同的工作流程將會在不同的頁面上顯示它們的工作流程狀態頁。
最後,關聯至不同清單的呼叫工作流程無法在 SharePoint 2013 工作流程的目前項目上執行。這是意料中的事,因為這兩個工作流程會根據不同的清單來執行。因此,如果在不同清單上執行工作流程,您將需要在目標工作流程的清單中選擇工作流程要據以執行的指定項目。
結語
[開始工作流程] 動作會在執行階段,於 SharePoint 2013 工作流程執行期間觸發 SharePoint 2010 工作流程。根據已呼叫的工作流程類型而定,它會具備兩個動作類型:[開始工作流程] 與 [開始網站工作流程]。
選擇目標工作流程並利用固定值或動態值設定工作流程的初始參數。同時選擇工作流程所屬的清單和工作流程將在其上執行的項目 (此例中為 [開始清單工作流程])。
您可以將這個動作放置於 SharePoint 2013 工作流程中的任一處,即使是呼叫多個 SharePoint 2010 工作流程也可以。您可以重複使用現有的 SharePoint 2010 工作流程,而不需重寫其中的動作。這是混合 SharePoint 2013 與 SharePoint 2010 工作流程時非常有效率且簡便的方法。
此外,可以透過查閱對話方塊,讓呼叫 SharePoint 2013 工作流程的邏輯可以使用來自已呼叫之 SharePoint 2010 工作流程的傳回值。傳回值包含所有區域變數和一些條件式變數,以及相同 SharePoint 2013 工作流程中呼叫的所有 SharePoint 2010 工作流程。
我希望您喜歡此功能所帶來的優點!
Chong Youn (John) Choe
這是翻譯後的部落格文章。英文原文請參閱 How to trigger a SharePoint 2010 workflow from a SharePoint 2013 workflow