共用方式為


使用自訂資源限制式來擴充通用資源排程

Universal Resource Scheduling 是 Dynamics 365 Field Service 和 Project Service Automation 的基礎計劃引擎,附帶了廣泛的資源匹配功能,可以為工作預訂合適的資源。 雖然 Universal Resource Scheduling 解決方案隨 Field and Project 服務一起提供,但 Universal Resource Scheduling 也可用於在 Dynamics 365 中計劃任何工作流。 在本文中,我們會查看內建資源限制式的實作方式,以及如何使用自訂資源限制來自訂通用資源排程。

資源、要求和約束

資源

Universal Resource Scheduling 的核心是 Resource (bookableresource) 實體。 創建 Booking ()bookableresourcebooking 記錄時,它們將與 Resource 記錄關聯。 為了確保選擇正確的資源,Universal Resource Scheduling 附帶了許多內置篩選器和約束,用於對資源進行分類。 示例包括:資源類型,指示資源是否為使用者、聯繫人、客戶、設備等,特徵,按資源精通的技能篩選資源,區域,將資源分配到特定區域,組織單位,對組織層次結構進行建模,等等。

資源記錄及其相關的約束通過屬性或與其他實體的關係進行建模。 例如,Name (名稱) 和 Resource Type (資源類型) 是 Resource 實體上的屬性。 [資源特性] 和 [資源領域] 是下層關聯,因為資源可與一個以上的資源建立關聯。 這些實體是 Resource 與 Characteristic/Territory 實體的子實體關係。 [組織單位] 是資源實體上對組織單位實體的查詢屬性。

需求

Universal Resource Scheduling 中的另一個重要實體是 Resource Requirement ()msdyn_resourcerequirement 實體。 需求實體會記錄完成工作所需具備的條件。 它捕獲有關所需工作的參數,例如From和To date欄位,以限制可以完成工作的時間段;Duration 欄位,用於任務預計需要多長時間;Work Location 指示所需工作的位置。 需求實體也會擷取資源限制,以限制哪些資源可以履行並預約給此需求。 與 Resource 實體一樣,資源約束表示為 Requirement 實體上的屬性或與其他實體的關係。 [領域] 是從需求實體對領域實體的查詢屬性,表示要完成工作所在的領域,因此我們必須從相同的領域中找出資源。 Requirement Characteristic 是將 Requirement 與 Characteristic 實體相關聯的子關係,該實體表示完成工作所需的技能,因此,該要求只能與具有匹配技能的資源匹配。

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

下列為隨附於通用資源排程的限制式清單:

  • 特徵 - 可用於對資源所具有的技能進行建模。 它還支持可選擇的評分值,用於評估資源在每項技能上的熟練程度。
  • 類別 - 資源可以與類別關聯
  • 領土區域 - 將資源分配至領土區域
  • 組織單位 - 為組織層次結構建模
  • Resource Type - 定義資源的類型
  • 團隊 - 資源做為成員所屬性於的團隊
  • 業務單位 - 該資源所屬的業務單位是哪一個

在行程板中篩選

排程面板會顯示指派給他們的資源及預約的清單。 Schedule Board 中的 Filter (篩選器) 面板允許您按約束條件篩選資源清單 - 例如,在 Resource Type (資源類型) 下拉列表中選擇 User (使用者) 資源類型會將資源清單篩選為 User 類型的資源。 同樣,您可以通過匹配特徵或區域來篩選資源。

使用 Filter (篩選器) 面板篩選資源是查找匹配資源的一種方法。 當您想要手動顯示與一組特定約束匹配的資源清單時,可以使用此方法。

使用日程安排助理查找可用資源

在排程面板底部,您可找到需求記錄的清單。 您可以選擇其中一個,然後選擇查找可用性。 此動作會開啟排程助理。 日程安排助理使用在所選 要求記錄 中捕獲的約束來查找可預訂的匹配資源。 看板上僅顯示與 Requirement 上的約束匹配且在 Requirement 上指定的請求時間段內可用的資源。

類似的體驗可透過 Dynamics 365 清單檢視或表單中需求實體及其他可排程實體提供的 [預約] 功能區按鈕來取得。 按一下 [預約] 時,排程小幫手會開啟,並顯示符合所選需求記錄之限制的資源。

