Automatização e script com ArcGIS Workforce

Aviso:

Este é um tópico avançado designado para administradores e proprietários de projetos trabalhando com as camadas de feição diretamente, como pelo ArcGIS API for Python ou ArcGIS REST API.

Anotação:

Os projetos do Classic têm um esquema diferente do descrito abaixo. Para informações sobre como automatizar e criar scripts de projetos do Classic Workforce , consulte Automatização e script do Workforce (Classic). Para migrar projetos do Classic para o novo esquema, consulte Migrar projetos do Classic.

Para mais informações, consulte O que é um projeto do Classic

O ArcGIS Workforce permite a você planejar, gerenciar e completar fluxos de trabalhos para todos os tipos de atividades de campo. Ele integra em sua organização do ArcGIS com um aplicativo da web para criar e atribuir trabalhos e um aplicativo móvel para trabalhadores móveis gerenciar suas tarefas. Após o proprietário do projeto criar e configurar um projeto do Workforce , os despachantes utilizarão o aplicativo da web Workforce para criar e atribuir trabalhos e os trabalhadores móveis visualizarão e completarão o trabalho que será atribuído a eles utilizando Workforce e outros aplicativos ArcGIS em seu dispositivo móvel. O fluxo de trabalho inteiro é conduzido pelo projeto do Workforce , uma coleção de camadas de feição e mapas.

O aplicativo da web Workforce permite a um despachante criar tarefas de trabalho e gerenciar tarefas existentes de forma rápida e eficiente. Entretanto, podendo haver coisas que você deseja fazer com as tarefas que estão fora do escopo do aplicativo da web. Por exemplo, alguns dos pedidos mais comuns recebidos do Workforce são sobre a integração com outros sistemas—tais como, ordem de serviço de terceiros, recurso ou sistemas de gerenciamento de manutenção— e a manipulação de tarefas recorrentes ou repetidas.

A utilização de automatização e script com Workforce permite a você alcançar estes recursos. Você não está limitado a utilizar o aplicativo da web para criar tarefas. O Workforce funciona com o conteúdo da camada de feição Tarefas, não importando como os registros foram criados. O trabalho pode originar de outros sistemas dentro de uma organização, como de um recurso ou sistema de gerenciamento de manutenção ou um sistema 311. O Workforce pode ser integrado com fontes externas para criar e atualizar tarefas. A camada Tarefas inclui um campo workOrderId que pode agir como uma chave externa, armazenando um identificador único referenciando um sistema externo. O campo workOrderId está disponível nos detalhes da Tarefa como ID—os despachantes podem fornecer as informações e trabalhadores móveis podem visualizá-las.

Certifique-se de entender o esquema de projetos do Workforce e como os campos de data e hora de status da tarefa operam antes de você iniciar a automatização e scripts. Embora seja recomendado a você utilizar o ArcGIS API for Python, você também pode automatizar o Workforce usando ArcGIS REST API para camadas de feição.

Visão geral do esquema

Um projeto do Workforce é composto de duas camadas de feição, três tabelas e três domínios de valor codificado em um único serviço da feição. O serviço da feição do Workforce é gerado automaticamente no momento que o projeto é criado, juntamente com uma pasta, um grupo e os mapas da web do despachante e do trabalhador. O serviço da feição tem um relacionamento de item com os dois mapas da web e está em um esquema pré-definido, mostrado abaixo.

Diagrama de esquema do Workforce

Anotação:

Determinados nomes de campo são diferentes no ArcGIS Enterprise. Ao invés de OBJECTID, GlobalID, CreationDate, Creator, EditDate, e Editor, eles são objectid, globalid, created_date, created_user, last_edited_date, e last_edited_user, respectivamente.

Serviço da feição do Workforce

