Automatizza ed esegui lo scriptWorkforce

Attenzione:

Questo argomento insegna come automatizzare ed eseguire lo script di progetti ClassicWorkforce che appaiono in Workforceper ArcGIS. Per informazioni su automatizzare ed eseguire lo script di progetti abilitati per l'uso offline e visualizzati in ArcGIS Workforce, consultare Automatizzare Workforce.

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

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 Workforce i controllori utilizzeranno l'app WebWorkforce per creare e assegnare il lavoro. I lavoratori mobili visualizzano e completano il lavoro che è stato assegnato loro utilizzandoWorkforce 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 Workforce è progettata per consentire a un mittente 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 Workforce sono l’integrazione con altri sistemi, ad esempio sistemi di terze parti per la gestione della manutenzione, degli ordini di lavoro o delle risorse, e anche la gestione di incarichi ricorrenti o ripetitivi.

L’utilizzo dell’automatizzazione e dell'esecuzione degli script con WorkforceWorkforce permette di ottenere le stesse capacità oggi. 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.Workforce può essere integrato con fonti esterne per creare e aggiornare gli incarichi. Il layer Incarichi include un campoworkOrderId 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 utilizzareArcGIS API for Python, è possibile anche automatizzareWorkforce tramite l’API REST per feature layer. Se gli incarichi vengono creati con lo stesso schema,Workforce può interpretarli.

Panoramica dello schema

Un progetto Workforce è composto da quattro feature layer e quattro domini con valore codificato con uno schema predefinito. Il nome di ciascun feature layer è una combinazione tra un moniker, che descrive lo scopo del feature layer, e il GUID dell'elemento del progettoWorkforce che vi è stato aggiunto. Ad esempio, il layer Lavoratori associato a un progetto con GUID 5dd018fcd88c4d33814cf3da9c44061e dovrebbe essere chiamato lavoratori_5dd018fcd88c4d33814cf3da9c44061e. Ciò garantisce l'unicità di ciascun feature layer.

Diagramma dello schema di Workforce
Nota:

I campi di monitoraggio modifiche sono diversi in ArcGIS Enterprise. Invece di CreationDate, Creator, EditDate, e Editor, sono rispettivamente created_date, created_user, last_edited_date, e last_edited_user.

I quattro feature layer sono i seguenti:

  1. 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 OBJECTID a Assignments.workerId. L'utilizzo del valore OBJECTID 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 dello stato è associato alWorker_Status dominio con valore codificato per tenere traccia dello stato del lavoratore mobile.
  2. Assegnazioni
    • 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.OBJECTID.
      • Assignments.dispatcherId aDispatchers.OBJECTID.
      • 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.
    • Il layer ha le seguenti associazioni di dominio con valore codificato:
      • Ilstatus campo è associato al dominio conAssign_Status valore codificato per tenere traccia dello stato degli incarichi.
      • Il campo priority è associato con il dominio di valore di codice Priority per gestire la priorità degli incarichi del lavoro.
      • Il assignmentTypecampo assignmentType è associato alAssign_Type dominio con valore codificato per memorizzare i tipi di incarico per il progetto.
  3. Mittenti
    • Un feature layer puntuale che contiene un record per ciascun mittente all'interno del 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 OBJECTID e Assignments.dispatcherId. L'utilizzo delOBJECTID layer dalla tabella Controllori come Assignments.dispatcherIdvalore del campo associa il controllore con tutti gli incarichi assegnati.
  4. Rilevamento posizione
    • Un feature layer puntuale che contiene un record per ciascuna posizione punto quando è abilitato il rilevamento della posizione.
    • Il layer rileva chi ha creato e ha eseguito l'ultimo aggiornamento per ciascun rilevamento della posizione.

I quattro domini con valore codificato sono i seguenti:

  1. Assign_Status: memorizza i sei valori validi per lo stato di un incarico.
  2. Priority: memorizza i quattro valori validi per la priorità di un incarico.
  3. Assign_Type: memorizza i tipi di incarico per il progetto. Questo dominio con valore codificato è vuoto quando il progetto viene creato. Esso conterrà dei valori una volta aggiunti i tipi di assegnazione durante la configurazione del progetto.
  4. 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.

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'assegnazione era nello stato corrispondente. Quando uno stato viene utilizzato per la prima volta per una determinata assegnazione, il campo data e ora associato viene compilato per la prima volta. Se un'assegnazione è di nuovo 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 campoassignedDate viene aggiornato alla nuova ora e l'ora dell'incarico originale viene rimossa.

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 campoEditDate 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 valoreassignedDate rimane t1.
    • L'incarico è stato assegnato a un altro lavoratore mobile nel periodo t3, pertanto assignedDate corrisponde a t3.
  • 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 valoreassignedDate rimane t1.
    • Il lavoratore mobile mette in pausa l'incarico nel periodo t3, pertanto pausedDate corrisponde a t3. Il valore diassignedDate rimane t1 e il valore diinProgressDate rimane t2.
    • Il lavoratore mobile riavvia l'incarico nel periodo t4, pertanto inProgressDate corrisponde a t4. Il valore diassignedDate rimane t1 e il valore dipausedDate rimane t3.

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 moduloWorkforce possono essere interpretati tramiteWorkforce, dal momento che seguiranno lo stesso schema. Per esempi e procedure consigliate, consultare gli script di esempio disponibili 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 questo Jupyter notebook per visualizzare alcune operazioni tipiche.

