關聯欄
英文原文已於 2011 年 5 月 2 日星期一發佈
哈囉,大家好。我是 SharePoint Designer 團隊的 PM,JongHwa Lim。好久不見。自去年 4 月以來,有些人可能因為一直沒看到新文章就以為這個網站掛了,但現在我們回來了。我們會繼續經營這個網站,每個月都會張貼新文章,並且嘗試與讀者及客戶保持連繫。
為了幫這個網站暖身 (同時也讓我的團隊為即將張貼的文章暖身),我們就從 SharePoint Designer 2010 (又稱為 SPD) 小型但非常實用的新功能開始。
需要關聯欄的時機
我們先設定一個案例。您是習慣使用 SPD 的工作流程作者,您必須製作一個含有某些工作流程特定欄位且可用於許多清單或文件庫的工作流程。您會如何實作?下面提供一些您可以試用的範例。
· 清單工作流程
o 您可以從清單工作流程開始。請將工作流程特定的欄位直接加入清單。在 SharePoint Designer 的設計階段期間,您會看到欄位,然後使用那些欄位建立您的工作流程邏輯。
o 但是,當需要在其他清單或文件庫中重複使用這個工作流程時,您就沒辦法了。
· 可重複使用的工作流程
o 您比較熟悉 SPD 工作流程,所以選擇搭配可重複使用的工作流程,如此,將會解決重複使用問題。但是,當您開啟工作流程設計工具時,就不再只看到 [標題] 一個可設定的欄位,而會看到 [內容類型]、[建立時間]、 [建立者]、 [ID]、 [修改時間]、 [修改者] 和 [標題] 等可讀取的欄位。
o 您無法使用所需的欄位來制定工作流程邏輯。
· 含有基本內容類型的可重複使用的工作流程
o 您是 SPD 工作流程的進階使用者,所以,您了解可重複使用的工作流程的基本內容類型概念。
o 首先,您建立一個新內容類型並將所需的欄位加入內容類型。接著,在 [建立可重複使用的工作流程] 對話方塊中,將您所建立的內容類型指定為基本內容類型。
o 現在,您可以在工作流程設計工具中看到欄位,這表示您可以完成必要的操作。只要您將這個工作流程與內容類型產生關聯,並將內容類型加入清單或文件庫中,重複使用的案例就不會發生問題。
o 但是,如果您發現您需要新的欄位呢?每當需要新欄位時,您必須移至伺服器或 SPD 上的網站內容類型或網站欄 UI。
o 還有另一個弱點存在。當您使用 [另存為範本] 移動工作流程時,若基本內容類型屬於自訂內容類型或者內容類型包含自訂網站欄,則未解除封裝的工作流程將會遺失有關基本內容類型的部分資訊。
· 含有關聯欄的可重複使用的工作流程
o 您幾乎與另一位了解基本內容類型概念的人員同樣熟悉 SPD。正因如此,您了解關聯欄的概念。
o 由於您開始撰寫工作流程,因此,當您需要欄位時,只要使用關聯欄就能立即建立欄位,而且您可以在現有網站欄和新網站欄位之間選擇。您不必往返於工作流程設計工具、網站內容類型和網站欄 UI 之間。只要在一個地方就能執行所有操作,就是這麼簡單。
o 此外,重複使用也沒問題,因為可重複使用的工作流程定義會帶著欄位,而且工作流程套件也支援它。
何謂關聯欄
現在,有些人可能曾經嘗試尋找有關這個主題的說明檔案。下列是一些找得到的內容範例:
· 根據預設,可重複使用的工作流程沒有特定清單或組件庫的內容。因此,預設只會提供清單和組件庫之間通用的欄位,例如 [建立時間] 和 [建立者]。
如果您的可重複使用的工作流程要求相關聯的清單或組件庫中必須存在特定欄,您可以加入那些欄當做關聯欄。當可重複使用的工作流程與清單或組件庫產生關聯時,關聯欄就會自動加入該清單或組件庫中。
· 關聯欄
如果您的可重複使用的工作流程要求相關聯的清單或組件庫中必須存在特定欄,您可以加入那些欄當做關聯欄。當可重複使用的工作流程與清單或組件庫產生關聯時,關聯欄就會自動加入該清單或組件庫中。
· (功能區按鈕的工具提示)
定義將在工作流程與清單產生關聯時加入清單的欄。這個選項不適用於網站工作流程。
所有這些描述完全真實且完整地解釋了關聯欄的意義,以及它的用途。之所以引入關聯欄,是因為可重複使用的工作流程在現實世界案例中更新 [目前項目] 的欄位時,沒有良好的體驗所致。由於我們直到 SharePoint Designer 2010 才有「可重複使用的工作流程」概念,因此,也沒有關聯欄。若沒有關聯欄,唯一的代替方法一直都是使用基本內容類型。但是,這也讓關聯與設計階段 UX 存在各種限制,因為它只能與基本內容類型或繼承的內容類型產生關聯,而且作者應該會從工作流程設計工具移至網站內容類型或網站欄 UI 數次。
如何建立關聯欄
建立關聯欄相當簡單。下面向您示範範例。如下所示,您可以從名為 [關聯欄] (Association Columns) 的功能區按鈕開始。
如果按一下,將會出現如下的警告對話方塊。
如果您選取 [確定] (OK),將會被導向關聯欄的主對話方塊。
您可以從 [選取網站欄] (Select Site Column) 和 [新增欄] (Add New Column) 選擇。如果您選取網站欄,則會出現下列對話方塊。
如果您選取 [位址] (Address) 欄位,該欄位將會加入主對話方塊。
如果您要新增欄,將會出現下列 UI,供您定義新欄。
在這個範例中,我已經建立名為 [核准者的意見] (Comments from Approvers) 的多行文字欄位。
當您選取了新欄,就會看到該欄位。[修改] (Modify) 也啟用了,但是在任何現有欄中會是停用的。
如果您按一下 [確定] (OK),表示您已完成關聯欄。現在,您可以在設計工具介面中看到 [位址] (Address) 與 [核准者的意見] (Comments from Approvers)。
運作方式
在內部,關聯欄會使用網站欄,這也就是為什麼您會在 UI 中看到 [選取網站欄] 按鈕。無論是剛建立或從網站欄中選擇的關聯欄,都會出現在 wfconfig 檔案中,以便在設計階段期間使用。
但是,如果您在發佈工作流程之前查看 wfconfig,就會發生下列欄位定義。這是因為我們會在發佈階段期間建立網站欄並更新 wfconfig 中的對應欄位定義。
所以,如果您在發佈之後重新造訪關聯欄對話方塊,就會看到差別在於 [新增欄] (New Column) 變更為 [現有的欄] (Existing Column),而且您無法修改它。
當可重複使用的工作流程與清單或文件庫產生關聯時,我們會將關聯欄加入清單和文件庫中,如此,可重複使用的工作流程就能正常地參考欄位。
封裝
如果您要封裝可重複使用的工作流程,然後在其他網站解除封裝,則會保留關聯欄,意思是關聯欄也會經過封裝再解除封裝。另一方面,自訂基本內容類型以及基本內容類型中的自訂網站欄不會完全封裝,也就是說,傳輸期間可能有些資訊會遺失。
限制
當我們將可重複使用的工作流程與內容類型產生關聯時,關聯欄會在內容類型加入清單或文件庫時加入清單或文件庫中。我們不會直接將關聯欄加入內容類型中。
這是翻譯後的部落格文章。英文原文請參閱 Association Columns