共用方式為


在 Universal Resource Scheduling 中自定義資源匹配

Universal Resource Scheduling 讓您能夠比對資源,為工作安排合適的資源。 它也會安排 Dynamics 365 中的任何工作流程。 本文說明內建資源限制的運作方式,以及如何使用自訂限制來自訂通用資源排程。

資源、要求和約束

資源

Universal Resource Scheduling 的核心是 Resource (bookableresource) 實體。 建立預約 (bookableresourcebooking) 記錄時,它們會與資源記錄相關聯。 Universal Resource Scheduling 包含許多內建篩選條件和條件約束,可協助您選取正確的資源。 例如:

  • 資源類型 ,以指出資源是使用者、連絡人、帳戶或設備
  • 要根據資源所精通技能篩選資源的特性
  • 區域範圍,以將資源指派給特定區域
  • 組織 用於建立組織階層模型的單位

資源記錄及其相關聯的限制是透過屬性或其他實體的關係來建模。 例如,名稱和資源類型是 資源 實體上的屬性。 [資源特性] 和 [資源領域] 是下層關聯,因為資源可與一個以上的資源建立關聯。 這些實體與資源特徵/區域範圍實體有子關係。 組織單位是 資源 實體對 組織單位 實體的查閱屬性。

需求

Universal Resource Scheduling 中的另一個重要實體是 Resource Requirement ()msdyn_resourcerequirement 實體。 需求實體會記錄要完成的工作需求。 它會擷取所需工作的參數。 例如:

  • [開始][結束日期] 欄位會限制可以完成工作的時段。
  • 持續時間」 欄位指出工作預計需要多長時間。
  • 「工作位置」欄位指出所需工作的位置。

需求實體會擷取資源限制,以限制哪些資源可以滿足並預約此需求。 與 資源實體 一樣,資源限制會表示為 需求 實體上的屬性或與其他實體的關聯性。 Territory 是從 需求 實體到 區域範圍 實體的查閱屬性,指出要在其中完成工作的區域範圍,因此,我們必須從相同的區域範圍尋找資源。 需求特性是將需求關聯至特性實體的下層關聯性,表示完成工作所需的技能。 因此,需求只能匹配具有匹配技能的資源。

通用資源排程 隨附的限制式

Universal Resource Scheduling 包含下列限制條件:

  • 特徵:代表資源所擁有的技能,並具有選擇性的評等值,以指出資源的特徵層級
  • 類別:定義要與資源相關聯的群組
  • 區域範圍:指定資源的地理區域
  • 組織單位:反映組織層次結構
  • 資源類型:識別資源的分類
  • 團隊:識別資源所屬的團隊
  • 業務單位:顯示資源所屬的業務單位

排程面板篩選器

排程面板會列出資源及其指派預約。 使用「過濾器」面板,依資源的限制來過濾資源。 例如,選取 [ 使用者 ] 資源類型,將資源清單篩選為使用者。 同樣,您可以通過匹配特徵或區域來篩選資源。

使用「篩選器」面板,手動顯示符合特定限制的資源。

使用排程小幫手尋找可用的資源

排程面板底部顯示需求記錄清單。 您可以選擇其中一個,然後選擇查找可用性。 此動作會開啟排程助理。 排程小幫手會使用所選需求的條件約束來尋找可用的相符資源。 只有符合需求限制的資源,且在需求上指定的要求時段內可用的資源,才會顯示在展示板上。

類似的體驗可透過在 Dynamics 365 清單檢視或表單的需求實體及其他可排程實體中選取預約來取得。 排程小幫手隨即開啟,顯示符合所選需求記錄條件約束的資源。

與使用篩選面板手動篩選資源的排程面板不同,排程小幫手會自動使用需求記錄中的資源限制填入篩選面板。 因此,只會顯示相符的資源。

限制條件比對的運作方式

限制實體

有些條件約束會直接在 資源實體 上指定為屬性,而其他條件約束則透過關聯性定義。 當約束引用第二個主實體時,需要建立關係。

讓我們考慮資源記錄及其相關聯的領土和特徵限制。

首先是,主要記錄。 我們有儲存在 「區域」 實體中的區域範圍:

  • 紐約
  • 新澤西州
  • 西雅圖

Characteristic 實體中,我們也具備特徵:

  • 專案管理人

  • 設計師

  • 金融分析師

  • Contoso 中國

  • Contoso 歐洲