O serviço da feição do Workforce contém as seguintes camadas e tabelas:

  • Camada de Trabalhadores
    • Uma camada de feição de ponto que contém um registro para cada trabalhador móvel que é incluído no projeto.
    • Inclui as informações sobre o trabalhador móvel, inclusive seu número de contato e título do trabalho.
    • O nome de usuário organizacional do ArcGIS do trabalhador móvel é armazenado no campo userid.
    • A camada rastreia quem criou e quando foi a última atualização de cada trabalhador móvel.
    • Há uma chave externa de chave primária de relacionamento (PK-FK) do GlobalID para Assignments.workerid. A utilização do valor GlobalID da camada Workers como o valor de campo Assignments.workerid associa o trabalhador móvel com todas as suas tarefas.
    • A camada tem as seguintes associações de domínio de valor codificado:
      • O campo status é associado ao domínio de valor codificado Worker_Status para rastrear o status do trabalhador móvel.
  • Camada de Tarefas
    • Uma camada de feição de ponto que contém um registro para cada tarefa.
    • Inclui informações sobre a tarefa, inclusive seu status, localização e descrição, entre outros.
    • A camada rastreia quem a criou e quando foi atualizada por último em cada tarefa.
    • Os anexos são habilitados na camada de feição.
    • A camada contém chaves externas de alguns campos, associando valores de outra camada com esta camada:
      • Assignments.workerid para Workers.GlobalID.
      • Assignments.dispatcherid para Dispatchers.GlobalID.
      • Assignments.workorderid pode ser usado como uma chave externa para um sistema externo, como um sistema de gerenciamento de ativos ou manutenção, fornecendo valores de outro sistema.
      • Há um relacionamento PK-FK de GlobalID para Assignment.assignmenttype. A utilização do valor GlobalID da camada Tarefas como o valor de campo Assignments.assignmenttype associa a tarefa com o tipo de tarefa.
    • A camada tem as seguintes associações de domínio de valor codificado:
      • O campo status é associado ao domínio de valor codificado Assign_Status para rastrear o status do trabalhador móvel.
      • O campo priority é associado ao domínio de valor codificado Priority para gerenciar a prioridade das tarefas do trabalho.
    Aviso:

    Se uma tarefa tiver um valor null para sua geometria, não aparecerá noWorkforce.

  • Tabela de Despachantes
    • Uma tabela que contém um registro de cada despachante no projeto.
    • Inclui informações sobre o despachante, inclusive seu nome e número de contato.
    • O nome de usuário organizacional do ArcGIS do despachante é armazenado no campo userid.
    • A camada rastreia quem a criou e quando foi atualizada por último em cada despachante.
    • Há um relacionamento PK-FK de GlobalID para Assignments.dispatcherid. A utilização do valor GlobalID da tabela Despachantes como o valor de campo Assignments.dispatcherid associa o despachante com todas as tarefas que eles atribuíram.
  • Tabela de Tipos de Tarefas
    • Uma tabela que contém um registro de cada tipo de tarefa no projeto.
    • Este valor de domínio codificado está vazio quando o projeto é criado. Ele contém valores após os tipos de tarefas terem sido adicionadas durante a configuração do projeto.
    • Inclui as descrições dos tipos de tarefa especificados pelo proprietário do projeto quando os tipos de tarefas foram adicionados.
    • Há um relacionamento PK-FK de GlobalID para Assignments.assignmenttype. A utilização do valor de campo GlobalID da tabela Tipos de Tarefas associa o tipo de tarefa a atribuições.
  • Tabela de Integrações da Tarefa
    • Uma tabela que contém um registro de cada integração da tarefa no projeto.
    • Esta tabela contém um registro para integração com ArcGIS Navigator quando criado.
    • A tabela Integrações da Tarefa contém os seguintes atributos definidos pelo usuário, além dos atributos definidos pelo sistema padrão:
      • app—Um identificador para o aplicativo integrado que ajudará a encontrar as configurações de integração necessárias para preencher a experiência de configuração no aplicativo da web—por exemplo, arcgis-collector ou https://collector.arcgis.app.
      • assignmenttype—O GlobalID de um tipo de tarefa se a integração for exibida somente para determinados tipos de tarefas. Um valor de null indica que a integração oferece suporte a todos os tipos de tarefas no projeto.
      • prompt—O lembrete exibido no cliente móvel, por exemplo, Navegar para atribuição.
      • urltemplate—A URL do modelo utilizada para invocar o aplicativo integrado.
    • Para encontrar as integrações aplicáveis a uma tarefa específica, utilize uma das seguintes cláusulas where: assignmenttype = null ou assignmenttype = '<assignment-type-id>'. Elas localizam todas as integrações de nível do projeto e todas as integrações de nível do tipo para o tipo de tarefa atual.
    • Para encontrar as integrações aplicáveis a um projeto, consulte pelo aplicativo utilizando uma cláusula where, por exemplo, appid = 'arcgis-collector'.

