Automatisierung und Skripte für Workforce

Vorsicht:

In diesem Thema wird behandelt, wie Sie klassische Workforce-Projekte, die in Workforce for ArcGIS angezeigt werden, automatisieren und mit Skripten ausführen. Informationen dazu, wie Sie Projekte, die offline verwendet werden können und die in ArcGIS Workforce angezeigt werden, automatisieren und mit Skripten ausführen können, finden Sie unter Automatisieren von Workforce.

Dies ist ein erweitertes Thema für Administratoren und Projektbesitzer, die direkt mit den Feature-Layern arbeiten, sei es mithilfe von ArcGIS API for Python oder über die REST-API.

Mit ArcGIS Workforce lassen sich Workflows für alle Außendienstaktivitäten planen, verwalten und durchführen. Es ist in Ihre ArcGIS-Organisation mit einer Web-App zum Erstellen und Zuweisen von Aufträgen und mit einer mobilen App für Außendienstmitarbeiter zum Verwalten ihrer Arbeitsaufträge integriert. Nachdem der Projektbesitzer ein Workforce-Projekt erstellt und konfiguriert hat, verwenden Dispatcher die Webanwendung Workforce zum Erstellen und Zuweisen von Aufträgen. Außendienstmitarbeiter zeigen die ihnen zugewiesenen Aufträge an und erledigen sie mit Workforce und anderen ArcGIS-Apps auf ihrem mobilen Gerät. Der gesamte Workflow basiert auf dem Workforce-Projekt, einer Sammlung von Feature-Layern und Karten.

Die Workforce-Web-App ist so konzipiert, dass ein Dispatcher Arbeitsaufträge schnell und effizient erstellen und vorhandene verwalten kann. Allerdings können nicht alle Aktionen im Zusammenhang mit Aufträgen in der Web-App ausgeführt werden. Zu den häufigsten Anforderungen im Zusammenhang mit Workforce zählen z. B. die Integration in andere Systeme wie Arbeitsauftrags-, Asset- oder Instandhaltungsmanagementsysteme von Drittanbietern sowie die Verarbeitung wiederkehrender oder sich wiederholende Aufträge.

Diese Möglichkeiten können Sie bereits jetzt umsetzen, indem Sie die Automatisierung und Skripte mit Workforce nutzen. Sie sind also nicht auf die Web-App beschränkt, um Aufträge zu erstellen. Workforce arbeitet mit dem Inhalt des Assignments-Feature-Layers unabhängig davon, wie die Datensätze erstellt wurden. Aufträge können aus anderen Systemen innerhalb einer Organisation stammen, z. B. aus einem Asset- oder Instandhaltungsmanagementsystem oder einem Bürgerhotline-System. Workforce kann zum Erstellen und Aktualisieren von Aufträgen in externe Quellen integriert werden. Der Assignments-Layer verfügt über das Feld workOrderId, das als Fremdschlüssel fungieren kann, indem eine eindeutige Kennung gespeichert wird, die auf ein externes System verweist. Das Feld workOrderId ist in den Auftragsdetails als ID verfügbar: Dispatcher können die Informationen bereitstellen, und Außendienstmitarbeiter können sie anzeigen.

Bevor Sie sich der Automatisierung und Skripterstellung zuwenden, sollten Sie mit dem Schema von Workforce-Projekten vertraut sein und wissen, wie die Datums- und Zeitfelder für den Auftragsstatus funktionieren. Es wird zwar empfohlen, ArcGIS API for Python zu verwenden, Sie können aber für die Automatisierung von Workforce auch die REST-API für Feature-Layer nutzen. Sofern Aufträge mit demselben Schema erstellt werden, kann Workforce sie interpretieren.

Überblick über das Schema

Ein Workforce-Projekt besteht aus vier Feature-Layern und vier Domänen mit codierten Werten sowie einem vordefinierten Schema. Der Name jedes Feature-Layers ist eine Kombination eines Monikers, der den Zweck des Feature-Layers beschreibt, und an den die GUID des Workforce-Projektelements angehängt ist. Der mit einem Projekt mit der GUID "5dd018fcd88c4d33814cf3da9c44061e" verknüpfte Mitarbeiter-Layer erhält den Namen workers_5dd018fcd88c4d33814cf3da9c44061e. Dadurch wird die Eindeutigkeit eines Feature-Layers sichergestellt.

