Automatyzacja pracy w aplikacji Workforce i używanie w niej skryptów

Uwaga:

W tym temacie nauczysz się, jak automatyzować zadania i tworzyć skrypty w klasycznych projektach aplikacji Workforce, które są wyświetlane w aplikacji Workforce for ArcGIS. Aby dowiedzieć się, jak automatyzować zadania i tworzyć skrypty w projektach, których można używać w trybie offline i które są wyświetlane w aplikacji ArcGIS Workforce, zapoznaj się z tematem Automatyzowanie aplikacji Workforce.

To jest temat zaawansowany przeznaczony dla administratorów i właścicieli projektów pracujących z warstwami obiektowymi bezpośrednio, np. za pomocą interfejsu ArcGIS API for Python lub REST API.

Aplikacja ArcGIS Workforce umożliwia planowanie i wykonywanie procedur wykonywania zadań oraz zarządzanie nimi dla wszystkich typów prac terenowych. Integruje się ona z Twoją instytucją ArcGIS za pomocą aplikacji internetowej służącej do tworzenia i przypisywania prac, a także za pomocą aplikacji mobilnej umożliwiającej pracownikom mobilnym zarządzanie swoimi zleceniami. Gdy właściciel projektu utworzy i skonfiguruje projekt aplikacji Workforce, dyspozytorzy używają aplikacji internetowej Workforce do tworzenia i przypisywania prac, a pracownicy mobilni przeglądają i realizują przypisane prace przy użyciu aplikacji Workforce i innych aplikacji platformy ArcGIS na swoich urządzeniach przenośnych. Całą procedurą wykonywania zadań steruje projekt aplikacji Workforce, który jest zbiorem warstw obiektowych i map.

Aplikację internetową Workforce zaprojektowano w taki sposób, aby umożliwiała dyspozytorowi szybkie i efektywne tworzenie zleceń pracy, a także zarządzanie istniejącymi zleceniami. Jednak mogą istnieć takie zadania związane ze zleceniami, których nie można wykonać za pomocą aplikacji internetowej. Na przykład niektóre z najczęściej występujących żądań związanych z aplikacją Workforce dotyczą integracji z innymi systemami, takimi jak systemy zarządzania zamówieniami na pracę, zasobami lub konserwacjami, a także obsługi cyklicznych i powtarzalnych zleceń.

Użycie automatyzacji i obsługi skryptów w aplikacji Workforce obecnie pozwala na skorzystanie z tych możliwości. Zlecenia można tworzyć nie tylko za pomocą tej aplikacji internetowej. Aplikacja Workforce działa z zawartością warstwy obiektowej Zlecenia bez względu na sposób utworzenia rekordów. Praca może pochodzić z innych systemów używanych w instytucji, takich jak system zarządzania zasobami lub konserwacjami, albo system 311. Aplikację Workforce można zintegrować ze źródłami zewnętrznymi na potrzeby tworzenia i aktualizowania zleceń. W warstwie Zlecenia dostępne jest pole workOrderId, którego można używać jako klucza obcego przechowującego unikalny identyfikator odwołujący się do systemu zewnętrznego. Pole workOrderId jest dostępne w szczegółach zleceń jako ID — dyspozytorzy mogą udostępniać informacje, a pracownicy mobilni mogą je przeglądać.

Przed przystąpieniem do automatyzacji i obsługi skryptów należy dobrze zaznajomić się ze schematem projektów aplikacji Workforce i sposobem działania pól daty i czasu statusu zlecenia. Chociaż zalecane jest korzystanie z interfejsu ArcGIS API for Python, automatyzacji pracy w aplikacji Workforce można także dokonać za pomocą interfejsu REST API dla warstw obiektowych. Aplikacja Workforce może interpretować zlecenia, jeśli są one tworzone przy użyciu tego samego schematu.

Przegląd schematu