我們有 資源 實體:

資源 資源類型 組織單位
豪爾赫·高爾特 User Contoso 中國
亞伯拉罕·麥考密克 連絡人​​ Contoso 歐洲

而單一資源記錄則可擷取單一值限制,例如資源類型和組織單位。 如果我們想要將資源與多個區域或特徵記錄建立關聯,則必須使用第三個實體,即多對多 (N:N) 關係,來儲存這些關聯。

我們使用資源 區域範圍 實體來關聯資源的多個區域範圍。

資源區域記錄:

資源 領域
豪爾赫·高爾特 紐約
豪爾赫·高爾特 新澤西州
亞伯拉罕·麥考密克 西雅圖

資源 特性 實體,用於儲存資源的多個特性。

資源特性記錄:

資源 特性
豪爾赫·高爾特 設計師
亞伯拉罕·麥考密克 專案管理人
亞伯拉罕·麥考密克 金融分析師

與資源類似,需求記錄會擷取單一值限制,而子記錄會儲存多值限制。

需求實體:

需求 持續時間 領域
工作 1 1 小時 紐約
任務 2 1 小時 西雅圖

需求特性實體:

需求特徵記錄:

需求 特性
工作 1 設計師
任務 2 專案管理人
任務 2 金融分析師

有時,需求具有條件約束作為查閱屬性,而資源會將相符的屬性儲存在 N:N 表格中。 例如,對於需求,區域範圍限制是 區域實體 的查閱屬性。 需求會描述工作需求及工作進行的地區。 不過,資源記錄可以與許多區域範圍記錄相關聯。

限制屬性包

當使用者在「篩選器」面板中選取值並選取 「搜尋」時,值會傳送至資源比對 API。 對於多值約束,「篩選器」面板會顯示來自主要實體 「區域範圍」「特徵」 的資料,並將選取的值包含在約束內容包中。

以下是範例屬性包,其中包含傳送至資源比對 API 的條件約束:

名稱 價值觀
ResourceType User
Territories 紐約
新澤西州

限制會告知「資源比對 API」尋找與紐約或紐澤西州地區相關聯的「 使用者 」類型資源。

在使用排程助理時,會先透過擷取需求限制 API 從需求記錄中檢索限制條件。 然後,擷取的限制會在「篩選器」面板中預先填入,並傳送至資源比對 API。

「擷取需求限制」API 會查詢需求記錄及所有相關的子限制 (例如,需求特性)。 它會以表示所有在所選需求上擷取之資源限制的限制屬性包來回應。

以下是來自 Retrieve Requirement Constraints API 的示例回應:

名稱 價值觀
Requirement 任務 2
Duration 1 小時
Territories 西雅圖
Characteristics 專案管理人
金融分析師

資源匹配 API 接收約束屬性包和匹配資源的查詢作為輸入。 然後,匹配的資源將顯示在日程安排板或日程安排助理中。

用於資源比對摘要的實體

  • 範例主要實體
    • 領域 - 參照為限制
    • 特性 - 參照為限制
    • 資源 - 已指派給預約
    • 資源領域 - 將資源與領域建立關聯
    • Resource Characteristic - 將資源與特徵關聯
  • 示例交易實體
    • 需求 - 擷取對工作的需求並參照領域
    • 需求特徵 - 將需求與特徵相關聯

資源比對流程摘要

  • 手動篩選。 篩選面板 > 資源匹配 API

    1. 使用者在 Filter (過濾器) 面板中手動添加約束
    2. 約束將發送到 Resource Matching API
    3. 將顯示篩選后的資源清單
  • 要求篩選。 檢索要求約束 API > 篩選器面板 > 資源匹配 API

    1. 使用者尋找需求記錄的可用性 (從排程面板,或從功能區的 [預約] 按鈕)。
    2. 這些約束通過 Retrieve Requirement Constraints API 進行檢索,並顯示在 Filter 面板中。
    3. 約束將發送到 Resource Matching API
    4. 將顯示篩選后的資源清單

使用自訂限制條件擴充 Universal Resource Scheduling

Universal Resource Scheduling 可以通過自定義資源約束來擴展。 擴展約束的工作方式與 Universal Resource Scheduling 中構建的約束相同,它們在 Dynamics 365 中建模為屬性和關係。