Diagramm des Workforce-Schemas
Hinweis:

Die Editor-Tracking-Felder unterscheiden sich in ArcGIS Enterprise. Statt CreationDate, Creator, EditDate und Editor lauten Sie created_date, created_user, last_edited_date und last_edited_user.

Die vier Feature-Layer lauten wie folgt:

  1. Workers
    • Ein Punkt-Feature-Layer, der einen Datensatz für jeden Außendienstmitarbeiter enthält, der in das Projekt einbezogen wird.
    • Umfasst Informationen zu dem Außendienstmitarbeiter, einschließlich seiner Kontaktnummer und Stellenbezeichnung.
    • Der ArcGIS-Organisations-Benutzername des Außendienstmitarbeiters wird im Feld "userId" gespeichert.
    • Anhand des Layers wird nachverfolgt, wer die einzelnen Außendienstmitarbeiter erstellt und zuletzt aktualisiert hat.
    • Zwischen OBJECTID und Assignments.workerId besteht eine Primärschlüssel-Fremdschlüssel-Beziehung (PK-FK). Indem der Wert OBJECTID aus dem Workers-Layer als Wert für das Feld Assignments.workerId verwendet wird, wird der Außendienstmitarbeiter mit all seinen Aufträgen verknüpft.
    • Der Layer verfügt über die folgenden Verknüpfungen von Domänen mit codierten Werten:
      • Das Statusfeld ist mit der Domäne mit codierten Werten Worker_Status verknüpft, um den Außendienstmitarbeiterstatus nachzuverfolgen.
  2. Zuweisungen
    • Ein Punkt-Feature-Layer, der einen Datensatz für jeden Auftrag enthält.
    • Umfasst Informationen zum Auftrag, darunter u. a. sein Status, Standort und seine Beschreibung.
    • Anhand des Layers wird nachverfolgt, wer die einzelnen Aufträge erstellt und zuletzt aktualisiert hat.
    • Anlagen sind für den Feature-Layer aktiviert.
    • Der Layer enthält Fremdschlüssel für einige Felder, die Werte aus anderen Layern mit diesem Layer verknüpfen:
      • Assignments.workerId nach Workers.OBJECTID.
      • Assignments.dispatcherId nach Dispatchers.OBJECTID.
      • Assignments.workOrderId kann als Fremdschlüssel für ein externes System, z. B. ein Asset- oder Instandhaltungsmanagementsystem, verwendet werden, indem Werte aus dem anderen System bereitgestellt werden.
    • Der Layer verfügt über die folgenden Verknüpfungen von Domänen mit codierten Werten:
      • Das Feld status ist mit der Domäne mit codierten Werten Assign_Status verknüpft, um den Auftragsstatus nachzuverfolgen.
      • Das Feld priority ist mit der Domäne mit codierten Werten Priority verknüpft, um die Priorität von Arbeitsaufträgen zu verwalten.
      • Das Feld assignmentType ist mit der Domäne mit codierten Werten Assign_Type verknüpft, um die Auftragstypen für das Projekt zu speichern.
  3. Dispatchers
    • Ein Punkt-Feature-Layer, der einen Datensatz für jeden Dispatcher im Projekt enthält.
    • Umfasst Informationen zum Dispatcher, einschließlich seines Namens und seiner Kontaktnummer.
    • Der Benutzername für das ArcGIS-Organisationskonto des Dispatchers wird im Feld userId gespeichert.
    • Anhand des Layers wird nachverfolgt, wer die einzelnen Dispatcher erstellt und zuletzt aktualisiert hat.
    • Zwischen OBJECTID und Assignments.dispatcherId besteht eine Primärschlüssel-Fremdschlüssel-Beziehung (PK-FK). Indem der Wert OBJECTID aus dem Dispatchers-Layer als Wert für das Feld Assignments.dispatcherId verwendet wird, wird der Dispatcher mit allen Aufträgen verknüpft, die er zugewiesen hat.
  4. Location Tracking
    • Ein Punkt-Layer, der einen Datensatz für jede Punktposition enthält, die bei aktivierter Standortverfolgung protokolliert wird.
    • Anhand des Layers wird nachverfolgt, wer die einzelnen Standortverfolgungen erstellt und zuletzt aktualisiert hat.

