Споделяне чрез


Разширяване на Universal Resource Scheduling с помощта на персонализирани ограничения на ресурс

Universal Resource Scheduling, системата за планиране в основата на Dynamics 365 Field Service и Project Service Automation, се предоставя със значителни възможности за съпоставяне на ресурси с цел резервиране на правилните ресурси за дадена задача. Въпреки че решението Universal Resource Scheduling се предоставя с Field и 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 Контакт 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 за съпоставяне на ресурс

    1. Потребител ръчно добавя ограничения в панела на филтъра
    2. Ограниченията се изпращат до API за съпоставяне на ресурси
    3. Показва се филтриран списък с ресурси
  • Филтриране на изискване. API за извличане на ограничения на изискване > Панел на филтъра > API за съпоставяне на ресурси

    1. Потребител намира наличност за запис на изискване (от таблото на графика или от бутона „Резервация” в лентата).
    2. Ограниченията се извличат чрез API за извличане на ограничения за изискване и се показват в панела на филтъра.
    3. Ограниченията се изпращат до API за съпоставяне на ресурси
    4. Показва се филтриран списък с ресурси

Разширяване на Universal Resource Scheduling с персонализирани ограничения

Universal Resource Scheduling може да се разширява с помощта на персонализирани ограничения на ресурс. Разширяващите ограничения работят по същия начин като тези, вградени в Universal Resource Scheduling – те се моделират като атрибути и релации в Dynamics 365.

Подробно ръководство с примери за код, нужни за всяка стъпка и описани в Разширяване на Universal Resource Scheduling: Намиране на ресурси по език – подробно ръководство

Персонализирани ограничения

Ние ще използваме „Език” като примерен сценарий. Организация иска да филтрира ресурси по езика, на който говорят. Те искат да уловят и записа за изискване за езика, нужен за дадена работа. Това ограничение следва подобен модел на вграденото ограничение „Територия”. Нов главен обект „Език” съхранява различни езици, които даден ресурс може да се говори. Запис „Ресурс” може тогава да бъде свързан с много езици чрез обект на релация „много към много”. В обекта „Изискване” ще създадем два нови атрибута: Required Language и Secondary Language. При намирането на наличните ресурси за изискване само ресурсите, свързани или с Required Language, или с Secondary Language, ще бъдат показани.

Тъй като разширяемите ограничения работят напълно с релационния модел на Dynamics 365, всяка структура, използвана за изразяване на ограничения може да се използва в Universal Resource Scheduling. Тук е по-силен пример за персонализирани ограничения. Нека предположим, че даден организация взема продукти от дадено местоположение и ги доставя на местоположение на клиент. Обектът на ресурс се удължава с атрибут Maximum Weight, който описва максималното тегло, което може да се носи, когато става дума за ресурс превозно средство. Обектът на изискване се свързва с обекта „Продукт на Dynamics 365” с релация „много към едно”, освен това всеки продукт получава нов атрибут Weight. Когато запис на изискване е създаден за улавяне на нужна работа, той се свързва с всички нужни за изпълнението на работата продукти. Когато даден потребител намери наличност за изискване, общата тежест на всички свързани записи на продукти се извлича и се връщат само ресурсите, които могат да носят тази тежест, определена в атрибута Maximum Weight.

Тук ще опишем персонализираното ограничение за език. Първо имаме нашия нов обект „Език”:

Language
Английски
Испански

и нашата нова дъщерна релация „много към много” „Език на ресурс”:

Ресурс Language
Jorge Galt Английски
Abraham McCormick Английски
Abraham McCormick Испански

Ето обекта „Изискване” с нашите два нови атрибута – „Задължителен език” и „Вторичен език”, които представят езиците, които трябва да говори ресурсът, за да съответства на това изискване:

Изискване Времетраене Област Задължителен език Вторичен език
Задача 1 1 час Ню Йорк Английски ---
Задача 2 1 час Сиатъл Испански Английски

Точки на разширение

