Mit Universal Resource Scheduling mit benutzerdefinierten Ressourceneinschränkungen erweitern
Das Dynamics 365 Field Service und Project Service Automation zugrunde liegende Planungsmodul Universal Resource Scheduling wird mit umfangreichen Funktionen zur Ressourcenanpassung geliefert, um die richtigen Ressourcen für einen Auftrag zu buchen. Die Universal Resource Scheduling-Lösung wird zwar mit Field Service und Project Service geliefert, doch kann Universal Resource Scheduling auch zur Planung eines Arbeitsablaufs in Dynamics 365 verwendet werden. In diesem Artikel sehen wir uns an, wie die integrierten Ressourceneinschränkungen implementiert werden und wie Universal Resource Scheduling an benutzerdefinierte Ressourceneinschränkungen angepasst wird.
Ressourcen, Anforderungen und Einschränkungen
Ressourcen
Der Kern für Universal Resource Scheduling ist die Entität für die Ressource (bookableresource
). Wenn Buchungsdatensätze (bookableresourcebooking
) erstellt werden, werden sie einem Ressourcendatensatz zugeordnet. Damit wirklich die richtige Ressource ausgewählt wird, wird Universal Resource Scheduling mit vielen integrierten Filtern und Einschränkungen geliefert, nach denen die Ressourcen kategorisiert werden können. Beispiele hierfür sind: Ressourcentyp (gibt an, ob die Ressource ein Benutzer, ein Kontakt, eine Firma, Ausstattung usw. ist), Merkmal (um die Ressourcen nach Fähigkeiten zu filtern, in denen sie kompetent sind), Gebiet (um Ressourcen für bestimmte Regionen zuzuweisen), Organisationseinheit (um eine Organisationshierarchie zu erstellen) und vieles mehr.
Ein Ressourcendatensatz und die dazugehörigen Einschränkungen werden über Attribute und Beziehungen mit anderen Entitäten gestaltet. Beispielsweise sind Name und Ressourcentyp Attribute der Ressourcenentität. Ressourceneigenschaften und Ressourcengebiete sind untergeordnete Beziehungen, da eine Ressource mehr als einer davon zugeordnet werden kann. Die Entitäten sind untergeordnete Beziehungen der Ressource UND der Merkmals-/Gebietsentität. Organisationseinheit ist ein Suchattribut der Ressourcenentität der Organisationseinheitentität.
Anforderungen
Eine wichtige andere Entität in Universal Resource Scheduling ist die Ressourcenanforderungsentität (msdyn_resourcerequirement
). Die Anforderungsentitätsdatensätze ist eine Anforderung,damit Arbeit verrichtet werden kann. Sie erfasst Parameter der geforderten Arbeit, wie die Datumsfelder "Von" und "Bis" und schränkt den Zeitraum ein, in dem die Arbeit verrichtet werden kann. Das Feld "Dauer" gibt an, wie lange die Arbeit dauern soll, der Arbeitsort gibt den Standort der erforderlichen Arbeit an. Die Anforderungsentität erfasst auch Ressourceneinschränkungen, um zu begrenzen, welche Ressourcen diese Anforderung erfüllen und dafür gebucht werden können. Wie die Ressourcenentität werden Ressourceneinschränkungen als Attribute der Anforderungsentität oder als Beziehungen zu anderen Entitäten ausgedrückt. Gebiet ist ein Suchattribut von der Anforderungsentität an die Gebietsentität und gibt das Gebiet an, in dem die Arbeit verrichtet werden soll. Daher muss eine Ressource aus dem gleichen Gebiet gesucht werden. Anforderungsmerkmal ist eine untergeordnete Beziehung, mit der die Anforderung mit der Merkmalsentität verknüpft wird, die die Fähigkeiten ausdrückt, die erforderlich sind, um den Auftrag abzuschließen, und daher kann die Anforderung nur an Ressourcen mit entsprechenden Fähigkeiten angepasst werden.
In Universal Resource Scheduling gelieferte Einschränkungen
Es folgt die Liste der Einschränkungen, die mit Universal Resource Scheduling geliefert werden:
- Merkmale - Können verwendet werden, um die Fähigkeiten einer Ressource zu gestalten. Sie unterstützt auch optionale Bewertungswerte, um zu bewerten, wie kompetent eine Ressource in einer Fähigkeit ist
- Kategorien - Ressourcen können Kategorien zugeordnet werden
- Gebiete - Um Ressourcen territorialen Regionen zuweisen
- Organisationseinheiten - Um eine Organisationshierarchie zu gestalten
- Ressourcentyp - Definiert den Typ der Ressource
- Teams - Das Team, dem eine Ressource angehört
- Unternehmenseinheiten - Von welcher Unternehmenseinheit die Ressource ein Teil ist
Filtern in der Zeitplanübersicht
Die Zeitplanübersicht zeigt eine Liste mit Ressourcen und die zugewiesenen Buchungen. Mit der Filterbereich in der Zeitplanübersicht können Sie die Liste der Ressourcen nach Einschränkungen filtern - beispielsweise filtert die Auswahl des Ressourcentyps "Benutzer" im Dropdownmenü "Ressourcentyp" die Ressourcenliste nach denen vom Typ "Benutzer". Dementsprechend können Sie Ressourcen nach passenden Merkmalen oder Gebieten filtern.
Den Filterbereich zum Filtern von Ressourcen zu verwenden, ist eine Möglichkeit, nach passenden Ressourcen zu suchen. Diese Methode wird verwendet, wenn Sie manuell eine Liste der Ressourcen anzeigen möchten, die einem bestimmten Satz von Einschränkungen entsprechen.
Suche nach verfügbaren Ressourcen im Zeitplan-Assistenten
Unten in der Zeitplanübersicht finden Sie eine Liste der Anforderungsdatensätze. Sie können einen davon auswählen und nach Verfügbarkeit suchen. Diese Aktion öffnet den Zeitplan-Assistenten. Der Zeitplan-Assistent verwendet die Einschränkungen, die im ausgewählten Anforderungsdatensatz erfasst werden, um entsprechende Ressourcen zu suchen, die gebucht werden können. Es werden nur Ressourcen in der Übersicht angezeigt, die den Einschränkungen für die Anforderung entsprechen und die im angeforderten Zeitraum, der in der Anforderung angegebenen wird, verfügbar sind.
Eine ähnliche Möglichkeit bietet die Menübandschaltfläche "Buchen", die unter der Anforderungsentität und anderen planbaren Entitäten in den Dynamics 365-Listenansichten oder -formularen verfügbar ist. Wenn Sie auf "Buchen" klicken, wird der Zeitplan-Assistent geöffnet und zeigt die Ressourcen an, die den Einschränkungen des ausgewählten Anforderungsdatensatzes entsprechen.
Im Gegensatz zur zuvor genannten Zeitplanübersichtmodus, in dem Sie den Filterbereich verwenden, um Ressourcen zu filtern, füllt der Filterbereich im Zeitplan-Assistent-Modus die Ressourceneinschränkungen vom Anforderungsdatensatz automatisch aus und nur passende Ressourcen werden angezeigt.
So funktioniert Einschränkungsanpassung
Einschränkungsentitäten
Einige Einschränkungen werde als Attribute direkt in der Ressourcenentität angegeben, während andere von Beziehungen definiert werden. Beziehungen sind erforderlich, wenn eine Einschränkung eine 2. Master-Entität referenziert.
Gehen wir von einem Ressourcendatensatz und den dazugehörigen Gebiets- und Merkmalseinschränkungen aus.
Zunächst, die Master-Datensätze Es sind Gebiete in der Gebietsentität gespeichert:
Gebiet |
---|
New York |
New Jersey |
Düsseldorf |
Außerdem haben wir Merkmale in der Merkmalsentität:
Merkmal |
---|
Projektmanager |
Designer |
Finanzanalyst |
Organisationseinheitsentität:
Organisationseinheit |
---|
Contoso US |
Contoso EU |
Schließlich haben wir die Ressourcenentität:
Ressource | Ressourcentyp | Organisationseinheit |
---|---|---|
Jorge Galt | Benutzer | Contoso US |
Abraham McCormick | Kontakt | Contoso EU |
Während ein einzelner Ressourcendatensatz daran arbeitet, einzelwertige Einschränkungen, wie den Ressourcentyp und die Organisationseinheit, zu erfassen. Wenn Sie eine Ressource mehreren Gebiets- oder Merkmalsdatensätzen zuweisen möchten, müssen wir eine 3. Entität in einer n:n-Beziehung verwenden, um die Zuordnungen zu speichern.
Wir verwenden die Ressourcengebietsentität, um mehrere Gebiete einer Ressource zuzuweisen.
Ressourcengebietdatensätze:
Ressource | Gebiet |
---|---|
Jorge Galt | New York |
Jorge Galt | New Jersey |
Abraham McCormick | Düsseldorf |
und die Ressourcenmerkmalsentität, um mehrere Merkmale für eine Ressource zu speichern.
Ressourcenmerkmaldatensätze:
Ressource | Merkmal |
---|---|
Jorge Galt | Designer |
Abraham McCormick | Projektmanager |
Abraham McCormick | Finanzanalyst |
Ähnlich wie bei der Ressource erfasst ein Anforderungsdatensatz einzelwertige Einschränkungen und untergeordnete Datensätze speichern mehrwertige Einschränkungen.
Dies ist die Anforderungsentität:
Anforderung | Dauer | Gebiet |
---|---|---|
Auftrag 1 | 1 h | New York |
Auftrag 2 | 1 h | Düsseldorf |
Die Anforderungsmerkmalsentität:
Anforderungsmerkmaldatensätze:
Anforderung | Merkmal |
---|---|
Auftrag 1 | Designer |
Auftrag 2 | Projektmanager |
Auftrag 2 | Finanzanalyst |
Manchmal enthält die Anforderung eine Einschränkung, die als Suchattribut gestaltet ist, während die Ressource die passenden Attribute in der n:n-Tabelle speichert. Im Fall der Anforderung beispielsweise ist die Gebietseinschränkung ein Suchttribut der Gebietsentität. Eine Anforderung erfasst einen Arbeitsbedarf und das Gebiet, in dem die Arbeit verrichtet wird. Ein Ressourcendatensatz kann allerdings vielen Gebietsdatensätzen zugeordnet werden.
Einschränkungseigenschaftsbehälter
Wenn der Benutzer Werte im Filterbereich auswählt und auf die Suchen-Schaltfläche klickt, werden die Werte an die Resource Matching API gesendet. Für mehrwertige Einschränkungen zeigt der Filterbereich die Daten der Master-Entitäten "Gebiet" und "Merkmal" und schließt die ausgewählten Werte in dem Einschränkungseigenschaftsbehälter ein.
Hier ist ein Beispieleigenschaftenbehälter, bei dem Einschränkungen an die Resource Matching API gesendet wurden:
Name | Value |
---|---|
ResourceType |
Benutzer |
Territories |
New York New Jersey |
Dadurch erfährt die die Resource Matching API, dass sie nach Ressourcen vom Typ "Benutzer" suchen soll, die den Gebieten "New York" oder "New Jersey" zugeordnet sind.
Im Zeitplan-Assistenten werden die Einschränkungen zuerst von einem Anforderungsdatensatz über die Retrieve Requirement Constraints API abgerufen Die abgerufenen Einschränkungen werden anschließend im Filterbereich vorausgefüllt und an die Resource Matching API gesendet.
Die Retrieve Requirement Constraints API fragt den Anforderungsdatensatz und alle verknüpften untergeordneten Einschränkungen (z. B. Anforderungsmerkmal) ab. Sie reagiert mit einem Einschränkungseigenschaftenbehälter, der alle Ressourceneinschränkungen ausdrückt, die in der ausgewählten Anforderung aufgezeichnet werden.
Hier finden Sie eine Beispielantwort von der Retrieve Requirement Constraints API:
Name | Value |
---|---|
Requirement |
Auftrag 2 |
Duration |
1 h |
Territories |
Düsseldorf |
Characteristics |
Projektmanager Finanzanalyst |
Die Resource Matching API erhält den Einschränkungseigenschaftenbehälter als Eingabe und fragt nach passenden Ressourcen ab. Die passenden Ressourcen werden dann in der Zeitplanübersicht oder im Zeitplan-Assistenten angezeigt.
Zusammenfassung der für Ressourcenanpassung verwendeten Entitäten
- Beispiel-Master-Entitäten
- Gebiet - als Einschränkung verwiesen
- Merkmal - als Einschränkung verwiesen
- Ressource - Buchungen zugewiesen
- Ressourcengebiet - Weist Ressourcen Gebieten zu
- Ressourcenmerkmal - weist Ressourcen Merkmalen zu
- Beispiel für Transaktionsentitäten
- Anforderung - Erfasst einen Arbeitsbedarf und verweist ein Gebiet
- Anforderungsmerkmal - weist Anforderungen Merkmalen zu
Zusammenfassung des Flows der Ressourcenanpassung
Manuelle Filterung. Filterbereich > Resource Matching API
- Ein Benutzer fügt Einschränkungen im Filterbereich manuell hinzu
- Die Einschränkungen werden an die Resource Matching API gesendet
- Die gefilterte Liste der Ressourcen wird angezeigt
Anforderungsfilterung Rufen Sie Requirement Constraints API > Filterbereich > Resource Matching API ab
- Ein Benutzer sucht nach Verfügbarkeit für einen Anforderungsdatensatz (über die Zeitplanübersicht oder die Buchen-Schaltfläche im Menüband).
- Die Einschränkungen werden durch die Retrieve Requirement Constraints API abgerufen und im Filterbereich angezeigt.
- Die Einschränkungen werden an die Resource Matching API gesendet
- Die gefilterte Liste der Ressourcen wird angezeigt
Erweitern von Universal Resource Scheduling mit benutzerdefinierten Einschränkungen
Universal Resource Scheduling kann mit benutzerdefinierten Ressourceneinschränkungen erweitert werden. Das Erweitern von Einschränkungen funktioniert auf die gleiche Weise, wie bei den in Universal Resource Scheduling integrierten. Sie werden als Attribute und Beziehungen in Dynamics 365 gestaltet.
Eine schrittweise Anleitung mit den für jeden Schritt erforderlichen Codebeispielen wird in Erweitern von Universal Resource Scheduling: Ressourcen nach Sprache suchen - eine schrittweise Anleitung beschrieben.
Benutzerdefinierte Einschränkungen
Wir verwenden "Sprache" als Beispielszenario. Eine Organisation möchte Ressourcen nach der Sprachen filtern, die gesprochen wird. Sie möchten auch im Anforderungsdatensatz die Sprache erfassen, die für einen Auftrag erforderlich ist. Diese Einschränkung folgt einem der integrierten Gebietseinschränkung ähnlichen Muster. Eine neue Master-Entität "Sprache" speichert die verschiedenen Sprachen, die eine Ressource sprechen kann. Ein Ressourcendatensatz kann vielen Sprachen über eine n:n-Beiziehungsentität zugeordnet werden. Auf der Anforderungsentität erstellen wir zwei neue Suchattribute: Required Language
und Secondary Language
. Wenn eine verfügbare Ressourcen für eine Anforderung gesucht wird, wird nur die Ressourc mit entweder Required Language
oder Secondary Language
angezeigt.
Hier wird die benutzerdefinierte Spracheneinschränkung beschrieben. Zuerst haben wir unsere neue Sprachenentität:
Sprache |
---|
Englisch |
Spanisch |
und unsere neue untergeordnete n:n-Entität der Ressource "Sprache":
Ressource | Sprache |
---|---|
Jorge Galt | Englisch |
Abraham McCormick | Englisch |
Abraham McCormick | Spanisch |
Dies ist die Anforderungsentität mit unseren zwei neuen Attributen: Erforderliche Sprache und Sekundäre Sprache, die die Sprachen darstellt, die von der Ressource gesprochen werden muss, um diese Anforderung zu erfüllen:
Anforderung | Dauer | Gebiet | Erforderliche Sprache | Sekundäre Sprache |
---|---|---|---|---|
Auftrag 1 | 1 h | New York | Englisch | --- |
Auftrag 2 | 1 h | Düsseldorf | Spanisch | Englisch |
Erweiterbarkeitspunkte
Basierend auf den oben beschriebenen Flows der Ressourcenanpassung sind dies die Erweiterbarkeitspunkte, die wir ändern müssen, damit unsere benutzerdefinierten Einschränkungen funktionieren:
Retrieve Requirement Constraints API
Die API muss unsere neuen Attribute "Erforderliche Sprache" und "Sekundäre Sprache" lesen, damit unsere neuen Einschränkungen abgerufen werden, wenn ein Benutzer Verfügbarkeit für eine Anforderung hat.
Filterbereich
Ein Benutzer sollte aus einer Liste der Sprachendatensätze im Filterbereich auszuwählen können, um nach passenden Ressourcen zu filtern. Wenn Verfügbarkeit für eine Anforderung vorhanden ist, sollte der Filterbereich die "Erforderliche Sprache" und die "Sekundäre Sprache" aus dem Anforderungsdatensatz anzeigen, der in der Liste der Sprachen vorab ausgewählt wurde.
Resource Matching API
Die API ruft die neue Spracheneinschränkungen als Eingabe ab. Sie muss nur Ressourcen zurückgegeben, dass sie die Sprache spricht.
Erweiterbare Abfragen
Intern verwenden die Retrieve Requirement Constraints API (Nr. 1 oben) und die Resource Matching API (Nr. 3 oben) FetchXML, um Daten aus Dynamics 365 abzurufen. Die Retrieve Requirement Constraints API gibt mehrere Abfragen zum Abrufen des Anforderungsdatensatzes und seiner untergeordneten Einschränkungen aus (z. B. Anforderungsmerkmal). Die Resource Matching API, die auf den Ressourceneinschränkungen basiert, die als Eingabe an sie übergeben werden, konstruiert dynamisch die richtige FetchXML-Abfrage. So werden von Dynamics 365 nur Ressourcendatensätze zurückgegeben,die den angegebenen FetchXML-Kriterien entsprechen.
Im Update vom Juli 2017 für Universal Resource Scheduling wurde zur Unterstützung des erweiterbaren Ressourcenabgleichs Universelles FetchXML (UFX) eingeführt. Zwei wichtige Funktionen, die UFX FetchXML hinzufügt, sind: 1) Können Mehrere Resultsets, eine einzelne UFX-Abfrage kann Ergebnisse aus mehreren Entitäten zurückgeben und 2) eine UFX-Abfrage kann FetchXML dynamisch anhand von Eingabedaten erstellen.
Mit UFX kann eine einzelne Abfrage erstellt werden, um nach einem Anforderungsdatensatz und allen seinen untergeordneten Datensätzen abzufragen. Die Retrieve Requirement Constraints API führt eine anpassbare UFX-Abfrage aus, um eine Anforderung und ihre untergeordneten Einschränkungen abzurufen. Die Abfrage kann angepasst werden, um auch benutzerdefinierte Einschränkungsdatensätze abzurufen.
Der Einschränkungseigenschaftenbehälter, der von der Retrieve Requirement Constraints API zurückgegeben wird, wird als Eingabe an die Resource Matching API übergeben. Die API führt eine anpassbare UFX-Abfrage aus. Bei UFX verwendet die Abfrage die Eingabeeinschränkungen, um dynamisch die richtige FetchXML zu erstellen, um entsprechende Ressourcen zu suchen. Diese UFX-Abfrage kann auch geändert werden, um die richtige FetchXML zu erstellen, um nur die Ressourcen zurückzugeben, die den benutzerdefinierten Einschränkungen entsprechen.
Erweiterbares Filter-Layout und Ressourcen-Vorlage
Im Update vom Juli 2017 für Universal Resource Scheduling wurde der Filterbereich (Nr. 2 oben) aktualisiert, um Anpassung über eine XML-Layoutdefinition zu unterstützen. Das neue Layout unterstützt Dropdownsteuerelemente, um eine Liste von Datensätzen aus den Master-Entitäten und die typischen number
-, datetime
- und checkbox
-Steuerelemente anzuzeigen. Das Layout kann geändert werden, um Benutzern die Auswahl von Datensätzen aus benutzerdefinierten Einschränkungsentitäten zu erlauben. Die benutzerdefinierten Einschränkungen, z. B. die mit Universal Resource Scheduling ausgelieferten, werden dann als Eingabe an die Resource Matching API übergeben.
Ein weiterer clientseitiger Erweiterbarkeitspunkt, der im Update vom Juli 2017 verfügbar gemacht wurde, ist die Ressourcenzelle. Die Ressourcenzelle wird durch eine anpassbare Handlebars.js-Vorlage gerendert. Die Ergebnisse aus der Resource Matching API werden in der Vorlage verfügbar gemacht. Durch die Anpassung der Abfrage, die von der Resource Matching API ausgeführt wird, können daher benutzerdefinierte Daten in der Ressourcenzelle gerendert werden.
Eine schrittweise Anleitung mit den für jeden Schritt erforderlichen Codebeispielen wird in Erweitern von Universal Resource Scheduling: Ressourcen nach Sprache suchen - eine schrittweise Anleitung beschrieben.
Weitere Hinweise
- Das Filterlayout ist derzeit nicht konfigurierbar, wenn eine planbare Entität eine zugeordnete Anforderungsgruppe anstelle einer Ressourcenanforderung verwendet.
Siehe auch
Universal Resource Scheduling Erweiterbarkeit Versionenhinweise