Die vier Domänen mit codierten Werten lauten wie folgt:

  1. Assign_Status: Speichert die sechs gültigen Werte für den Status eines Auftrags.
  2. Priority: Speichert die vier gültigen Werte für die Priorität eines Auftrags.
  3. Assign_Type: Speichert die Auftragstypen für das Projekt. Diese Domäne mit codierten Werten ist leer, wenn das Projekt erstellt wird. Sie enthält Werte, nachdem Auftragstypen während der Projektkonfiguration hinzugefügt wurden.
  4. Worker_Status: Speichert die drei gültigen Werte für den Status des Außendienstmitarbeiters.

Die Werte der Domänen mit codierten Werten finden Sie im Diagramm des Workforce-Schemas.

Datums- und Zeitfelder für den Auftragsstatus

Jeder in der Domäne Assign_Status festgelegte Auftragsstatus verfügt über ein entsprechendes Datums- und Uhrzeitfeld im Assignments-Feature-Layer. Diese Felder enthalten den letzten Datums- und Uhrzeitwert, zu dem ein Auftrag den entsprechenden Status aufwies. Wenn ein Status erstmals für einen bestimmten Auftrag verwendet wird, wird das zugehörige Datums- und Uhrzeitfeld zuerst gefüllt. Befindet sich ein Auftrag zu einem späteren Zeitpunkt wieder im selben Status, werden das Datums- und Uhrzeitfeld mit dem neuen Datum und der neuen Uhrzeit aktualisiert. Beim erstmaligen Zuweisen eines Auftrags entspricht sein Zuweisungsdatum beispielsweise dem aktuellen Datums- und Uhrzeitwert. Wird er drei Stunden später neu zugewiesen, wird das Feld assignedDate auf die neue Uhrzeit aktualisiert und die ursprüngliche Auftragszeit überschrieben.

AuftragsstatusEntsprechendes Datums- und Uhrzeitfeld

Nicht zugewiesen

CreationDate

Zugewiesen

assignedDate

In Progress

inProgressDate

Completed

completedDate

Abgelehnt

declinedDate

Unterbrochen

pausedDate

Hinweis:

Mit dem Status "Abgebrochen" ist kein Datums- und Uhrzeitfeld verknüpft. Das Editor-Tracking-Feld EditDate kann verwendet werden, um Datum und Uhrzeit zu bestimmen, an denen ein Auftrag abgebrochen wurde, sofern keine anderen Änderungen seit dem Abbruch vorgenommen wurden.

Um die Werte und deren Festlegung besser verstehen zu können, sollten Sie die folgenden Szenarien betrachten:

  • Erneutes Zuweisen zuvor zugewiesener Aufträge
    • Sie haben einen Auftrag zum Zeitpunkt t1 zugewiesen, daher ist assignedDate t1.
    • Später wird der Auftrag zum Zeitpunkt t2 einem anderen Außendienstmitarbeiter neu zugewiesen, daher ist assignedDate t2.
  • Erneutes Zuweisen abgelehnter Aufträge
    • Sie haben einen Auftrag zum Zeitpunkt t1 zugewiesen, daher ist assignedDate t1.
    • Der Außendienstmitarbeiter lehnt den Auftrag zum Zeitpunkt t2 ab, daher ist declinedDate t2. assignedDate bleibt t1.
    • Sie weisen den Auftrag einem anderen Außendienstmitarbeiter zum Zeitpunkt t3 zu, daher ist assignedDate t3.
  • Unterbrechen und Wiederaufnehmen von Aufträgen
    • Sie haben einen Auftrag zum Zeitpunkt t1 zugewiesen, daher ist assignedDate t1.
    • Der Außendienstmitarbeiter beginnt den Auftrag zum Zeitpunkt t2, daher ist inProgressDate t2. assignedDate bleibt t1.
    • Der Außendienstmitarbeiter unterbricht den Auftrag zum Zeitpunkt t3, daher ist pausedDate t3. assignedDate bleibt t1, und inProgressDate bleibt t2.
    • Der Außendienstmitarbeiter fährt zum Zeitpunkt t4 mit dem Auftrag fort, daher ist inProgressDate t4. assignedDate bleibt t1, und pausedDate bleibt t3.

