使用自訂資源限制式來擴充 Universal Resource Scheduling
Universal Resource Scheduling 是構成 Dynamics 365 Field Service 和 Project Service Automation 基礎的排程引擎,隨附大量資源比對功能,來為工作預約適當的資源。 雖然 Universal Resource Scheduling 解決方案隨附 Field Service 和 Project Service,Universal Resource Scheduling 也可用來排程 Dynamics 365 中的任何工作資料流。 在本文中,我們會查看內建資源限制的實作方式,以及如何使用自訂資源限制來自訂 Universal Resource Scheduling。
資源、需求和限制
資源
Universal Resource Scheduling 的核心是資源 (bookableresource
) 實體。 建立預約 (bookableresourcebooking
) 記錄時,這些記錄會與資源記錄建立關聯。 為了確保選取正確的資源,Universal Resource Scheduling 隨附許多內建篩選及限制,藉以將資源分類。 例如:\[資源類型\] (指出資源是使用者、連絡人、客戶、設備等)、\[特性\] (依資源精通的技能篩選資源)、\[領域\] (將資源指派給特定區域)、\[組織單位\] (建立組織階層模型),以及許多其他項目。
資源記錄及其相關的限制是透過屬性或與其他實體的關聯來建立模型。 例如,[名稱] 和 [資源類型] 是資源實體上的屬性。 [資源特性] 和 [資源領域] 是下層關聯,因為資源可與一個以上的資源建立關聯。 這些實體是 [資源] 和 [特性/領域] 實體的下層關聯。 [組織單位] 是資源實體上對組織單位實體的查詢屬性。
需求
Universal Resource Scheduling 的另一個重要實體是資源需求 (msdyn_resourcerequirement
) 實體。 需求實體會記錄完成工作所需具備的條件。 它會擷取指定工作的相關參數,例如 \[開始日期\] 和 \[結束日期\] 欄位 (限制可完成工作的時段)、\[期間\] 欄位 (預期工作所需的時間長度)、\[工作地點\] (表示必要工的位置)。 需求實體也會擷取資源限制,以限制哪些資源可以履行並預約給此需求。 如同資源實體一樣,資源限制也表示為需求實體上的屬性,或表示為與其他實體的關聯。 [領域] 是從需求實體對領域實體的查詢屬性,表示要完成工作所在的領域,因此我們必須從相同的領域中找出資源。 [需求特性] 是將需求關聯至特性實體的下層關聯,表示完成工作所需的技能,而需求因此只能與具備符合技能的資源比對相符。
Universal Resource Scheduling 隨附的限制
下列為隨附於 Universal Resource Scheduling 的限制清單:
- 特性 - 可用來建立資源所具備技能的模型。 它也支援選擇性評等值,對資源在每項技能上的精通程度進行評等
- 類別 - 可以將資源與類別建立關聯
- 領域 - 用於指派資源給領域地區
- 組織單位 - 用於建立組織階層模型
- 資源類型 - 定義資源的類型
- 團隊 - 資源做為成員所屬性於的團隊
- 業務單位 - 資源屬於的業務單位
在排程面板中篩選
排程面板會顯示指派給他們的資源及預約的清單。 排程面板中的 [篩選] 面板可讓您依據資料的限制來篩選資源清單,例如在 [資源類型] 下拉式清單中選取使用者的資源類型,將資源清單篩選為類型為 [使用者] 的資源。 同樣的,您也可以藉由比對特性或領域來篩選資源。
使用 [篩選] 面板篩選資源是一種尋找相符資源的方法。 當您想要手動顯示符合一組特定限制的資源清單時,將會使用此方法。
使用排程小幫手尋找可用資源
在排程面板底部,您可找到需求記錄的清單。 您可以選取其中一項,並選擇要尋找可用性。 此動作會開啟排程小幫手。 排程小幫手會使用所選需求記錄上擷取的限制來尋找可供預約的相符資源。 面板只會顯示符合需求限制且在需求所指定之要求時段內可用的資源。
類似的體驗可透過 Dynamics 365 清單檢視或表單中需求實體及其他可排程實體提供的 [預約] 功能區按鈕來取得。 按一下 [預約] 時,排程小幫手會開啟,並顯示符合所選需求記錄之限制的資源。
與前述 [排程面板] 模式 (您會在其中使用 [篩選] 面板手動篩選資源) 不同,在 [排程小幫手] 模式下,[篩選] 面板會自動從需求記錄填入資源限制,並且僅顯示相符的資源。
限制條件比對的運作方式
限制實體
有些限制是直接在資源實體上指定為屬性,而其他限制此是透過關聯來定義。 限制參考第二個主要實體時,就需要關聯。
我們來設想資源記錄及其相關聯的領域和特性限制。
首先是,主要記錄。 我們有領域儲存在領域實體中:
領域 |
---|
紐約 |
紐澤西 |
西雅圖 |
我們也有特性在特性實體中:
特性 |
---|
專案經理 |
設計工作 |
財務分析 |
組織單位實體:
組織單位 |
---|
Contoso US |
Contoso EU |
最後,我們有資源實體:
資源 | 資源類型 | 組織單位 |
---|---|---|
Jorge Galt | User | Contoso US |
Abraham McCormick | Contact | Contoso EU |
雖然單一資源記錄可用來擷取單一值限制 (例如上述 [資源類型] 和 [組織單位]), 如果我們想要將資源與多個領域或特性記錄建立關聯,就必須使用第三個實體 (多對多 (N:N) 關聯) 來儲存這些關聯。
我們會使用資源領域實體來建立資源的多個領域關聯。
資源領域記錄:
資源 | 領域 |
---|---|
Jorge Galt | 紐約 |
Jorge Galt | 紐澤西 |
Abraham McCormick | 西雅圖 |
,並使用資源特性實體來儲存資源的多個特性。
資源特性記錄:
資源 | 特性 |
---|---|
Jorge Galt | 設計工作 |
Abraham McCormick | 專案經理 |
Abraham McCormick | 財務分析 |
類似於資源,需求記錄會擷取單一值限制,而下層記錄則儲存多值限制。
以下是需求實體:
需求 | 期間 | 領域 |
---|---|---|
工作 1 | 1 小時 | 紐約 |
工作 2 | 1 小時 | 西雅圖 |
需求特性實體:
特性需求記錄:
需求 | 特性 |
---|---|
工作 1 | 設計工作 |
工作 2 | 專案經理 |
工作 2 | 財務分析 |
需求有時可能會有模型建立成查詢屬性的限制,而資源可能會在 N:N 資料表上儲存相符的屬性。 例如,就需求而言,領域限制是對領域實體的查詢屬性。 需求會擷取對工作的需求以及完成工作所在的領域。 不過,資源記錄可能會與許多領域記錄有關聯。
限制屬性包
當使用者在 [篩選] 面板選取值,並選取 [搜尋] 按鈕時,值會傳送至資源比對 API。 對於多值限制,[篩選] 面板會顯示主要實體 [領域] 和 [特性] 中的資料,並將限制屬性包中選取的值納入。
以下是有限制傳送給資源比對 API 的範例屬性包:
名字 | Value |
---|---|
ResourceType |
User |
Territories |
紐約 紐澤西 |
這會指示資源比對 API 尋找類型為 [使用者] 且與 [紐約] 或 [紐澤西] 領域相關聯的資源。
處於排程小幫手時,首先會透過擷取需求限制 API 從需求記錄擷取限制。 擷取的限制會接著預先填入 [篩選] 面板,然後傳送至資源比對 API。
擷取需求限制 API 會查詢需求記錄以及所有相關子限制 (例如需求特性)。 它會以表示所有在所選需求上擷取之資源限制的限制屬性包來回應。
以下是擷取需求限制 API 的範例回應:
名字 | Value |
---|---|
Requirement |
工作 2 |
Duration |
1 小時 |
Territories |
西雅圖 |
Characteristics |
專案經理 財務分析 |
資源比對 API 會接收限制屬性包做為輸入,並進行查詢以比對資源。 符合的資源會接著顯示在排程面板或排程小幫手中。
摘要列出用於資源比對的實體
- 範例主要實體
- 領域 - 參照為限制
- 特性 - 參照為限制
- 資源 - 已指派給預約
- 資源領域 - 將資源與領域建立關聯
- 資源特性 - 將資源與特性建立關聯
- 範例交易實體
- 需求 - 擷取對工作的需求並參照領域
- 需求特性 - 將需求與特性建立關聯
摘要列出資源比對流程
手動篩選。 [篩選] 面板 > 資源比對 API
- 使用者在 [篩選] 面板中手動新增限制
- 限制會傳送至資源比對 API
- 將會顯示篩選的資源清單
要求篩選。 擷取需求限制 API > [篩選] 面板 > 資源比對 API
- 使用者尋找需求記錄的可用性 (從排程面板,或從功能區的 [預約] 按鈕)。
- 限制是透過擷取需求限制 API 所擷取,並顯示在 [篩選] 面板中。
- 限制會傳送至資源比對 API
- 將會顯示篩選的資源清單
使用自訂擴充 Universal Resource Scheduling
Universal Resource Scheduling 可以使用自訂資源限制進行擴充。 擴充的限制與內建於 Universal Resource Scheduling 的限制在運作方式上相同,這些限制的模型已在 Dynamics 365 中建立成屬性及關聯。
附有每個步驟所需程式碼範例的逐步指南會在擴充 Universal Resource Scheduling:依據語言尋找資源 - 逐步指南做說明
自訂限制
我們會使用「語言」做為範例案例。 組織想要依據其所說語言來篩選資源。 他們還想要在需求記錄上擷取工作所需的語言。 此限制遵循內建領域限制的小型模式。 新的主要實體 [語言] 會儲存資源所能說的不同語言。 資源記錄接著可以透過多對多關聯實體來與許多 [語言] 建立關聯。 在需求實體上,我們會建立下列兩個新的查詢屬性:Required Language
和 Secondary Language
。 尋找需求的可用資源時,只會顯示與 Required Language
或 Secondary Language
有關聯的資源。
我們將在此說明自訂語言限制。 首先,我們有新的 [語言] 實體:
Language |
---|
英文 |
西班牙文 |
以及新的 [資源語言] 多對多下層實體:
資源 | Language |
---|---|
Jorge Galt | 英文 |
Abraham McCormick | 英文 |
Abraham McCormick | 西班牙文 |
以下是包含 [必要語言] 和 [次要語言] 這兩個新屬性的需求實體,該屬性表示資源要符合此需求,所必須使用的語言:
需求 | 期間 | 領域 | 必要語言 | 次要語言 |
---|---|---|---|---|
工作 1 | 1 小時 | 紐約 | 英文 | --- |
工作 2 | 1 小時 | 西雅圖 | 西班牙文 | 英文 |
擴充性起點
根據上述資源比對流程,下列是我們必須對自訂限制進行修改才有作用的擴充性起點:
擷取需求限制 API
此 API 需要讀取新的 [必要語言] 和 [次要語言] 屬性,因此當使用者尋找需求的可用性時,就會擷取這些新的限制。
篩選面板
使用者應該可以從 [篩選] 面板的語言記錄清單中選取以篩選比對相符的資源。 找到需求的可用性時,篩選面板應該會顯示語言清單中預先選取之需求記錄的 [必要語言] 和 [次要語言]。
資源比對 API
此 API 會取得新的 [語言] 限制做為輸入。它必須只傳回使用所選語言說話的資源。
可擴充查詢
擷取需求限制 API (上述 #1) 和資源比對 API (上述 #3) 會在內部使用 FetchXML 來查詢 Dynamics 365 的資料。 擷取需求限制 API 會發出多個查詢來擷取需求記錄及其下層限制 (例如需求特性等)。資源比對 API (根據傳遞給它做為輸入的限制資源) 會動態建構正確的 FetchXML 查詢,因此 Dynamics 365 只會傳回符合指定之 FetchXML 準則的資源記錄。
在 Universal Resource Scheduling 的 2017 年 7 月更新 (用於支援可擴充資源比對) 中,引進了 Universal FetchXML (UFX)。 UFX 新增至 FetchXML 的兩項重要功能:1) 多個結果集,單一 UFX 查詢可以從多個實體傳回結果,以及 2) Dynamic FetchXML,UFX 查詢可以根據輸入資料動態建構 FetchXML。
有了 UFX,就可以建構單一查詢來查詢需求記錄及其所有下層記錄。 擷取需求限制 API 會執行可自訂 UFX 查詢來擷取需求及其下層限制。 您也可以自訂查詢來擷取自訂限制記錄。
擷取需求限制 API 傳回的限制屬性包會當做輸入傳遞給資源比對 API。 此 API 會執行可自訂的 UFX 查詢。 查詢會透過 UFX 使用輸入限制會,動態建構正確的 FetchXML 以尋找符合的資源。 您也可以修改這個 UFX 查詢來建構適當的 FetchXML,只傳回符合自訂限制的資源。
可擴充篩選版面配置及資源範本
在 Universal Resource Scheduling 的 2017 年 7 月更新中,[篩選] 面板 (上述 #2) 已更新,可透過 XML 版面配置定義支援自訂。 新的版面配置支援下拉式控制項,以顯示主要實體以及一般 number
、datetime
和 checkbox
控制項。 您可以修改版面配置,允許使用者從自訂限制實體選取記錄。 如同 Universal Resource Scheduling 隨附的限制一樣,自訂限制也會當做輸入傳遞給資源比對 API。
另一個在 2017 年 7 月更新中提供的用戶端擴充性起點是資源儲存格。 資源儲存格是透過可自訂 Handlebars.js 範本來呈現。 資源比對 API 的結果已可供此範本使用。 因此,可以藉由自訂資源比對 API 所執行的查詢,將自訂資料呈現在資源儲存格中。
附有每個步驟所需程式碼範例的逐步指南會在擴充 Universal Resource Scheduling:依據語言尋找資源 - 逐步指南做說明
其他注意事項
- 當可排程實體使用是相關聯的需求群組,而不是資源需求時,目前無法設定篩選配置。