Projekt aplikacji Workforce składa się z czterech warstw obiektowych i czterech domen wartości kodowanych z predefiniowanym schematem. Nazwa każdej warstwy obiektowej jest połączeniem nazwy opisującej przeznaczenie warstwy obiektowej i dołączanego do niej identyfikatora GUID elementu projektu aplikacji Workforce. Na przykład warstwa Workers (Pracownicy) powiązana z projektem o identyfikatorze GUID 5dd018fcd88c4d33814cf3da9c44061e przyjmie nazwę workers_5dd018fcd88c4d33814cf3da9c44061e. Takie rozwiązanie gwarantuje unikalność wszystkich warstw obiektowych.

Diagram schematu aplikacji Workforce
Notatka:

Pola śledzenia edytora są inne w oprogramowaniu ArcGIS Enterprise. Zamiast CreationDate, Creator, EditDate i Editor, są to odpowiednio created_date, created_user, last_edited_date i last_edited_user.

Dostępne są cztery następujące warstwy obiektowe:

  1. Pracownicy
    • Warstwa obiektów punktowych, która zawiera rekord dla każdego pracownika mobilnego dołączonego do projektu.
    • Zawiera informacje o pracowniku mobilnym, w tym numer kontaktowy i stanowisko.
    • Nazwa użytkownika pracownika mobilnego z instytucji ArcGIS jest zapisywana w polu userId.
    • W tej warstwie wykonywane jest śledzenie danych dotyczących tego, kto utworzył i ostatnio zaktualizował danego pracownika mobilnego.
    • Istnieje relacja między kluczem podstawowym i kluczem obcym (PK-FK) między polami OBJECTID i Assignments.workerId. Użycie wartości pola OBJECTID z warstwy Workers (Pracownicy) jako wartości pola Assignments.workerId powoduje powiązanie pracownika mobilnego ze wszystkimi jego zleceniami.
    • Ta warstwa ma następujące powiązania z domeną wartości kodowanych:
      • Pole status jest powiązane z domeną wartości kodowanych Worker_Status na potrzeby śledzenia statusu pracownika mobilnego.
  2. Przypisania
    • Warstwa obiektów punktowych, która zawiera rekord dla każdego zlecenia.
    • Zawiera informacje o zleceniu, w tym jego status, lokalizację i opis.
    • W tej warstwie wykonywane jest śledzenie danych dotyczących tego, kto utworzył i ostatnio zaktualizował dane zlecenie.
    • W warstwie obiektowej włączone są załączniki.
    • Warstwa ta zawiera klucze obce w przypadku niektórych pól, wiążąc wartości z innej warstwy z tą warstwą:
      • Assignments.workerId z polem Workers.OBJECTID.
      • Assignments.dispatcherId z polem Dispatchers.OBJECTID.
      • Assignments.workOrderId można użyć jako klucza obcego do systemu zewnętrznego, takiego jak system zarządzania zasobami lub konserwacjami, przez udostępnienie wartości z tego innego systemu.
    • Ta warstwa ma następujące powiązania z domeną wartości kodowanych:
      • Pole status jest powiązane z domeną wartości kodowanych Assign_Status na potrzeby śledzenia statusu zlecenia.
      • Pole priority jest powiązane z domeną wartości kodowanych Priority na potrzeby zarządzania priorytetami zleceń pracy.
      • Pole assignmentType jest powiązane z domeną wartości kodowanych Assign_Type na potrzeby przechowywania typów zleceń w ramach projektu.
  3. Dyspozytorzy
    • Warstwa obiektów punktowych, która zawiera rekord dla każdego dyspozytora w projekcie.
    • Zawiera informacje o dyspozytorze, w tym jego nazwę i numer kontaktowy.
    • Nazwa użytkownika dyspozytora z instytucji ArcGIS jest zapisywana w polu userId.
    • W tej warstwie wykonywane jest śledzenie danych dotyczących tego, kto utworzył i ostatnio zaktualizował danego dyspozytora.
    • Istnieje relacja między kluczem podstawowym i kluczem obcym (PK-FK) między polami OBJECTID i Assignments.dispatcherId. Użycie wartości pola OBJECTID z warstwy dyspozytorów jako wartości pola Assignments.dispatcherId powoduje powiązanie dyspozytora z wszystkimi przypisanymi przez niego zleceniami.
  4. Śledzenie lokalizacji
    • Warstwa obiektów punktowych zawierająca rekord dla każdej zarejestrowanej lokalizacji punktu, gdy włączone jest śledzenie lokalizacji.
    • W tej warstwie wykonywane jest śledzenie, kto utworzył i ostatnio zaktualizował dane śledzenie lokalizacji.