Verwendung von ArcGIS API for Python (empfohlen)

Verwenden Sie ArcGIS API for Python und das zugehörige Workforce-Modul für die Automatisierung und Skripterstellung für Workforce. Mit dem Workforce-Modul erstellte Aufträge können von Workforce interpretiert werden, da sie demselben Schema folgen. Beispiele und Empfehlungen finden Sie in den Beispielskripten auf GitHub. Die Skripte zeigen, wie mit Python zahlreiche Aufgaben ausgeführt werden können, unter anderem das programmgesteuerte Laden von Aufträgen aus externen Datenquellen, das Importieren und Verwalten von Außendienstmitarbeitern und das Entfernen abgeschlossener Aufträge. Typische Operationen finden Sie auch in diesem Jupyter Notebook.

Das Workforce-Modul wurde mit ArcGIS API for Python 1.4.1 eingeführt. Python konnte zwar schon vor der Einführung des Moduls verwendet werden, doch die Automatisierung von Workforce-Aufgaben gestaltet sich damit einfacher. Das Workforce-Modul beinhaltet das Workforce-Projektschema und die zugehörigen Regeln. Mit Sicherheitsmechanismen wird zudem die Integrität Ihres Workforce-Projekts geschützt.

Hinweis:

Haben Sie einen Kommentar oder Feedback zu einem der Skripte? Oder eine Idee für ein weiteres nützliches Skript? Teilen Sie sie auf GitHub.

Verwenden der REST-API für Feature-Layer

Vorsicht:

Es wird empfohlen, ArcGIS API for Python zu verwenden. Darin schützen verschiedene Sicherheitsmechanismen die Integrität des Workforce-Projekts.

Sie können für die Automatisierung von Workforce auch die REST-API für Feature-Layer verwenden. Bei Verwendung der REST-API müssen Sie Aufträge mit dem Feature-Objekt-Format erstellen und aktualisieren. In den folgenden Abschnitten finden Sie ausführliche Informationen zum Erstellen und Aktualisieren sowie zum Zuweisen von Aufträgen durch die REST-API.

Erstellen eines Auftrags durch die REST-API

Workforce arbeitet mit dem Inhalt des Assignments-Feature-Layers unabhängig davon, wie die Datensätze erstellt wurden. Es ist nicht erforderlich, Aufträge über die Workforce-Web-App zu erstellen. Wenn ein Datensatz im Assignments-Feature-Layer ordnungsgemäß mithilfe der REST-API erstellt wird, wird er von Workforce in der Web- und in der mobilen App als gültiger Auftrag erkannt.

Verwenden Sie beim Erstellen von Aufträgen mit der REST-API den Befehl Add features. Es gibt einige Felder, für die Werte angegeben werden müssen, es gibt einige Felder, für die Werte angegeben werden können, wenn der Auftrag es erfordert, und es gibt andere Felder, für die keine Werte angegeben werden sollten.

Für die folgenden Felder müssen Werte angegeben werden:

FeldDefinitionAnzugebender Wert

SHAPE

Die Punktposition des Auftrags

Ein XY-Koordinatenpaar

status

Der Status des Auftrags aus den Werten der Domäne Assign_Status

  • 0 (Nicht zugewiesen), um nicht zugewiesene Aufträge zu erstellen
  • 1 (Zugewiesen), falls Sie den Auftrag im Rahmen ihrer Erstellung zuweisen
Vorsicht:

Wenn Sie den Auftrag zuweisen, müssen Sie auch die Werte für die Felder workerId und assignedDate angeben, die in einer späteren Tabelle beschrieben werden.

assignmentType

Der Auftragstyp aus den Werten in der Domäne Assign_Type

Ein beliebiger gültiger Wert aus der Domäne Assign_Type

location

Textbeschreibung der Punktposition des Auftrags

