Automazione e scripting con ArcGIS Workforce

Attenzione:

Questo è un argomento avanzato rivolto ad amministratori e proprietari di progetti che lavorano con i feature layer direttamente, tramite ArcGIS API for Python o ArcGIS REST API.ArcGIS REST API.

Nota:

I progetti Classic hanno uno schema diverso da quello descritto di seguito. Per informazioni su come automatizzare e creare script per i progetti Classic Workforce, consultare Automatizzare ed eseguire lo scriptWorkforce (Classic). Per migrare i progetti Classic sul nuovo schema, consultare Migrare progetti Classic.

Per ulteriori informazioni, vedere Che cosa è un progetto Classic?

ArcGIS Workforce consente di pianificare, gestire e completare flussi di lavoro per tutti i tipi di attività sul campo. Si integra nell'organizzazione ArcGIS con un'app Web che consente di creare e assegnare il lavoro e un'app mobile destinata ai lavoratori mobili per gestire le loro assegnazioni. Una volta che il proprietario del progetto ha creato e configurato un progetto WorkforceWorkforce, i controllori utilizzeranno l'app Web WorkforceWorkforce per creare e assegnare il lavoro. I lavoratori mobili visualizzano e completano il lavoro che è stato assegnato loro utilizzando WorkforceWorkforce e altre app ArcGIS sul loro dispositivo mobile. L'intero flusso di lavoro è gestito dal progetto Workforce, una raccolta di feature layer e mappe.

L'app Web WorkforceWorkforce consente a un controllore di creare in modo rapido ed efficace incarichi di lavoro e gestire gli incarichi esistenti. Tuttavia, ci potrebbero essere azioni da eseguire con incarichi che sono diversi dal campo di azione dell’App Web. Ad esempio, alcune delle richieste più comuni ricevute per WorkforceWorkforce sono l'integrazione con altri sistemi, ad esempio sistemi di terze parti per la gestione della manutenzione, degli ordini di lavoro o delle risorse, nonché la gestione di incarichi ricorrenti o ripetitivi.

L'utilizzo di automazione e scripting con Workforce permette di ottenere tali capacità. L'app Web non è limitata alla creazione di incarichi. Workforce funziona con il contenuto del feature layer Incarichi, indipendentemente dal modo in cui i record sono stati creati. Il lavoro può provenire anche da altri sistemi all'interno di un'organizzazione ad esempio da un sistema di gestione delle risorse o della manutenzione o da un sistema 311. WorkforceWorkforce può essere integrato con fonti esterne per creare e aggiornare gli incarichi. Il layer Incarichi include un campo workOrderId che può fungere da chiave esterna, memorizzando un identificatore univoco che fa riferimento a un sistema esterno. Il campo workOrderId è disponibile nei dettagli dell'Incarico come ID: i controllori possono fornire le informazioni e i lavoratori mobili possono visualizzarle.

Assicurarsi di aver compreso lo schema dei progetti di WorkforceWorkforce e come funzionano i campi data e ora dello stato dell’incarico prima di iniziare l’automatizzazione e l’esecuzione dello script. Anche se raccomandiamo di utilizzare ArcGIS API for Python, è possibile anche automatizzare Workforce tramite l'utilizzo di ArcGIS REST API per feature layer.

Panoramica dello schema

Un progetto WorkforceWorkforce è composto da due feature layer, tre tabelle e tre domini di valori codificati all'interno di un singolo feature service. Il feature service WorkforceWorkforce viene generato automaticamente al momento della creazione del progetto insieme a una cartella, un gruppo e le mappe Web del controllore e del lavoratore. Il feature service ha una relazione di elemento con le due mappe Web e si trova in uno schema predefinito, mostrato di seguito.

Diagramma dello schema di Workforce

Nota:

Alcuni nomi del campo sono differenti in ArcGIS Enterprise. Invece di OBJECTID, GlobalID, CreationDate, EditDate, Creator, e Editor sono rispettivamente objectid, globalid, created_date, created_user, last_edited_date, e last_edited_user.

Servizio feature Workforce.