與前面提到的日程安排板模式不同,在日程安排板模式下,您使用 Filter (篩選器) 面板手動篩選資源,而在 Schedule Assistant (日程安排助理) 模式下,Filter (篩選器) 面板會自動填充 Requirement (要求) 記錄中的資源約束,並且僅顯示匹配的資源。

限制條件比對的運作方式

限制實體

一些約束直接在 Resource 實體上指定為屬性,而其他約束則通過關係定義。 當約束引用第二個主實體時,需要建立關係。

我們來設想資源記錄及其相關聯的領域和特性限制。

首先是,主要記錄。 我們有領域儲存在領域實體中:

領域
紐約
新澤西州
西雅圖

我們也有特性在特性實體中:

特徵
專案管理人
設計師
金融分析師

組織單位實體:

組織單位
Contoso 中國
Contoso 歐洲

最後,我們有資源實體:

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

雖然單一資源記錄可用來擷取單一值限制 (例如上述 [資源類型] 和 [組織單位]), 如果要將一個 Resource 關聯到多個 Territory 或 Characteristic 記錄,則必須使用第三個實體,即多對多 (N:N) 關係來存儲這些關聯。

我們使用「資源領域」實體來為一個資源關聯多個領域。

資源區域記錄:

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

,並使用資源特性實體來儲存資源的多個特性。

資源特性記錄:

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

與 Resource 類似,Requirement 記錄捕獲單值約束,子記錄存儲多值約束。

以下是需求實體:

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

需求特性實體:

特性需求記錄:

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

有時,需求可能具有建模為查找屬性的約束,而資源可能將匹配屬性存儲在 N:N 表上。 例如,就需求而言,領域限制是對領域實體的查詢屬性。 需求會擷取對工作的需求以及完成工作所在的領域。 不過,資源記錄可能會與許多領域記錄有關聯。

限制屬性包

當使用者在 Filter (篩選器) 面板中選擇值並選擇 Search (搜尋) 按鈕時,這些值將發送到 Resource Matching API。 對於多值限制,[篩選] 面板會顯示主要實體 [領域] 和 [特性] 中的資料,並將限制屬性包中選取的值納入。

下面是一個示例屬性包,其中包含發送到 Resource Matching API 的約束:

名稱 價值觀
ResourceType 使用者
Territories 紐約
新澤西州

這會指示 Resource Matching API 查找與紐約或新澤西地區關聯的 User 類型的資源。

處於排程小幫手時,首先會透過擷取需求限制 API 從需求記錄擷取限制。 然後,檢索到的約束將預先填充到 Filter 面板中,併發送到 Resource Matching 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 中構建的約束相同,它們在 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. 「過濾器」面板

    用戶應該能夠從 Filter (篩選) 面板中的 Language records (語言記錄) 清單中進行選擇,以篩選匹配的資源。 在查找需求的可用性時,篩選面板應顯示在語言清單中預先選擇的需求記錄中的主要語言和次要語言。

  3. 資源匹配 API

    API 將獲取新的 Language 約束作為輸入;它只需要返回使用所選語言的資源。

可擴充查詢

在內部,檢索需求約束 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) 動態 FetchXML,UFX 查詢可以根據輸入數據動態構建 FetchXML。

使用UFX,可以構造單個查詢來查詢 Requirement 記錄及其所有子記錄。 檢索要求約束 API 執行可自定義的 UFX 查詢以檢索要求及其子約束。 也可以自定義查詢以檢索自定義約束記錄。

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

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

在 Universal Resource Scheduling 的 2017 年 7 月更新中,“篩選器”面板(上面的 #2)已更新,以支持通過 XML 佈局定義進行自定義。 新佈局支援下拉控件,以顯示主實體中的記錄清單以及典型的 numberdatetimecheckbox 控件。 可以修改佈局,以允許使用者從自定義約束實體中選擇記錄。 然後,自定義約束(如 Universal Resource Scheduling 附帶的約束)將作為輸入傳遞給 Resource Matching API。

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

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

其他注意事項

  • 當可計劃實體使用關聯的要求組而不是資源要求時,篩選器佈局當前不可配置。

另請參閱

Universal Fetch XML

通用資源排程擴充性版本資訊