Il moduloWorkforce è stato introdotto conArcGIS API for Python 1.4.1. Dal momento che è stato possibile utilizzare Python prima dell’introduzione di questo modulo, adesso l’automatizzazione di attivitàWorkforce più semplice. Il moduloWorkforce include lo schema del progetto e le regole di Workforce. Include anche le misure di salvaguardia, che proteggono l’integrità del progetto diWorkforce.

Nota:

Hai un commento o del feedback su uno degli script? O hai qualche idea su un altro script che vorresti aggiungessimo? Condividili su GitHub.

Utilizza l’API REST per feature layer

Attenzione:

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

È possibile automatizzareWorkforce tramite l’API REST dei feature layers. Quando si utilizza l'API REST, sarà necessario utilizzare il formato oggetto Feature per creare e aggiornare le assegnazioni. Vedere le sezioni seguenti per ottenere dettagli sulla creazione e sull’aggiornamento, come anche sull’assegnazione, degli incarichi tramite l’API REST.

Creare un'assegnazione tramite l'API REST

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 appWorkforce. Se una registrazione è creata adeguatamente nel layer feature incarichi utilizzando l'API REST,Workforce lo riconosce come incarico valido nella web app e nelle app mobile.

Quando si creano incarichi con l’API REST, utilizzare il comando Aggiungi feature. Per alcuni campi è necessario specificare i valori, per altri campi è necessario specificare i valori solo se l'assegnazione lo richiede e per altri ancora non è affatto necessario specificare valori.

È necessario specificare i valori per i seguenti campi:

CampoDefinizioneValore da specificare

SHAPE

La posizione punto dell'assegnazione

Una coppia di coordinate x,y

status

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

  • 0 (Non assegnato) per creare un lavoro non assegnato
  • 1 (Assegnato) se il lavoro verrà assegnato durante il processo di creazione
Attenzione:

Se si sta per assegnare il lavoro, è inoltre necessario includere valori per i campiworkerId e assignedDate, descritti in una tabella di seguito.

assignmentType

Il tipo dell'incarico, dai valori nel dominio Assign_Type

Qualsiasi valore valido dal dominio Assign_Type.

location

Descrizione testuale della posizione punto dell'assegnazione

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

assignmentRead

Specifica se l'operatore mobile ha visualizzato l'incarico

0 quando l'assegnazione è non letta

dispatcherId

L'ID del controllore che ha creato l'incarico(dispatchers.OBJECTID dal layer Controllori)

Potrebbe essere l'ID del mittente dell'utente aziendale ArcGIS con cui è stato effettuato l'accesso o potrebbe essere l'ID di un determinato mittente associato al progetto

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

Campo facoltativoDefinizioneValore da specificare

description

Informazioni per il lavoratore mobile sull'assegnazione

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

priority

La priorità dell'assegnazione

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'assegnazione deve essere completata

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.

Se si desidera 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 (workers.OBJECTIDal layer Lavoratori)

OBJECTID del lavoratore mobile che si sta assegnando.

assignedDate

Data e ora di quando l'assegnazione è stata assegnata

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

Gli altri campi sul layer Assegnazioni 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 è necessario specificare o modificare i relativi valori.

Assegnare assegnazioni tramite l'API REST

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

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 (workers.OBJECTIDal layer Lavoratori)

OBJECTID del lavoratore mobile che si sta assegnando.

assignedDate

Data e ora di quando l'assegnazione è stata assegnata

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

dispatcherId

L'ID del controllore che ha assegnato l'incarico, se diverso dal controllore che l'ha creato (dispatchers.OBJECTIDdal layer Controllori).

Potrebbe essere l'ID del mittente dell'utente aziendale ArcGIS con cui è stato effettuato l'accesso o potrebbe essere l'ID di un determinato mittente associato al progetto