Dostępne są cztery następujące domeny wartości kodowanych:

  1. Assign_Status— zawiera sześć poprawnych wartości określających status zlecenia.
  2. Priority— zawiera cztery poprawne wartości określające priorytet zlecenia.
  3. Assign_Type— zawiera typy zleceń dla projektu. Ta domena wartości kodowanych jest pusta po utworzeniu projektu. Zawiera ona wartości po dodaniu typów zleceń podczas konfigurowania projektu.
  4. Worker_Status— zawiera trzy poprawne wartości określające status pracownika mobilnego.

Wartości domen wartości kodowanych zawiera diagram schematu aplikacji Workforce.

Pola daty i czasu statusu zlecenia

Z każdym statusem zlecenia zdefiniowanym w domenie Assign_Status jest powiązane pole daty i czasu w warstwie obiektowej Zlecenia. Pola te zawierają datę i czas ostatniego razu, gdy zlecenie miało dany stan. Gdy dany status jest po raz pierwszy używany dla konkretnego zlecenia, powiązane pole daty i czasu jest zapełniane pierwszy raz. Gdy zlecenie ponownie będzie miało taki sam status, pole daty i czasu zostanie zaktualizowane z użyciem nowej daty i czasu. Na przykład przy pierwszym przypisaniu zlecenia, datą przypisania jest bieżąca data i czas. Jeśli zostanie ono ponownie przypisane trzy godziny późnej, pole assignedDate zostanie zaktualizowane do nowej wartości czasu, a oryginalny czas przypisania zostanie utracony.

Status zleceniaOdpowiednie pole daty i czasu

Nieprzypisane

CreationDate

Przypisane

assignedDate

W toku

inProgressDate

Zakończone

completedDate

Odrzucone

declinedDate

Wstrzymano

pausedDate

Notatka:

Ze statusem Anulowane nie jest powiązane pole daty i czasu. Do określenia daty i czasu anulowania zlecenia można użyć pola EditDate śledzenia edycji, o ile od momentu anulowania nie wprowadzono innych zmian.

Aby lepiej zrozumieć wartości i momenty, w których są ustawiane, rozważmy następujące scenariusze:

  • Ponowne przypisanie wcześniej przypisanej pracy
    • Zlecenie przypisano o godzinie t1, tak więc pole assignedDate ma wartość t1.
    • Później, o godzinie t2, zlecenie to przypisano ponownie innemu pracownikowi mobilnemu, tak więc pole assignedDate ma wartość t2.
  • Ponowne przypisanie pracy odrzuconej
    • Zlecenie przypisano o godzinie t1, tak więc pole assignedDate ma wartość t1.
    • Pracownik mobilny odrzucił zlecenie o godzinie t2, tak więc pole declinedDate ma wartość t2. W polu assignedDate pozostaje wartość t1.
    • Zlecenie przypisano innemu pracownikowi mobilnemu o godzinie t3, tak więc pole assignedDate ma wartość t3.
  • Wstrzymywanie i wznawianie pracy
    • Zlecenie przypisano o godzinie t1, tak więc pole assignedDate ma wartość t1.
    • Pracownik mobilny rozpoczął zlecenie o godzinie t2, tak więc pole inProgressDate ma wartość t2. W polu assignedDate pozostaje wartość t1.
    • Pracownik mobilny wstrzymał zlecenie o godzinie t3, tak więc pole pausedDate ma wartość t3. W polu assignedDate pozostaje wartość t1, a w polu inProgressDate pozostaje wartość t2.
    • Pracownik mobilny wznowił zlecenie o godzinie t4, tak więc pole inProgressDate ma wartość t4. W polu assignedDate pozostaje wartość t1, a w polu pausedDate pozostaje wartość t3.

