Automatyzacja i tworzenie skryptów w aplikacji ArcGIS Workforce

Uwaga:

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 ArcGIS REST API.

Notatka:

Klasyczne projekty mają inny schemat, niż ten opisany poniżej. Informacje o automatyzacji i tworzeniu skryptów w klasycznych projektach aplikacji Workforce można znaleźć w temacie Automatyzacja i tworzenie skryptów w aplikacji Workforce (klasycznej). Aby przeprowadzić migrację klasycznych projektów do nowego schematu, zapoznaj się z tematem Migracja klasycznych projektów.

Więcej informacji można znaleźć w temacie Czym jest klasyczny projekt.

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.

Aplikacja internetowa Workforce umożliwia dyspozytorowi szybkie i efektywne tworzenie nowych 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 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 ArcGIS REST API dla warstw obiektowych.

Opis schematu

Projekt aplikacji Workforce składa się z dwóch warstw obiektowych, trzech tabel i trzech domen wartości kodowanych w jednej usłudze obiektowej. Usługa obiektowa Workforce jest automatycznie generowana w czasie tworzenia projektu. Wraz z nią tworzony jest folder, grupa i mapy internetowe dyspozytorów i pracowników. Usługa obiektowa ma relację elementu z dwiema mapami internetowymi i wstępnie zdefiniowany schemat, który został pokazany poniżej.

Diagram schematu aplikacji Workforce

Notatka:

Pewne nazwy pól są inne w oprogramowaniu ArcGIS Enterprise. Zamiast OBJECTID, GlobalID, CreationDate, Creator, EditDate i Editor są to odpowiednio objectid, globalid, created_date, created_user, last_edited_date i last_edited_user.

Usługa obiektowa Workforce

Usługa obiektowa aplikacji Workforce zawiera następujące warstwy i tabele:

  • Warstwa pracowników
    • 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 GlobalID i Assignments.workerid. Użycie wartości pola GlobalID 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.
  • Warstwa zleceń
    • 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.GlobalID.
      • Assignments.dispatcherid z polem Dispatchers.GlobalID.
      • 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.
      • Istnieje relacja między kluczem podstawowym i kluczem obcym (PK-FK) między polami GlobalID i Assignment.assignmenttype. Użycie wartości pola GlobalID z warstwy zleceń jako wartości pola Assignments.assignmenttype powoduje powiązanie zlecenia z typem zlecenia.
    • 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.
    Uwaga:

    Jeśli wartością geometrii zlecenia jest null, nie jest ono wyświetlane w aplikacji Workforce.

  • Tabela dyspozytorów
    • Tabela zawierająca rekordy poszczególnych dyspozytorów 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 GlobalID i Assignments.dispatcherid. Użycie wartości pola GlobalID z tabeli dyspozytorów jako wartości pola Assignments.dispatcherid powoduje powiązanie dyspozytora z wszystkimi przypisanymi przez niego zleceniami.
  • Tabela typów zleceń
    • Tabela zawierająca rekordy poszczególnych typów zleceń w projekcie.
    • Ta tabela jest pusta po utworzeniu projektu. Zawiera ona wartości po dodaniu typów zleceń podczas konfigurowania projektu.
    • Znajdują się w niej opisy typów zleceń podane przez właściciela projektu podczas dodawania typów zleceń.
    • Istnieje relacja między kluczem podstawowym i kluczem obcym (PK-FK) między polami GlobalID i Assignments.assignmenttype. Użycie wartości pola GlobalID z tabeli typów zleceń tworzy powiązanie między typem zlecenia i zleceniami.
  • Tabela integracji zleceń
    • Tabela zawierająca rekordy poszczególnych integracji zleceń w projekcie.
    • Po utworzeniu ta tabela zawiera rekord integracji z aplikacją ArcGIS Navigator.
    • Oprócz standardowych atrybutów zdefiniowanych przez system tabela integracji zleceń zawiera następujące atrybuty zdefiniowane przez użytkownika:
      • app— identyfikator zintegrowanej aplikacji, który ułatwia znajdowanie konfiguracji integracji niezbędnych do zbudowania środowiska konfiguracyjnego w aplikacji internetowej — na przykład arcgis-collector lub https://collector.arcgis.app.
      • assignmenttype— identyfikator GlobalID typu zlecenia, jeśli integracja ma być widoczna tylko dla pewnych typów zleceń. Wartość null wskazuje, że integracja obsługuje wszystkie typy zleceń w projekcie.
      • prompt— monit wyświetlany w mobilnej aplikacji klienckiej — na przykład Przejdź do zlecenia.
      • urltemplate— szablon adresu URL, który jest używany do wywoływania zintegrowanej aplikacji.
    • Aby znaleźć integracje stosowane w przypadku danego zlecenia, użyj jednej z następujących klauzul where: assignmenttype = null lub assignmenttype = '<assignment-type-id>'. Wyszukują one wszystkie integracje na poziomie projektu i wszystkie integracje na poziomie typu dla aktualnego typu zlecenia.
    • Aby znaleźć integracje właściwe dla projektu, utwórz zapytanie według aplikacji, używając klauzuli where, na przykład: appid = 'arcgis-collector'.

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

  • Assign_Status— zawiera siedem poprawnych wartości określających status zlecenia. Te wartości wynoszące od 0 do 20 są zarezerwowane — będą w przyszłości stosowane w aplikacji Workforce. Klienci, którzy chcą zapisywać własne wartości w tym polu, powinni wybierać wartości spoza tego zakresu.
  • Priority— zawiera cztery poprawne wartości określające priorytet zlecenia.
  • Worker_Status— zawiera trzy poprawne wartości określające status pracownika mobilnego.

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