Il feature service Workforce contiene i seguenti layer e tabelle:

  • Layer Lavoratori
    • Un feature layer puntuale che contiene un record per ciascun lavoratore mobile incluso nel progetto.
    • Include informazioni relative al lavoratore mobile, tra cui il numero di contatto e la mansione.
    • Il nome utente dell'organizzazione ArcGIS dell'operatore mobile è memorizzato nel campo userid.
    • Il layer rileva chi ha creato e ha eseguito l'ultimo aggiornamento per ciascun lavoratore mobile.
    • Esiste una relazione chiave principale-chiave esterna (PK-FK) da GlobalID a Assignments.workerid. L'utilizzo del valore GlobalID dal layer Lavoratori come valore del Assignments.workeridcampo associa il lavoratore mobile con tutti i suoi incarichi.
    • Il layer ha le seguenti associazioni di dominio con valore codificato:
      • Il campo status è associato al dominio con valore codificato Worker_Status per tenere traccia dello stato del lavoratore mobile.
  • Layer Incarichi
    • Un feature layer puntuale che contiene un record per ciascuna assegnazione.
    • Include informazioni relative all'assegnazione, inclusi, tra le altre, lo stato, la posizione e la descrizione.
    • Il layer rileva chi ha creato e ha eseguito l'ultimo aggiornamento per ciascuna assegnazione.
    • Gli allegati non sono abilitati sul feature layer.
    • Il layer contiene le chiavi esterne per alcuni campi, associando i valori di un altro layer con questo layer:
      • Assignments.workerid a Workers.GlobalID.
      • Assignments.dispatcherid aDispatchers.GlobalID.
      • Assignments.workorderid può essere utilizzato come chiave esterna a un sistema esterno, ad esempio un sistema di gestione delle risorse o della manutenzione, fornendo valori dell'altro sistema.
      • Esiste una relazione PK-FK tra GlobalID e Assignment.assignmenttype. L'utilizzo del valore GlobalID dal layer Incarichi come valore del campo Assignments.assignmenttype associa l'incarico con il tipo di incarico.
    • Il layer ha le seguenti associazioni di dominio con valore codificato:
      • Il campo status è associato al dominio con valore codificato Assign_Status per tenere traccia dello stato del lavoratore mobile.
      • Il campo priority è associato con il dominio di valore di codice Priority per gestire la priorità degli incarichi del lavoro.
    Attenzione:

    Se un incarico ha valore null per la sua geometria, non apparirà in Workforce.

  • Tabella Controllori
    • Una tabella che contiene un record per ciascun controllore nel progetto.
    • Include informazioni relative al mittente, tra cui il nome e il numero di contatto.
    • Il nome utente dell'organizzazione ArcGIS del mittente è memorizzato nel campo userid.
    • Il layer rileva chi ha creato e ha eseguito l'ultimo aggiornamento per ciascun mittente.
    • Esiste una relazione PK-FK tra GlobalID e Assignments.dispatcherid. L'utilizzo del valore GlobalID dalla tabella Controllori come valore del campo Assignments.dispatcherid associa il controllore con tutti gli incarichi assegnati.
  • Tabella Tipi di incarico
    • Una tabella che contiene un record per ciascun tipo di incarico nel progetto.
    • Questa tabella è vuota quando il progetto viene creato. Esso conterrà dei valori una volta aggiunti i tipi di assegnazione durante la configurazione del progetto.
    • Include le descrizioni per i tipi di incarico specificati dal proprietario del progetto quando sono stati aggiunti i tipi di incarico.
    • Esiste una relazione PK-FK tra GlobalID e Assignments.assignmenttype. L'utilizzo del valore del campo GlobalID dalla tabella Tipi di incarico associa il tipo di incarico con gli incarichi.
  • Tabella Integrazioni di incarico
    • Una tabella che contiene un record per ciascuna integrazione di incarico nel progetto.
    • Questa tabella contiene un record per l'integrazione con ArcGIS Navigator quando viene creata.
    • La tabella Integrazioni di incarico contiene i seguenti attributi definiti dall'utente, oltre agli attributi standard definiti dal sistema:
      • app- un identificatore per l'app integrata che consente di trovare le configurazioni di integrazione necessarie per popolare l'esperienza di configurazione nell'app Web (ad esempio, arcgis-collector o https://collector.arcgis.app).
      • assignmenttype: il GlobalID di un tipo di incarico se l'integrazione deve essere mostrata solo per certi tipi di incarichi. Un valore di null indica che l'integrazione supporta tutti i tipi di incarichi nel progetto.
      • prompt- il prompt visualizzato nel client mobile (ad esempio, Vai all'incarico).
      • urltemplate: l'URL del modello utilizzato per richiamare l'app integrata.
    • Per trovare le integrazioni applicabili a un particolare incarico, utilizzare una delle seguenti clausole where: assignmenttype = null o assignmenttype = '<assignment-type-id>'. Questi trovano tutte le integrazioni a livello di progetto e tutte le integrazioni a livello di tipo per il tipo di incarico corrente.
    • Per trovare le integrazioni applicabili a un progetto, eseguire un'interrogazione dall'app utilizzando una clausola where, ad esempio appid = 'arcgis-collector'.

I tre domini con valore codificato sono i seguenti:

  • Assign_Status: memorizza i sette valori validi per lo stato di un incarico. I valori da 0 a 20 sono riservati per un utilizzo futuro da parte di WorkforceWorkforce. I clienti che desiderano memorizzare i propri valori in questo campo devono scegliere un valore al di fuori di tale intervallo.
  • Priority: memorizza i quattro valori validi per la priorità di un incarico.
  • Worker_Status: memorizza i tre valori validi per lo stato del lavoratore mobile.

    Per i valori dei domini con valore codificato, vedere il diagramma dello schema di WorkforceWorkforce.

Relazione tra elementi della mappa Web

La relazione tra gli elementi tra feature service WorkforceWorkforce e le mappe Web del lavoratore e del controllore ha la seguente definizione:

  • Tipi di relazione: WorkforceMap2FeatureService
  • Tipo di origine: mappa web
  • Tipo di destinazione: feature service
  • Regole
    • :mustOwnAllItems: il proprietario del progetto stabilisce la relazione e deve possedere la mappa correlata.

Quando una mappa Web ha una relazione di elemento con il feature service WorkforceWorkforce, le seguenti informazioni vengono aggiunte ai relativi metadati:

  • :title titolo del progetto.
  • :snippet descrizione breve del progetto.
  • :thumbnail miniatura del progetto.
  • :typeKeywords: Workforce Worker viene aggiunto alla mappa Lavoratore e Workforce Dispatcher viene aggiunto alla mappa Controllore.

Campi data e ora dello stato dell'assegnazione

Ciascuno stato dell'incarico nel dominio Assign_Status ha un campo data e ora corrispondente nel feature layer Incarichi. Questi campi contengono l'ultima data e ora in cui un incarico era nello stato corrispondente. Quando uno stato viene utilizzato per la prima volta per un determinato incarico, il campo data e ora associato viene compilato. Se un incarico è nello stesso stato successivamente, il campo data e ora viene aggiornato con la nuova data e la nuova ora. Ad esempio, quando un'assegnazione viene assegnata per la prima volta, la data corrisponderà alla data e all'ora correnti. Se viene riassegnata tre ore dopo, il campo assignedDate viene aggiornato alla nuova ora e l'ora dell'incarico originale viene rimossa.

Se il campo inprogressdate, declineddate o pauseddate viene popolato durante la riassegnazione di un incarico, viene impostato su null.

Stato assegnazioneCampo data e ora corrispondente

Non assegnato

creationdate

Assegnato

assigneddate

In avanzamento

inprogressdate

Completato

completeddate

Rifiutato

declineddate

In sospeso

pauseddate

Nota:

Lo stato Annullato non ha un campo data e ora associato. Il campo editdate di Monitoraggio modifiche può essere utilizzato per determinare la data e l'ora in cui un incarico è stato annullato, purché non siano state fatte altre modifiche dall'annullamento.

Per capire meglio i valori e quando sono specificati, considerare i seguenti scenari:

  • Riassegnazione del lavoro assegnato in precedenza
    • Un incarico è stato assegnato nel periodo t1, pertanto assigneddate corrisponde a t1.
    • In seguito, nel periodo t2, l'incarico è stato riassegnato a un altro lavoratore mobile, pertanto assigneddate corrisponde a t2.
  • Riassegnazione del lavoro rifiutato
    • Un incarico è stato assegnato nel periodo t1, pertanto assigneddate corrisponde a t1.
    • Il lavoratore mobile rifiuta l'incarico nel periodo t2, pertanto declineddate corrisponde a t2. Il valore assigneddate rimane t1.
    • L'incarico è stato assegnato a un altro lavoratore mobile nel periodo t3, pertanto assigneddate corrisponde a t3. Il valore declineddate è ora null.
  • Messa in pausa e ripresa del lavoro
    • Un incarico è stato assegnato nel periodo t1, pertanto assignedDate corrisponde a t1.
    • Il lavoratore mobile comincia l'incarica nel periodo t2, pertanto inprogressDate corrisponde a t2. Il valore assigneddate rimane t1.
    • Il lavoratore mobile mette in pausa l'incarico nel periodo t3, pertanto pauseddate corrisponde a t3. Il valore di assigneddate rimane t1 e il valore di inProgressDate rimane t2.
    • Il lavoratore mobile riavvia l'incarico nel periodo t4, pertanto inprogressdate corrisponde a t4. Il valore di assigneddate rimane t1 e il valore di pauseddate rimane t2.
  • Riassegnazione del lavoro in pausa
    • Un incarico è stato assegnato nel periodo t1, pertanto assigneddate corrisponde a t1.
    • Il lavoratore mobile comincia l'incarica nel periodo t2, pertanto inprogressdate corrisponde a t2. Il valore assigneddate rimane t1.
    • Il lavoratore mobile mette in pausa l'incarico nel periodo t3, pertanto pauseddate corrisponde a t3. Il valore di assigneddate rimane t1 e il valore di inprogressdate rimane t2.
    • L'incarico è stato assegnato a un altro lavoratore mobile nel periodo t4, pertanto assigneddate corrisponde a t4. I valori inprogressDate e pauseddate sono ora null.

Utilizza ArcGIS API for Python (consigliato)

Utilizza ArcGIS API for Python e il suo modulo Workforce per automatizzare ed eseguire lo script Workforce. Gli incarichi creati con il modulo WorkforceWorkforce possono essere interpretati tramite WorkforceWorkforce, dal momento che seguiranno lo stesso schema. Per esempi e procedure consigliate, consultare gli script di esempio nel repository degli script Workforce su GitHub. Gli script mostrano come utilizzare Python per realizzare varie attività, come per esempio il caricamento programmatico di incarichi da fonti di dati esterne, importazione e gestione di lavoratori, rimozione di incarichi completati, e altro. È possibile anche utilizzare Jupyter Notebook per la gestione di progetti ArcGIS Workforce per visualizzare alcune operazioni tipiche. Per iniziare ad utilizzare il modulo Workforce, si deve prima installare e configurare ArcGIS API for Python.

Nota:

Per automatizzare progetti Workforce, si deve utilizzareArcGIS API for Python 1.8.3 o versione successiva.

Iniziare ad utilizzare il modulo WorkforceWorkforce

Il moduloWorkforce consente di creare progetti Classic e progetti abilitati per l'uso offline. Creare progetti con il modulo Workforce attenendosi alla seguente procedura:

  1. Accedere ad ArcGIS Online eseguendo il seguente comando in uno script Python o in una console Python:

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

  2. Creare un progetto Classic o un progetto abilitato per l'uso offline eseguendo uno dei seguenti comandi:

    Creare un progetto Classic

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

    Creare un progetto abilitato per l'uso offline

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

Per informazioni su come utilizzare il modulo Workforce per modificare incarichi, tipi di incarico, operatori, controllori e integrazioni di app, consultare la documentazione di ArcGIS API for Python per il modulo Workforce.

Utilizzare ArcGIS REST API con feature layer esistenti

Attenzione:

Si consiglia di utilizzare ArcGIS API for Python. Include varie misure di salvaguardia, che proteggono l'integrità del progetto di Workforce.

È possibile automatizzare Workforce utilizzando ArcGIS REST API per feature layer. Quando si utilizza ArcGIS REST API, sarà necessario utilizzare il formato oggetto Feature per creare e aggiornare le assegnazioni. Consultare le sezioni seguenti per informazioni dettagliate sulla creazione e l'aggiornamento, nonché l'assegnazione di incarichi utilizzando ArcGIS REST API.

Crea assegnazione utilizzando ArcGIS REST API

Workforce funziona con il contenuto del feature layer Assegnazioni, indipendentemente dal modo in cui i record sono stati creati. Non è necessario alcun requisito per creare incarichi tramite la web app Workforce. Se una registrazione è creata adeguatamente nel layer feature incarichi utilizzando ArcGIS REST API, Workforce lo riconosce come incarico valido nella web app e nelle app mobile.

Quando si creano assegnazioni utilizzando ArcGIS REST API, utilizzare il comando Aggiungi feature. Alcuni campi richiedono valori. È possibile fornire valori per altri campi se l'incarico li richiede e alcuni campi non possono contenere valori.

I campi descritti nella tabella seguente richiedono valori:

CampoDefinizioneValore da specificare

SHAPE

La posizione punto dell'incarico.

Una coppia di coordinate x,y.

status

Lo stato dell'incarico deriva dai valori nel dominio assign_status.

  • 0 (Non assegnato): creare un lavoro non assegnato.
  • 1 (Assegnato): assegnare il lavoro come parte della creazione.
Attenzione:

Se si assegna il lavoro, è necessario includere valori per i campi workerid e assigneddate, descritti di seguito.

assignmenttype

Il tipo dell'incarico, derivato dai valori GlobalID nella tabella Tipi di incarico.

Un valore GlobalID valido dalla tabella Tipi di incarico.

location

La descrizione testuale della posizione punto dell'incarico.

Un indirizzo, una coppia di coordinate x,y o un testo descrittivo.

dispatcherid

L'ID del controllore che ha creato l'incarico, derivato dai valori GlobalID nella tabella Controllori.

Un valore GlobalID valido per un particolare controllore associato al progetto.

È inoltre possibile includere i valori per i seguenti campi facoltativi:

CampoDefinizioneValore da specificare

description

Informazioni per il lavoratore mobile sull'incarico.

Testo per il lavoratore mobile. Lo spazio vuoto viene gestito con il valore pre-line.

priority

La priorità dell'incarico.

Un valore valido dal dominio Priority.

workorderid

Una chiave esterna che fa riferimento a un ordine di lavoro da un sistema esterno o di terze parti.

Un valore dal sistema esterno.

duedate

Data e ora entro cui l'incarico deve essere completato.

Una data e un'ora valide, specificate in secondi in formato UTC dall'ultima volta.

Nota:

Per specificare una data di scadenza senza un'ora, specificare una data e utilizzare 11:59:59 PM come ora.

Per assegnare il lavoro durante il processo di creazione, utilizzare lo stato 1 (come indicato sopra) e specificare anche i seguenti campi:

CampoDefinizioneValore da specificare

workerid

L'ID del lavoratore mobile che ha ricevuto l'incarico, derivato dai valori GlobalID del layer Lavoratori.

Un valore GlobalID valido del lavoratore mobile che si sta assegnando.

assigneddate

Data e ora di assegnazione dell'incarico.

La data e l'ora correnti, specificate in secondi in formato UTC dall'ultima volta.

Gli altri campi sul layer Incarichi sono gestiti dalla piattaforma ArcGIS, inclusi i campi che sono contrassegnati come parte di ArcGIS o i campi di Monitoraggio modifiche nel diagramma dello schema. Non fornire o modificare questi valori.

Assegnare gli incarichi utilizzando ArcGIS REST API

Nella sezione precedente si è imparato a creare un incarico. Ora, si imparerà ad assegnare un incarico esistente. Utilizzare il comando ArcGIS REST API Aggiorna feature, passando all'array delle feature da aggiornare. Per ciascuna feature, sarà necessario specificare questi tre campi per assegnare o riassegnare un incarico:

CampoDefinizioneValore da specificare

status

Lo stato dell'incarico deriva dai valori nel dominio Assign_Status.

1 (Assegnato)

workerid

L'ID del lavoratore mobile che ha ricevuto l'incarico, derivato dai valori GlobalID del layer Lavoratori.

Un valore GlobalID valido del lavoratore mobile che si sta assegnando.

assigneddate

Data e ora di assegnazione dell'incarico.

La data e l'ora correnti, specificate in secondi in formato UTC dall'ultima volta.

dispatcherid

L'ID del controllore che ha creato l'incarico, derivato dai valori GlobalID nella tabella Controllori.

Un valore GlobalID valido per un particolare controllore associato al progetto.