Os três domínios de valor codificado são como segue:

  • Assign_Status—Armazena os sete valores válidos do status de uma tarefa. Os valores de 0-20 são reservados para uso futuro do Workforce. Os clientes que desejam armazenar seus próprios valores neste campo devem escolher um valor fora deste intervalo.
  • Priority—Armazena os quatro valores válidos da prioridade de uma tarefa.
  • Worker_Status—Armazena os três valores válidos do status do trabalhador móvel.

    Para os valores dos domínios de valor codificado, consulte o diagrama de esquema do Workforce .

Relacionamento do item de mapa da web

O relacionamento do item entre o serviço da feição do Workforce e os mapas da web do trabalhador e do despachante têm a seguinte definição:

  • Tipo de relacionamento—WorkforceMap2FeatureService
  • Tipo de origem—Mapa da Web
  • Tipo de destino—Serviço da Feição
  • Regras
    • mustOwnAllItems—O proprietário do projeto estabelece o relacionamento e ele deve ter o mapa relacionado.

Quando um mapa da web tem um relacionamento do item com o serviço da feição do Workforce , as seguintes informações são adicionadas a seus metadados:

  • title—O título do projeto.
  • snippet—A breve descrição do projeto.
  • thumbnail—A miniatura do projeto.
  • typeKeywordsWorkforce Worker é adicionado ao mapa Trabalhador e Workforce Dispatcher é adicionado ao mapa Despachante.

Campos de data e hora do status da tarefa

Cada status da tarefa definida no domínio Assign_Status tem um campo de data e hora correspondentes na camada de feição Assignments. Estes campos contêm a última data e hora onde uma tarefa estava no estado correspondente. Quando um status é primeiramente utilizado para uma tarefa em particular, o campo de data e hora associado é preenchido. Quando uma tarefa estiver no mesmo status posteriormente, o campo de data e hora será atualizado com a nova data e hora. Por exemplo, quando uma tarefa é atribuída primeiramente, sua data atribuída é a data e hora atual. Se ela for atribuída novamente três horas depois, o campo assignedDate será atualizado para o novo horário, e a hora da tarefa original será removida.

Se o campo inprogressdate, declineddate ou pauseddate estiver preenchido quando uma tarefa for reatribuída, ele será definido como null.

Status da tarefaCampo de data e hora correspondente

Não Atribuído

creationdate

Atribuído

assigneddate

Em Andamento

inprogressdate

Finalizado

completeddate

Recusado

declineddate

Pausado

pauseddate

Anotação:

O status Cancelado não tem um campo de data e hora associado. O campo editdate de Rastreamento do Editor pode ser utilizado para determinar a data e hora que uma tarefa foi cancelada, desde que nenhuma outra edição tenha sido realizada desde o cancelamento.

