Aviso:
Este tópico aborda como automatizar e criar scripts para projetos do Classic Workforce que aparecem no Workforce for ArcGIS. Para informações sobre como criar scripts e automatizar projetos que estão habilitados para uso offline, e que aparecem no ArcGIS Workforce, consulte Automatizar o Workforce.
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 REST API.
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 é projetado para permitir que um despachante crie tarefas de trabalho e gerencie tarefas existentes de forma rápida e eficaz. 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, como também, manipular tarefas recorrentes ou repetidas.
A utilização de automatização e scripts com Workforce permite a você alcançar estes recursos hoje. 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 usar o ArcGIS API for Python, você também pode automatizar o Workforce através de REST API para camadas de feição. Já que as tarefas são criadas com o mesmo esquema, oWorkforce pode interpretá-las.
Visão geral do esquema
Um projeto do workforce é composto de quatro camadas de feição e quatro domínios de valores codificados com um esquema pré definido. O nome de cada camada de feição é uma combinação de um moniker, descrevendo o propósito da camada de feição, anexado com o GUID do item de projeto do Workforce . Por exemplo, a camada Workers associado com um projeto com GUID 5dd018fcd88c4d33814cf3da9c44061e seria denominada workers_5dd018fcd88c4d33814cf3da9c44061e. Isto garante a singularidade de cada camada de feição.
Anotação:
Os campos de rastreamento do editor são diferentes no ArcGIS Enterprise. Ao invés de CreationDate, Creator, EditDate e Editor, eles são created_date, created_user, last_edited_date e last_edited_user, respectivamente.
As quatro camadas de feição são como seguem:
- 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 trabalhador móvel do ArcGIS é 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 OBJECTID para Assignments.workerId. A utilização do valor OBJECTID 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 de status é associado com o domínio de valor codificado Worker_Status para rastrear o status do trabalhador móvel.
- Atribuições
- 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.OBJECTID.
- Assignments.dispatcherId para Dispatchers.OBJECTID.
- 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.
- 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.
- O campo assignmentType é associado com o domínio de valor codificado Assign_Type para armazenar os tipos de tarefas do projeto.
- Despachantes
- Uma camada de feição de ponto que contém um registro de cada despachante dentro do 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 OBJECTID para Assignments.dispatcherId. A utilização do valor OBJECTID da tabela Despachantes como o valor de campo Assignments.dispatcherId associa o despachante com todas as tarefas que eles atribuíram.
- Rastreamento de Local
- Uma camada de feição de ponto que contém um registro de cada localização de ponto logado enquanto o rastreamento da localização estiver habilitado.
- A camada rastreia quem criou e atualizou por último cada rastreio de localização.
Os quatro domínios de valor codificado são como seguem:
- Assign_Status—Armazena os seis valores válidos do status de uma tarefa.
- Priority—Armazena os quatro valores válidos da prioridade de uma tarefa.
- Assign_Type—Armazena os tipos de tarefa do projeto. Este valor de domínio codificado está vazio quando o projeto for criado. Ele contém valores após os tipos de tarefas terem sido adicionadas durante a configuração do projeto.
- 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 .
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 novamente, 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.
Status da tarefa | Campo 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 assignedDate permanece t1.
- Você atribui a tarefa para outro trabalhador móvel no tempo t3, então assignedDate é t3.
- 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 assignedDate permanece t1.
- O trabalhador móvel pausa a tarefa no tempo t3, então pausedDate é t3. O assignedDate permanece t1 e inProgressDate permanece t2.
- O trabalhador móvel reinicia a tarefa no tempo t4, então inProgressDate é t4. O assignedDate permanece t1 e pausedDate permanece t3.
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. Por exemplos e melhores práticas, consulte os scripts de amostra disponíveis em 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 utilizar este Jupyter notebook para visualizar algumas operações típicas.
O módulo Workforce foi introduzido com ArcGIS API for Python 1.4.1. Embora fosse possível utilizar o Python antes deste módulo ser introduzido, ele simplifica a automatização das tarefas do Workforce . O módulo do Workforce encapsula o esquema de projeto e regras do Workforce . Inclui proteções também, protegendo a integridade de seu projeto do Workforce .
Anotação:
Tem algum comentário ou retorno sobre um dos scripts? Ou uma idéia para outro script que você gostaria de fornecer? Compartilhe em GitHub.
Utilize o REST API para camadas de feição
Aviso:
É recomendado que você utilize o ArcGIS API for Python. Tem múltiplas proteções no local que protegem a integridade de projeto do Workforce .
Você pode automatizar o Workforce por REST API para camadas de feição. Ao utilizar REST API, você precisará utilizar o formato Objeto de feição para criar e atualizar tarefas. Consulte as seções seguintes para detalhes sobre criar e atualizar, como também atribuir, tarefas pelas REST API.
Criar uma tarefa pelo 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 Workforce web app. Se um registro for criado adequadamente na camada de feição Assignments por REST API, o Workforce reconhecerá como uma tarefa válida em ambos os aplicativos da web e móvel.
Ao criar tarefas com REST API, utilize o comando Adicionar feições . Há alguns campos que você é exigido para fornecer valores, alguns campos que você pode fornecer valores se sua tarefa exigi-los e outros que você não deve fornecer valores.
Você precisa fornecer valores para os campos seguintes:
Campo | Definição | Valor para fornecer |
---|---|---|
SHAPE | A localização de ponto da tarefa | Um par de coordenadas x,y |
status | O status da tarefa a partir de valores no domínio Assign_Status |
Aviso:Se você for atribuir o trabalho, você também precisará incluir os valores dos campos workerId e assignedDate , descritos em uma tabela antiga. |
assignmentType | O tipo de tarefa, a partir dos valores no domínio Assign_Type | Um valor válido a partir do domínio Assign_Type |
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 |
assignmentRead | Especifica se o trabalhador móvel visualizou a tarefa | 0 já que a tarefa está como não lida |
dispatcherId | O ID do despachante criando a tarefa (dispatchers.OBJECTID a partir da camada Dispatchers) | Pode ser o ID do despachante para o usuário organizacional do ArcGIS que você está conectado ou pode ser o ID de um despachante particular associado com o projeto |
Você também pode incluir valores dos campos opcionais seguintes:
Campo opcional | Definição | Valor 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 Prioridade |
workOrderId | Uma chave externa referenciando uma ordem de serviço 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. |
Se você desejar 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:
Campo | Definição | Valor para fornecer |
---|---|---|
workerId | O ID do trabalhador móvel para quem a tarefa está sendo atribuída (workers.OBJECTID a partir da camada Workers) | OBJECTID do trabalhador móvel que você está atribuindo |
assignedDate | A data e hora quando 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 Assignments são gerenciados pela plataforma ArcGIS, incluem os campos que são marcados como parte dos campos do ArcGIS ou Editor Tracking no diagrama de esquema. Você não deve fornecer ou modificar seus valores.
Atribuir tarefas pelo REST API
Na seção anterior você aprendeu como criar uma tarefa atribuída. Aqui, você verá como atribuir uma tarefa existente. Utilize o comando de REST API Atualizar Feições, passando no vetor de feições para ser atualizado. Para cada feição, você precisará fornecer estes três campos para atribuir ou reatribuir uma tarefa:
Campo | Definição | Valor para fornecer |
---|---|---|
status | O status da tarefa a partir de valores no domínio Assign_Status |
|
workerId | O ID do trabalhador móvel para quem a tarefa está sendo atribuída (workers.OBJECTID a partir da camada Workers) | OBJECTID do trabalhador móvel que você está atribuindo |
assignedDate | A data e hora quando 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 que atribui a tarefa, se diferente do despachante que a criou (dispatchers.OBJECTID a partir da camada Dispatchers) | Pode ser o ID do despachante para o usuário organizacional do ArcGIS que você está conectado ou pode ser o ID de um despachante particular associado com o projeto |