Relacja elementu mapy internetowej

Relacja elementu między usługą obiektową aplikacji Workforce i mapami internetowymi pracowników oraz dyspozytorów ma następującą definicję:

  • Typ relacji — WorkforceMap2FeatureService
  • Typ źródłowy — mapa internetowa
  • Typ docelowy — usługa obiektowa
  • Reguły
    • mustOwnAllItems — właściciel projektu ustanawia relację — musi być także właścicielem powiązanej mapy.

Gdy mapa ma relację elementu z usługą obiektową aplikacji Workforce, do jej metadanych są dodawane następujące informacje:

  • title — tytuł projektu.
  • snippet — krótki opis projektu.
  • thumbnail — miniatura projektu.
  • typeKeywords — element Workforce Worker jest dodawany do mapy Pracownik, a element Workforce Dispatcher jest dodawany do mapy Dyspozytor.

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 określające ostatni moment, gdy zlecenie miało dany status. Pola daty i czasu są wypełniane, gdy dany status jest po raz pierwszy używany w przypadku danego zlecenia. 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 usunięty.

Jeśli pole inprogressdate, declineddate lub pauseddate zostało wypełnione w wyniku zmiany przypisania zlecenia, jest w nim ustawiana wartość null.

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. Wartością pola declineddate jest teraz null.
  • 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.
  • Ponowne przypisywanie wstrzymanej 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.
    • Zlecenie przypisano innemu pracownikowi mobilnemu o godzinie t4, tak więc pole assigneddate ma wartość t4. Wartości pól inprogressDate i pauseddate wynoszą obecnie null.

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 zachowują ten sam schemat. Przykłady i najważniejsze wskazówki są zawarte w przykładowych skryptach dostępnych w repozytorium skryptów aplikacji Workforce w witrynie 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ć notatnika Jupyter dotyczącego zarządzania projektami aplikacji ArcGIS Workforce, aby zapoznać się z typowymi operacjami. Aby rozpocząć pracę z modułem Workforce, należy najpierw zainstalować i skonfigurować interfejs ArcGIS API for Python.

Notatka:

Aby zautomatyzować projekty Workforce, należy użyć interfejsu ArcGIS API for Python 1.8.3 lub nowszego.

Wprowadzenie do modułu Workforce

Moduł Workforce umożliwia tworzenie klasycznych projektów, jak również projektów gotowych do użytku w trybie offline. Twórz projekty w module Workforce, wykonując poniższe czynności:

  1. Zaloguj się w usłudze ArcGIS Online, uruchamiając następujące polecenie w skrypcie lub konsoli języka Python:

    gis = arcgis.gis.GIS("https://arcgis.com", "<username>", "<password>")

  2. Utwórz klasyczny projekt lub projekt gotowy do użytku w trybie offline, uruchamiając jedno z następujących poleceń:

    Tworzenie klasycznego projektu

    version1_project = arcgis.apps.workforce.create_project("<project-title>", "<project-summary>", major_version=1)

    Tworzenie projektu gotowego do użytku w trybie offline

    version2_project = arcgis.apps.workforce.create_project("<project-title>", "<project-summary>", major_version=2)

