在 Project Online 中大量更新自定義欄位,並從工作流程建立項目網站
為了協助客戶充分利用 Project Online 並改善我們的服務擴充性和彈性,我們已將兩種方法新增至客戶端物件模型,您可以在 Project Online 應用程式和工作流程中使用。
值 | |
---|---|
UpdateCustomFields |
大量更新專案自定義欄位。 僅限 Project Online。 僅適用於 REST API。 |
CreateProjectSite |
建立 Project 網站。 僅限 Project Online。 可在 REST API、受控客戶端物件模型和 JavaScript 用戶端物件模型中使用。 |
除了提供更大的彈性之外,這些方法也會在工作流程中儲存和發佈專案時提供顯著的效能改善。 本文說明如何使用 REST API 中的方法,並提供建立工作流程的指示,以大量更新自定義欄位和建立 Project 網站的工作流程。
注意事項
若要深入瞭解如何從 SharePoint 2013 工作流程呼叫 REST API,請參閱瞭解和使用 SharePoint 2013 REST 介面和從 SharePoint Designer 工作流程呼叫 SharePoint 2013 Rest API。
從工作流程大量更新專案自定義欄位
先前,工作流程一次只能更新一個自定義欄位。 當使用者在專案詳細數據頁面之間轉換時,一次更新一個專案自定義欄位可能會導致用戶體驗不佳。 每個更新都需要使用 [設定專案字段 ] 動作的個別伺服器要求,而在高延遲、低頻寬網路上更新多個自定義字段會導致非一般的額外負荷。 為了解決此問題,我們已將 UpdateCustomFields 方法新增至REST API,可讓您大量更新自定義欄位。 若要使用 UpdateCustomFields,您可以傳入字典,其中包含您想要更新之所有自定義欄位的名稱和值。
您可以在下列端點找到 REST 方法:
https://<site-url>/_api/ProjectServer/Projects('<guid>')/Draft/UpdateCustomFields()
注意事項
<site-url>
將範例中的佔位元取代為您 Project Web App (PWA) 網站的 URL,並將 <guid>
佔位元取代為您的專案 UID。
本節說明如何建立工作流程,以大量更新專案的自定義欄位。 工作流程會遵循下列高階步驟:
等候您想要更新的專案存回。
建置數據集,以定義專案的所有自定義欄位更新。
查看專案。
呼叫 UpdateCustomFields 將自定義欄位更新套用至專案。
如有需要,請將相關信息記錄到工作流程歷程記錄清單 () 。
發佈專案。
簽入專案。
最終的端對端工作流程如下所示:
建立大量更新自定義欄位的工作流程
選用。 將專案的完整 URL 儲存在可在整個工作流程中使用的變數中。
將 [ 等候專案事件 ] 動作新增至工作流程,然後選擇 [ 當專案簽入 時] 事件。
使用 [建置字典] 動作建立 requestHeader 字典。 您將針對此工作流程中的所有 Web 服務呼叫使用相同的要求標頭。
將下列兩個專案新增至字典。
名稱 Type 值 接受 String application/json;odata=verbose Content-Type String application/json;odata=verbose 使用 [建置字典] 動作建立 requestBody字典 。 此字典會儲存您想要套用的所有欄位更新。
每個自定義欄位更新都需要四個數據列:欄位的 (1) 元數據類型、 (2 個) 鍵、 (3 個) 值,以及 (4 個) 值類型。
__metadata/類型 欄位的元數據類型。 此記錄一律相同,並使用下列值:
名稱:customFieldDictionary (i) /__metadata/type (其中 i 是字典中每個自定義欄位的索引,從 0 開始)
類型:字串
值:SP。KeyValue
關鍵 自定義欄位的內部名稱,格式為: Custom_ce23fbf43fa0e411941000155d3c8201
您可以瀏覽至自訂欄位的 InternalName 端點,以尋找其內部名稱:
https://<site-url>/_api/ProjectServer/CustomFields('<guid>')/InternalName
如果您手動建立自定義欄位,這些值會因站對站而異。 如果您打算跨多個網站重複使用工作流程,請確定自定義字段標識碼正確無誤。
價值 要指派給自定義欄位的值。 針對連結至查閱表格的自定義欄位,您必須使用查閱表格項目的內部名稱,而不是實際的查閱表格值。
您可以在下列端點找到查閱表格項目的內部名稱:
https://<site-url>/_api/ProjectServer/CustomFields('<guid>')/LookupEntries('<guid>')/InternalName
如果您已將查閱表格自定義欄位設定為接受多個值,請使用
;#
串連值 (,如下列範例字典所示) 。ValueType 您要更新的自訂欄位類型。
針對 [文字]、[持續時間]、[旗標] 和 [查閱表] 字段,請使用Edm.String
針對 [數位] 欄位,請使用 Edm.Int32、Edm.Double 或任何其他 OData 接受的數字類型
針對 [日期] 欄位,請使用 Edm.DateTime
下列範例字典會定義三個自定義欄位的更新。 第一個適用於多重值查閱表格自定義欄位,第二個用於數位欄位,第三個則用於日期欄位。 請注意 customFieldDictionary 索引如何遞增。
注意事項
這些值僅供說明之用。 您將使用的索引鍵/值組取決於您的 PWA 資料。
名稱 Type 值 customFieldDictionary (0) /__metadata/type String Sp。KeyValue customFieldDictionary (0) /Key String Custom_ce23fbf43fa0e411941000155d3c8201 customFieldDictionary (0) /Value String Entry_b9a2fd69279de411940f00155d3c8201;#Entry_baa2fd69279de411940f00155d3c8201 customFieldDictionary (0) /ValueType String Edm.String customFieldDictionary (1) /__metadata/type String Sp。KeyValue customFieldDictionary (1) /Key String Custom_c7f114c97098e411940f00155d3c8201 customFieldDictionary (1) /Value String 90.5 customFieldDictionary (1) /ValueType String Edm.Double customFieldDictionary (2) /__metadata/type String Sp。KeyValue customFieldDictionary (2) /Key String Custom_c6fb67e0b9a1e411941000155d3c8201 customFieldDictionary (2) /Value String 2015-04-01T00:00:00.00000000 customFieldDictionary (2) /ValueType String Edm.DateTime 定義
新增 [呼叫 HTTP Web 服務 ] 動作來取出專案。
編輯 Web 服務呼叫的屬性,以指定要求標頭。 若要開啟 [ 屬性 ] 對話框,請以滑鼠右鍵按兩下動作,然後選擇 [ 屬性]。
新增 呼叫 HTTP Web 服務 動作以呼叫 UpdateCustomFields 方法。
請記下
/Draft/
Web 服務 URL 中的區段。 完整的 URL 看起來應該像這樣:https://<site-url>/_api/ProjectServer/Projects('<guid>')/Draft/UpdateCustomFields()
編輯 Web 服務呼叫的屬性,以將 RequestHeader 和 RequestContent 參數係結至您建立的字典。 您也可以建立新的變數來儲存 ResponseContent。
選用。 從回應字典讀取以檢查佇列作業的狀態,並記錄工作流程歷程記錄清單中的資訊。
將 Web 服務呼叫新增至 發佈 端點,以發佈專案。 請一律使用相同的要求標頭。
將最終 Web 服務呼叫新增至 Checkin 端點,以簽入專案。
從工作流程建立 Project 網站
每個專案都可以有自己的專用 SharePoint 網站,小組成員可以在其中共同作業、共用檔、提出問題等等。 先前,只有項目經理在第一次發佈或手動發佈時,才能在 Project 專業版 或由 PWA 設定中的系統管理員自動建立網站,或者可以停用網站。
我們已新增 CreateProjectSite 方法,讓您可以選擇建立專案網站的時機。 當專案提案到達預先定義工作流程中的特定階段,而不是第一次發佈時,這對於想要自動建立其網站的組織特別有用。 後續項目網站建立可大幅改善建立專案的效能。
前提:在您可以使用 CreateProjectSite 之前,必須在 [PWA> 設定連線的SharePoint 網站設定] 中設定 [允許使用者選擇] 設定以建立項目網站>。
建立建立 Project 網站的工作流程
建立或編輯現有的工作流程,然後選取您要建立專案網站的步驟。
使用 [建置字典] 動作建立 requestHeader 字典。
將下列兩個專案新增至字典。
名稱 Type 值 接受 String application/json;odata=verbose Content-Type String application/json;odata=verbose 新增 [呼叫 HTTP Web 服務 ] 動作。 將要求類型變更為使用 POST,並使用下列格式設定 URL:
https://<site-url>/_api/ProjectServer/Projects('<guid>')/CreateProjectSite('New web name')
將 Project 網站的名稱當做字串傳遞給 CreateProjectSite 方法。 若要使用專案名稱作為網站名稱,請傳遞空字串。 請務必使用唯一的名稱,讓您建立的下一個專案網站能夠運作。
編輯 Web 服務呼叫的屬性,以將 RequestHeader 參數系結至您建立的字典。