擴展 Universal Resource Scheduling:按語言查找資源 - 分步指南中介紹了包含每個步驟所需的代碼示例的分步指南

自訂限制

我們會使用「語言」做為範例案例。 組織想要依據其所說語言來篩選資源。 他們還希望在需求記錄中登載作業所需的語言。 此約束遵循與內置 Territory 約束類似的模式。 新的主實體 Language 儲存資源可以使用的不同語言。 資源記錄可以通過多對多關係實體與多個語言建立關聯。 在 Requirement (要求) 實體上,我們將創建兩個新的查找屬性: Required LanguageSecondary Language. 在查找需求的可用資源時,僅顯示與 Required LanguageSecondary Language 相關聯的資源。

在這裡,我們將描述自定義語言約束。 首先,我們有新的 [語言] 實體:

語言
英語
西班牙文

資源語言多對多下層實體:

資源 語言
豪爾赫·高爾特 英語
亞伯拉罕·麥考密克 英語
亞伯拉罕·麥考密克 西班牙文

下面是 Requirement 實體,其中包含我們的兩個新屬性 Required Language 和 Secondary Language,表示資源需要說的語言才能與此要求匹配:

需求 持續時間 領域 所需語言 第二語言
工作 1 1 小時 紐約 英語 ---
任務 2 1 小時 西雅圖 西班牙文 英語

擴展性點

根據 資源匹配流程,我們需要修改這些擴充點,以確保自訂的約束條件能夠正常運作:

  1. 擷取需求限制 API

    API 會讀取新的必要語言和次要語言屬性,以便在使用者找到需求的可用性時擷取限制。

  2. 「過濾器」面板

    使用者可以從「過濾器」面板中的語言記錄清單中選取,以過濾相符的資源。 尋找需求的可用性時,「過濾器」面板會顯示語言清單中預先選取的需求記錄中的必要語言及第二語言。

  3. 資源匹配 API

    API 會接收新的語言限制作為輸入,並僅傳回使用所選語言的資源。

可擴充查詢

在內部,擷取需求限制 API 和資源比對 API 會使用 FetchXML 從 Dynamics 365 查詢資料。 「擷取需求限制」API 會發出多個查詢來擷取需求記錄及其子限制,例如「需求性質」。 資源比對 API 會根據作為輸入傳遞給它的資源限制,動態建構正確的 FetchXML 查詢,因此只有符合指定 FetchXML 準則的資源記錄才會從 Dynamics 365 傳回。

通用 FetchXML(UFX) 支援可擴展的資源匹配。 UFX 新增至 FetchXML 的兩個重要功能是:

  • 多個結果集,單一 UFX 查詢可以傳回多個實體的結果
  • 動態 FetchXML:UFX Query 可以根據輸入資料動態建構 FetchXML。

使用 UFX,可以建構單一查詢來查詢需求記錄及其所有子記錄。 擷取需求限制 API 會執行可自訂的 UFX 查詢,以擷取需求及其子限制。 也可以自定義查詢以檢索自定義約束記錄。

從 Retrieve Requirement Constraints API 返回的約束屬性包將作為輸入傳遞給 Resource Matching API。 API 執行可自定義的 UFX 查詢。 在使用UFX時,查詢會利用輸入約束來動態建立正確的「FetchXML」,以查找匹配的資源。 也可以修改此 UFX 查詢以構造適當的 FetchXML,以僅返回與自定義約束匹配的資源。

可擴展篩選器佈局和資源範本

「篩選器」面板支援透過 XML 版面配置定義進行自訂。 新佈局支援下拉控件,以顯示主實體中的記錄清單以及典型的 numberdatetimecheckbox 控件。 可以修改佈局,以允許使用者從自定義約束實體中選擇記錄。 然後,自定義約束(如 Universal Resource Scheduling 附帶的約束)將作為輸入傳遞給 Resource Matching API。 當可計劃實體使用關聯的要求組而不是資源要求時,篩選器佈局當前不可配置。

另一個用戶端擴充點是資源儲存格。 資源儲存格通過可自訂的 Handlebars.js 樣本呈現。 Resource Matching API 的結果可供範本使用。 因此,通過自定義 Resource Matching API 執行的查詢,可以在資源儲存格中呈現自訂數據。

擴展 Universal Resource Scheduling:按語言查找資源 - 分步指南中介紹了包含每個步驟所需的代碼示例的分步指南

其他資源

通用 Fetch XML