Para entender melhor os valores e quando eles são configurados, considere os seguintes cenários:

  • Reatribuindo o trabalho atribuído anteriormente
    • Você atribuiu uma tarefa no tempo t1, então assigneddate é t1.
    • Posteriormente, no tempo t2, a tarefa é atribuída novamente para outro trabalhador móvel, então assigneddate é t2.
  • Reatribuindo o trabalho recusado
    • Você atribuiu uma tarefa no tempo t1, então assigneddate é t1.
    • O trabalhador móvel recusa a tarefa no tempo t2, então declineddate é t2. O valor assigneddate permanece t1.
    • Você atribui a tarefa para outro trabalhador móvel no tempo t3, então assigneddate é t3. O valor declineddate é agora null.
  • Pausando e retomando trabalho
    • Você atribuiu uma tarefa no tempo t1, então assignedDate é t1.
    • O trabalhador móvel inicia a tarefa no tempo t2, então inprogressDate é t2. O valor assigneddate permanece t1.
    • O trabalhador móvel pausa a tarefa no tempo t3, então pauseddate é t3. O valor assigneddate permanece t1 e o valor inProgressDate permanece t2.
    • O trabalhador móvel reinicia a tarefa no tempo t4, então inprogressdate é t4. O valor assigneddate permanece t1 e o valor pauseddate permanece t2.
  • Reatribuindo o trabalho pausado
    • Você atribuiu uma tarefa no tempo t1, então assigneddate é t1.
    • O trabalhador móvel inicia a tarefa no tempo t2, então inprogressdate é t2. O valor assigneddate permanece t1.
    • O trabalhador móvel pausa a tarefa no tempo t3, então pauseddate é t3. O valor assigneddate permanece t1 e o valor inprogressdate permanece t2.
    • Você atribui a tarefa para outro trabalhador móvel no tempo t4, então assigneddate é t4. Os valores inprogressDate e pauseddate agora são null.

Utilizar ArcGIS API for Python (recomendado)

Use ArcGIS API for Python e seu módulo Workforce para automatização e script do Workforce. Tarefas criadas com o módulo do Workforce podem ser interpretadas pelo Workforce, já que seguem o mesmo esquema. Para exemplos e melhores práticas, consulte os scripts de amostra no repositório de scripts do Workforce no GitHub. Os scripts mostram como utilizar o Python para realizar muitas tarefas, tais como carregar tarefas de forma programada a partir de fontes de dados externas, importando e gerenciando trabalhadores, removendo tarefas concluídas e mais. Você também pode usar oGerenciamento de notebook Jupyter de projetos do ArcGIS Workforce para ver as operações típicas. Para iniciar com o módulo do Workforce, você deve primeiro instalar e configurar o ArcGIS API for Python.

Anotação:

Para automatizar projetos do Workforce , você deve usar o ArcGIS API for Python 1.8.3 ou posterior.

Iniciar com o módulo do Workforce

O módulo do Workforce permite a você criar projetos do Classic, como também, projetos habilitados para uso offline. Crie projetos com o módulo do Workforce concluindo as seguintes etapas:

  1. Entre no ArcGIS Online executando o seguinte comando em um script Python ou console Python:

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

  2. Crie um projeto do Classic ou um projeto que esteja habilitado para uso offline executando um dos seguintes comandos:

    Criar um projeto do Classic

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

    Criar um projeto habilitado para uso offline

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

Para obter informações sobre como usar o módulo Workforce para modificar atribuições, tipos de atribuição, trabalhadores, despachantes e integrações de aplicativos, consulte a documentação do ArcGIS API for Python do módulo Workforce .

Utilizar ArcGIS REST API com camadas de feição existentes

Aviso:

É recomendado que você utilize o ArcGIS API for Python. Inclui várias proteções que protegem a integridade de projeto do Workforce .

Você pode automatizar o Workforce usando ArcGIS REST API para camadas de feição. Ao utilizar o ArcGIS REST API, você precisa utilizar o formato Objeto de feição para criar e atualizar tarefas. Consulte as seções abaixo para detalhes sobre criar e atualizar e atribuir tarefas utilizando ArcGIS REST API.

Criar e atribuir usando ArcGIS REST API

O Workforce funciona com o conteúdo da camada de feição Assignments, não importando como os registros foram criados. Não há necessidade de criar atribuições pelo aplicativo da web Workforce. Se um registro for criado adequadamente na camada de feição Assignments usando ArcGIS REST API, o Workforce reconhecera como uma tarefa válida em ambos os aplicativos da web e móveis.