Korzystanie z interfejsu ArcGIS API for Python (zalecane)

Użyj interfejsu ArcGIS API for Python i jego modułu Workforce, aby automatyzować pracę w aplikacji Workforce i używać w niej skryptów. Zlecenia utworzone za pomocą modułu Workforce mogą być interpretowane przez aplikację Workforce, jeśli zachowają ten sam schemat. Przykłady i najważniejsze wskazówki są zawarte w przykładowych skryptach dostępnych w serwisie GitHub. Skrypty ilustrują sposób wykorzystania języka Python do wykonywania wielu zadań, takich jak programowe wczytywanie zleceń z zewnętrznych źródeł danych, importowanie pracowników i zarządzanie nimi, usuwanie ukończonych zleceń itp. Można też użyć tej przeglądarki Jupyter notebook, aby wyświetlić niektóre typowe operacje.

Moduł Workforce został wprowadzony z interfejsem ArcGIS API for Python w wersji 1.4.1. Przed wprowadzeniem tego modułu była już możliwość korzystania z języka Python, jednak jego wprowadzenie uprościło automatyzację zadań wykonywanych w programie Workforce. Moduł Workforce zawiera schemat projektu aplikacji Workforce i jej reguły. Zawiera on także zabezpieczenia chroniące integralność projektu aplikacji Workforce.

Notatka:

Czy masz komentarze lub uwagi dotyczące któregoś ze skryptów? Może masz pomysł na wprowadzenie nowego skryptu? Udostępnij go w serwisie GitHub.

Użycie interfejsu REST API do warstw obiektowych

Uwaga:

Zaleca się używanie interfejsu ArcGIS API for Python. Zawiera on w sobie liczne zabezpieczenia chroniące integralność projektu aplikacji Workforce.

Można automatyzować pracę w aplikacji Workforce za pomocą interfejsu REST API dla warstw obiektowych. Podczas korzystania z interfejsu REST API należy używać formatu obiekt Feature do tworzenia i aktualizowania zleceń. Szczegółowe informacje na temat tworzenia i aktualizowania, a także przypisywania zleceń za pośrednictwem interfejsu REST API można znaleźć w dalszych sekcjach.

Tworzenie zlecenia za pomocą interfejsu REST API

Aplikacja Workforce działa z zawartością warstwy obiektowej Zlecenia bez względu na sposób użyty do utworzenia rekordów. Nie jest wymagane tworzenie zleceń za pomocą aplikacji internetowej Workforce. Jeśli rekord został prawidłowo utworzony w warstwie obiektowej zleceń przy użyciu interfejsu REST API, aplikacja Workforce rozpoznaje go jako prawidłowe zlecenie zarówno w aplikacjach internetowych, jak i mobilnych.

Podczas tworzenia zleceń za pośrednictwem interfejsu REST API należy używać polecenia Dodaj obiekty. W przypadku niektórych pól podanie wartości jest wymagane. W przypadku innych pól wartości można podać, jeśli są wymagane przez zlecenie, a w przypadku pozostałych pól nie należy podawać wartości.

Wartości należy podać dla następujących pól:

PoleDefinicjaWartość, którą należy podać

SHAPE

Lokalizacja punktu zlecenia

Para współrzędnych x,y

status

Status zlecenia na podstawie wartości podanych w domenie Assign_Status.

  • 0 (nieprzypisane), aby utworzyć pracę nieprzypisaną
  • 1 (przypisane), jeśli zamierzasz przypisać pracę w trakcie jej tworzenia
Uwaga:

Jeśli zamierzasz przypisać pracę, musisz także podać wartości pól workerId i assignedDate opisanych w dalszej części tabeli.

assignmentType

Typ zlecenia należący do wartości określonych w domenie Assign_Type

Dowolna poprawna wartość z domeny Assign_Type

location

Tekstowy opis lokalizacji punktu zlecenia

Adres, para współrzędnych x,y lub dowolny opis tekstowy

assignmentRead

Określa, czy pracownik mobilny zapoznał się ze zleceniem

0, ponieważ zlecenie nie zostało przeczytane

dispatcherId

Identyfikator dyspozytora tworzącego zlecenie (dispatchers.OBJECTID z warstwy dyspozytorów)

Może to być identyfikator dyspozytora dla użytkownika instytucji ArcGIS użyty do nawiązania połączenia lub identyfikator konkretnego dyspozytora powiązanego z projektem

Można również dołączyć wartości następujących pól opcjonalnych:

Pole opcjonalneDefinicjaWartość, którą należy podać

description

Informacja o zleceniu przeznaczona dla pracownika mobilnego

Tekst przeznaczony dla pracownika mobilnego. Białe znaki są obsługiwane przy użyciu wartości pre-line.

priority

Priorytet zlecenia

Poprawna wartość z domeny Priority.

workOrderId

Klucz obcy odwołujący się do zamówienia na pracę z systemu zewnętrznego lub systemu innej firmy

Wartość z systemu zewnętrznego.

dueDate

Data i czas, do kiedy należy zrealizować zlecenie

Poprawne wartości daty i czasu określone dla czasu UTC i wyrażone w sekundach z ostatniej epoki.

Notatka:

Aby określić datę ukończenia bez podawania czasu, należy podać datę i użyć wartości 11:59:59 PM jako czasu.

Aby przypisać pracę podczas jej tworzenia, należy użyć statusu 1 (jak wspomniano powyżej), a ponadto określić następujące pola:

PoleDefinicjaWartość, którą należy podać

workerId

Identyfikator pracownika mobilnego, do którego przypisywane jest zlecenie (workers.OBJECTID z warstwy pracowników)

OBJECTID pracownika mobilnego, do którego wykonywane jest przypisanie

assignedDate

Data i czas przypisania zlecenia

Data i czas określone w czasie UTC i wyrażone w sekundach z ostatniej epoki

Pozostałymi polami warstwy zleceń zarządza platforma ArcGIS. Dotyczy to między innymi pól, które na diagramie schematu są oznaczone jako część platformy ArcGIS lub pól śledzenia edycji. Nie należy podawać ani modyfikować ich wartości.

Przypisywanie zleceń za pomocą interfejsu REST API

W poprzedniej sekcji przedstawiono sposób tworzenia zlecenia przypisywanego. W tym miejscu przedstawiono sposób przypisywania zlecenia, które już istnieje. Należy użyć polecenia Aktualizuj obiekty, przekazując listę obiektów do zaktualizowania. Dla każdego obiektu należy podać następujące trzy pola, aby przypisać lub ponownie przypisać zlecenie:

PoleDefinicjaWartość, którą należy podać

status

Status zlecenia na podstawie wartości podanych w domenie Assign_Status.

  • 1 (Przypisane)

workerId

Identyfikator pracownika mobilnego, do którego przypisywane jest zlecenie (workers.OBJECTID z warstwy pracowników)

OBJECTID pracownika mobilnego, do którego wykonywane jest przypisanie

assignedDate

Data i czas przypisania zlecenia

Data i czas określone w czasie UTC i wyrażone w sekundach z ostatniej epoki

dispatcherId

Identyfikator dyspozytora przypisującego zlecenie, jeśli jest inny niż dyspozytor, który je utworzył (dispatchers.OBJECTID z warstwy dyspozytorów)

Może to być identyfikator dyspozytora dla użytkownika instytucji ArcGIS użyty do nawiązania połączenia lub identyfikator konkretnego dyspozytora powiązanego z projektem