Aby dowiedzieć się, jak używać modułu Workforce do modyfikowania zleceń, typów zleceń, pracowników, dyspozytorów i integracji aplikacji, zapoznaj się z dokumentacją interfejsu ArcGIS API for Python dla modułu Workforce.

Użycie interfejsu ArcGIS REST API dla warstw obiektowych

Uwaga:

Zaleca się używanie interfejsu ArcGIS API for Python. Zawiera on wiele zabezpieczeń chroniących integralność projektu aplikacji Workforce.

Używając interfejsu ArcGIS REST API dla warstw obiektowych, można automatyzować aplikację Workforce. Podczas korzystania z interfejsu ArcGIS REST API należy używać formatu obiekt Feature do tworzenia i aktualizowania zleceń. Zapoznaj się z poniższymi sekcjami, aby uzyskać szczegółowe informacje o tworzeniu, aktualizowaniu i przypisywaniu zleceń przy użyciu interfejsu ArcGIS REST API.

Tworzenie zlecenia przy użyciu interfejsu ArcGIS 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 ArcGIS REST API, aplikacja Workforce rozpoznaje go jako prawidłowe zlecenie zarówno w aplikacjach internetowych, jak i mobilnych.

Podczas tworzenia zleceń za pomocą interfejsu ArcGIS REST APInależy używać polecenia Dodawanie obiektów. Niektóra pola wymagają podania wartości, w niektórych polach można podać wartości, jeśli wymagają tego zlecenia, a w innych polach nie można podawać wartości.

Pola opisane w poniższej tabeli wymagają podania wartości:

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

SHAPE

Lokalizacja punktu zlecenia.

Para współrzędnych x,y.

status

Status zlecenia uzyskany na podstawie wartości podanych w domenie assign_status.

  • 0 (nieprzypisane) — utwórz nieprzypisaną pracę.
  • 1 (przypisane) — przypisz pracę w trakcie jej tworzenia.
Uwaga:

Aby przypisać pracę, musisz także podać wartości pól workerid i assigneddate, które zostały opisane poniżej.

assignmenttype

Typ zlecenia uzyskany na podstawie wartości identyfikatora GlobalID w tabeli typów zleceń.

Prawidłowa wartość identyfikatora GlobalID z tabeli typów zleceń.

location

Tekstowy opis lokalizacji punktu zlecenia.

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

dispatcherid

Identyfikator dyspozytora tworzącego zlecenie uzyskany na podstawie wartości GlobalID w tabeli dyspozytorów.

Prawidłowa wartość identyfikatora GlobalID określonego dyspozytora powiązanego z projektem.

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

PoleDefinicjaWartość, 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 podać wartości w następujących polach:

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

workerid

Identyfikator pracownika mobilnego, do którego przypisywane jest zlecenie, uzyskany na podstawie wartości GlobalID z warstwy pracowników.

Poprawna wartość GlobalID pracownika mobilnego, do którego jest przypisywane zlecenie.

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ć tych wartości.

Przypisywanie zleceń za pomocą interfejsu ArcGIS REST API

W poprzedniej sekcji przedstawiono sposób tworzenia zlecenia przypisywanego. Teraz nauczysz się, jak przypisać istniejące zlecenie. Należy użyć polecenia Aktualizuj obiekty interfejsu ArcGIS REST API, 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 uzyskany na podstawie wartości podanych w domenie Assign_Status.

1 (Przypisane)

workerid

Identyfikator pracownika mobilnego, do którego przypisywane jest zlecenie, uzyskany na podstawie wartości GlobalID z warstwy pracowników.

Wartość GlobalID pracownika mobilnego, do którego jest przypisywane zlecenie.

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 uzyskany na podstawie wartości GlobalID w tabeli dyspozytorów.

Prawidłowa wartość identyfikatora GlobalID określonego dyspozytora powiązanego z projektem.