Ao criar tarefas com ArcGIS REST API, use o comando Adicionar Feições. Alguns campos exigem valores, você pode fornecer valores para outros campos se a sua tarefa exigir, e alguns campos não podem conter valores.

Os campos descritos na seguinte tabela exigem valores:

CampoDefiniçãoValor para fornecer

SHAPE

A localização de ponto da tarefa.

Um par de coordenadas x,y.

status

O status da tarefa derivado de valores no domínio assign_status .

  • 0 (Não atribuído)—Cria trabalho não atribuído.
  • 1 (Atribuído)—Atribui o trabalho como parte de sua criação.
Aviso:

Se você estiver atribuindo o trabalho, deverá incluir os valores dos campos workerid e assigneddate , descritos abaixo.

assignmenttype

O tipo de tarefa derivado de valores do GlobalID na tabela de tipos de tarefas.

Um valor de GlobalID válido da tabela de tipos de tarefas.

location

Descrição de texto da localização de ponto da tarefa.

Um endereço, um par de coordenadas x,y ou qualquer texto descritivo.

dispatcherid

O ID do despachante criando a tarefa, derivado de valores do GlobalID na tabela de despachantes.

Um valor de GlobalID válido para um despachante em particular associado ao projeto.

Você também pode incluir valores dos campos opcionais seguintes:

CampoDefiniçãoValor para fornecer

description

Informações do trabalhador móvel sobre a tarefa.

Texto do trabalhador móvel O espaço branco é tratado com o valor de pré-linha.

priority

A prioridade da tarefa.

Um valor válido a partir do domínio Priority .

workorderid

Uma chave externa referenciando uma ordem de serviço a partir de um sistema externo ou de terceiros.

Um valor do seu sistema externo.

duedate

A data e hora pela qual a tarefa precisa ser concluída.

Uma data e hora válida, fornecidas como o horário de UTC em segundos a partir da última época.

Anotação:

Para fornecer uma data de vencimento sem uma hora, especifique a data e utilize 11:59:59 PM como a hora.

Para atribuir o trabalho como parte de sua criação, utilize um status de 1 (como mencionado acima) e forneça os campos seguintes também:

CampoDefiniçãoValor para fornecer

workerid

O ID do trabalhador móvel para quem a tarefa está sendo atribuída, derivado de valores do GlobalID na camada Trabalhadores.

O valor de GlobalID do trabalhador móvel que você está atribuindo.

assigneddate

A data e hora que a tarefa foi atribuída.

Uma data e hora atual, fornecidas como o horário de UTC em segundos a partir da última época.

Os outros campos na camada Tarefas são gerenciados pela plataforma ArcGIS, incluem os campos que são marcados como parte dos campos ArcGIS ou Rastreamento do Editor no diagrama de esquema. Não forneça nem modifique estes valores.

Atribuir tarefas usando ArcGIS REST API

Na seção anterior você aprendeu como criar uma tarefa atribuída. Agora, você aprenderá como atribuir uma tarefa existente. Utilize o comando Atualizar Feições de ArcGIS REST API, passando no conjunto de feições para ser atualizado. Para cada feição, você deve fornecer estes três campos para atribuir ou reatribuir uma tarefa:

CampoDefiniçãoValor para fornecer

status

O status da tarefa derivado de valores no domínio Assign_Status .

1 (Atribuído)

workerid

O ID do trabalhador móvel para quem a tarefa está sendo atribuída, derivado de valores do GlobalID na camada Trabalhadores.

O valor de GlobalID do trabalhador móvel que você está atribuindo.

assigneddate

A data e hora que a tarefa foi atribuída.

Uma data e hora atual, fornecidas como o horário de UTC em segundos a partir da última época.

dispatcherid

O ID do despachante atribuindo a tarefa, derivado de valores do GlobalID na tabela de Despachantes.

Um valor de GlobalID válido para um despachante em particular associado ao projeto.