Eine Adresse, ein XY-Koordinatenpaar oder beschreibender Text

assignmentRead

Gibt an, ob der Außendienstmitarbeiter den Auftrag aufgerufen hat

0, da der Auftrag nicht gelesen wurde

dispatcherId

Die ID des Dispatchers, der den Auftrag erstellt (dispatchers.OBJECTID aus dem Dispatchers-Layer)

Möglicherweise die Dispatcher-ID des Benutzers der ArcGIS-Organisation als der Sie verbunden sind; kann jedoch auch die ID eines bestimmten mit dem Projekt verknüpften Dispatchers sein

Sie können auch Werte für die folgenden optionalen Felder angeben:

Optionales FeldDefinitionAnzugebender Wert

description

Den Auftrag betreffende Informationen für den Außendienstmitarbeiter

Text für den Außendienstmitarbeiter. Leerzeichen werden mit dem pre-line-Wert verarbeitet.

priority

Die Priorität des Auftrags

Ein gültiger Wert aus der Domäne "Priority"

workOrderId

Ein Fremdschlüssel, der auf einen Arbeitsauftrag aus einem externen oder Drittanbietersystem verweist

Ein Wert aus einem externen System

dueDate

Datum und Uhrzeit, zu dem/der der Auftrag abgeschlossen sein muss

Ein gültiger Datums- und Uhrzeitwert, der als UTC-Zeit in Sekunden ab der letzten Epoche angegeben wird

Hinweis:

Um ein Fälligkeitsdatum ohne Uhrzeit anzugeben, legen Sie das Datum fest, und verwenden Sie 23:59:59 als Uhrzeit.

Wenn Sie den Arbeitsauftrag im Rahmen seiner Erstellung zuweisen, verwenden Sie den Status 1 (wie oben erwähnt), und geben Sie außerdem die folgenden Felder an:

FeldDefinitionAnzugebender Wert

workerId

Die ID des Außendienstmitarbeiters, dem der Auftrag zugewiesen wird (workers.OBJECTID aus dem Workers-Layer)

OBJECTID des Außendienstmitarbeiters, den Sie zuweisen

assignedDate

Datum und Uhrzeit der Zuweisung des Auftrags

Der aktuelle Datums- und Uhrzeitwert, der als UTC-Zeit in Sekunden ab der letzten Epoche angegeben wird

Die anderen Felder im Assignments-Layer werden durch die ArcGIS Plattform verwaltet, darunter die Felder, die als Teil der ArcGIS- oder Editor-Tracking-Felder im Schemadiagramm gekennzeichnet sind. Sie sollten deren Werte weder angeben noch ändern.

Zuweisen von Aufträgen durch die REST-API

Im vorherigen Abschnitt haben Sie erfahren, wie ein zugewiesener Auftrag erstellt wird. Hier erfahren Sie, wie ein vorhandener Auftrag zugewiesen wird. Verwenden Sie den Befehl Update Features der REST-API, indem Sie das Array der zu aktualisierenden Features übergeben. Sie müssen für jedes Feature diese drei Felder angeben, um einen Auftrag zuzuweisen bzw. neu zuzuweisen:

FeldDefinitionAnzugebender Wert

status

Der Status des Auftrags aus den Werten der Domäne Assign_Status

  • 1 (Zugewiesen)

workerId

Die ID des Außendienstmitarbeiters, dem der Auftrag zugewiesen wird (workers.OBJECTID aus dem Workers-Layer)

OBJECTID des Außendienstmitarbeiters, den Sie zuweisen

assignedDate

Datum und Uhrzeit der Zuweisung des Auftrags

Der aktuelle Datums- und Uhrzeitwert, der als UTC-Zeit in Sekunden ab der letzten Epoche angegeben wird

dispatcherId

Die ID des Dispatchers, der den Auftrag zuweist, wenn sich dieser von dem Dispatcher unterscheidet, der ihn erstellt hat (dispatchers.OBJECTID aus dem Dispatchers-Layer)

Möglicherweise die Dispatcher-ID des Benutzers der ArcGIS-Organisation als der Sie verbunden sind; kann jedoch auch die ID eines bestimmten mit dem Projekt verknüpften Dispatchers sein