Въз основа на потоците за съпоставяне на ресурс, описани по-горе, това са точките на разширение, които трябва да променим, за да работят нашите персонализирани ограничения:

  1. API за извличане на ограничения за изискване

    API трябва да прочетете нашите нови атрибути „Задължителен език” и „Вторичен език”, така че когато даден потребител намери наличност за изискване, нашите нови ограничения се извличат.

  2. Панел на филтъра

    Потребителят трябва да може да изберете от списък със записи на език в панела на филтъра, за да филтрира за съответстващи ресурси. Когато намира наличност за дадено изискване, панелът на филтъра трябва да показва „Задължителен език” и „Вторичен език” от записа за изискване предварително избрани в списъка с езици.

  3. API за съпоставяне на ресурси

    API ще вземе като входящи данни новите ограничения за език; той трябва да върне само ресурси, които говорят избраните езици.

Разширяеми заявки

Първоначално API за извличане на ограничения за изискване (№1 по-горе) и API за съпоставяне на ресурс (№3 по-горе) използват FetchXML за проверка на данни от Dynamics 365. API за извличане на ограничения за изискване използва множество заявки за извличане на запис на изискване и неговите дъщерни ограничения (например „Характеристика на изискване” и др.). API за съпоставяне на ресурси въз основа на ограниченията на ресурс, подадени като входящи данни, ще създаде динамично правилната FetchXML заявка, така че само записи на ресурс, които отговарят на указаните FetchXML критерии, ще бъдат върнати от Dynamics 365.

В актуализацията от юли 2017 г. за Universal Resource Scheduling с цел поддръжка на съпоставянето на ресурси бе въведен Универсален FetchXML (UFX). Две важни функции, които UFX добавя към FetchXML са: 1) множество групи резултати, една UFX заявка може да върне резултати от множество обекти; и 2) динамичен FetchXML, UFX заявка може динамично да конструира FetchXML въз основа на входните данни.

С UFX една заявка може да бъде създадена да провери за запис за изискване и всички негови дъщерни записи. API за извличане на ограничения за изискване изпълнява възможна за персонализиране UFX заявка за извличане на изискване и дъщерните му ограничения. Заявката може да се персонализира да извлече и персонализирани записи на ограничение.

Наборът от свойства на ограничения, върнат от API за извличане на ограничения за изискване, се подава като входящи данни към API за съпоставяне на ресурси. API изпълнява персонализирана UFX заявка. С UFX заявката използва входящите ограничения за динамично изграждане на правилен FetchXML за намиране на съвпадащи ресурси. Тази UFX заявка също може да бъде променена да изгради правилен FetchXML да върне само ресурси, съответстващи на персонализирани ограничения.

Разширяемо оформление на филтър и шаблон на ресурс

В актуализацията от юли 2017 г. за Universal Resource Scheduling панелът на филтъра (#2 по-горе) беше актуализиран да поддържа персонализиран чрез XML дефиниция на оформление. Новото оформление поддържа контроли на падащо меню, за да показва списък със записи от главни обекти и типични контроли за number, datetime и checkbox. Оформлението може да бъде променяно да позволява на потребители да избират записи от обекти на персонализирани ограничения. Персонализираните ограничения, подобно на тези, предоставени с Universal Resource Scheduling, се подават тогава като входящи данни към API за съпоставяне на ресурси.

Друга точка на разширяване от страна на клиента, която стана достъпна в актуализацията от юли 2017 г., е клетката на ресурс. Клетката на ресурс се рендира чрез възможен за персонализиране шаблон на Handlebars.js. Резултатите от API за съпоставяне на ресурси са на разположение в шаблона. По тази причина чрез персонализирането на заявката, изпълнена от API за съпоставяне на ресурси, персонализираните данни могат да бъдат рендирани в клетата на ресурс.

Подробно ръководство с примери за код, нужни за всяка стъпка и описани в Разширяване на Universal Resource Scheduling: Намиране на ресурси по език – подробно ръководство

Допълнителни забележки

  • Понастоящем оформлението на филтъра не може да се конфигурира, когато планируем обект използва свързана група изисквания вместо изискване за ресурс.

Вижте също

Универсален Fetch XML

Бележки по изданието за разширяване на Universal Resource Scheduling

Hinweis

Можете ли да ни споделите повече за езиковите си предпочитания за документацията? Попълнете кратко проучване. (имайте предвид, че това проучване е на английски език)

Проучването ще отнеме около седем минути. Не се събират лични данни (декларация за поверителност).