Esta postagem é sobre aproveitar o ArcGIS Enterprise 10.8.1 com a extensão ArcGIS Data Interoperability para compartilhar ferramentas web Spatial ETL dentro da sua organização. O aspecto 'avançado' é que estaremos movendo dados usando uma conexão web para uma plataforma web habilitada por um pacote FME, além de adicionarmos uma etapa de notificação por webhook para diversão.<\/P>
<\/P>
No meu workshop técnico sob demanda para UC 2020, demonstrei como criar uma ferramenta web que realiza uma conversão de formato por serviço web, um caso clássico de uso do Data Interoperability combinado com o poder de compartilhamento do ArcGIS Enterprise. No entanto, o Data Interoperability evoluiu de ser uma fundição de formatos para ser uma solução genérica para integração sem código pela web, então nesta postagem mostrarei como construir uma ferramenta web que leva dados não nativos até uma plataforma web. Estou lendo dados de evento XY da tabela do Microsoft Access e escrevendo em features hospedadas no ArcGIS Online, mas leia nas entrelinhas e entenda que os dados poderiam ir para qualquer plataforma ou aplicativo na nuvem com a mesma facilidade. De certa forma, mover dados para a web é um ajuste melhor para ferramentas Spatial ETL, pois leitores e escritores FME trabalham com contêineres ou workspaces, por exemplo, um geodatabase, que não é um parâmetro válido de saída de serviço de geoprocessamento que pode ser retornado a um cliente. Isso pode ser feito, por exemplo, compactando saídas de file geodatabase, mas se você tem uma plataforma web disponível, use-a, os dados são mais úteis na web do que como arquivos locais.<\/P>
<\/P>
Ferramentas web são um novo nome para serviços de geoprocessamento. O fluxo original para publicar serviços de geoprocessamento usando um item de histórico e uma conexão administrativa a um servidor independente ainda está disponível no ArcGIS Pro 2.6, mas mostrarei o novo paradigma de compartilhar uma ferramenta web em um portal. Você compartilha uma ferramenta Spatial ETL como uma ferramenta web a partir de um item de histórico assim como qualquer outra ferramenta, mas com duas considerações especiais:<\/P>
<\/P>
- O workspace FME fonte do Spatial ETL deve estar embutido e não externo à ferramenta<\/LI>
- Parâmetros de entrada devem ser definidos como tipos simples como Nome do Arquivo (Existente), Texto ou Escolha<\/LI>
<\/UL>
<\/P>
A primeira condição ajuda na embalagem da ferramenta no momento da publicação, a segunda ajuda a manter o comportamento dos parâmetros da ferramenta publicada simples. Você pode ter que refatorar sua ferramenta ETL no momento da autoria para alcançar essas simplificações. Por exemplo, aqui estou mostrando versões antes e depois de um parâmetro de entrada do Microsoft Access. A configuração padrão permite selecionar múltiplos arquivos com uma grande escolha de extensões de tipo de arquivo, meu comportamento desejado é um único arquivo com apenas extensões .mdb e .accdb.<\/P>
<\/P>
Parâmetro Padrão do Leitor do Banco de Dados Access<\/STRONG><\/P>
<\/P>
<\/P>
Parâmetro Modificado do Leitor do Banco de Dados Access<\/STRONG><\/P>
<\/P>
<\/P>
<\/P>
Conceitual e graficamente minha ferramenta ETL é simples. Meu cenário é que estou trabalhando para a Fako Mining, que faz planejamento de furos com um app Access e registra localizações dos furos como latitude & longitude em uma tabela. Clique para expandir a captura de tela abaixo ou edite a ferramenta extraída do anexo do blog. O fluxo dos dados é:<\/P>
<\/P>
Ler uma tabela do banco Access que tem campos XY<\/LI>
Escrever (ou substituir) uma camada hospedada de pontos no ArcGIS Online<\/LI>
Disparar um webhook que notifica um canal Microsoft Teams que os novos dados estão disponíveis<\/LI>
<\/UL>
<\/P>
Existem três marcadores no workspace, no azul qualquer serviço existente é deletado (estou criando serviços nomeados pela data do processamento), no verde os dados Access são lidos e convertidos em uma classe de feição pontual em um file geodatabase compactado, e no bege o file geodatabase é publicado e compartilhado com um grupo e por fim o webhook enviado. O conceito é que membros Online são membros de um canal Teams e serão notificados quando os dados estiverem disponíveis. Enquanto você inspeciona o workspace pense em quanto código isso levaria se fosse scriptado...<\/P>
<\/P>
<\/P>
<\/P>
A função chave nisso é o transformador ArcGISOnlineConnector que faz o trabalho de publicar e compartilhar o file geodatabase compactado. É um download do FME Hub e precisa ser provisionado no servidor, além disso usa uma conexão web que também precisa ser provisionada no servidor.<\/P>
<\/P>
Primeiro, configure seu servidor. Instale e licencie o ArcGIS Data Interoperability for Server, certifique-se que seu servidor está federado ao seu portal, gere e importe certificados para portal e servidor etc. NÃO instale ArcGIS Data Interoperability for Pro no seu servidor, você terá falhas na licença e nas ferramentas.<\/P>
<\/P>
Uma vez instalado o Data Interoperability, faça login no servidor como o usuário local da conta ArcGIS Service (por padrão chamado 'arcgis') e confirme que você pode abrir o aplicativo Workbench neste caminho:<\/P>
<\/P>
C:\\Program Files\\ESRI\\Data Interoperability\\Data Interoperability AO11\\fmeworkbench.exe<\/STRONG><\/P>
<\/P>
Enquanto estiver logado no servidor como arcgis, crie um compartilhamento com o caminho abaixo e dê controle total ao usuário do domínio (presumivelmente você) que publicará a ferramenta web e possui a conexão web usada no ArcGISOnlineConnector.<\/P>
<\/P>
\\<machinename>\\Users\\arcgis\\AppData\\Roaming\\Safe Software\\FME<\/STRONG><\/P>
<\/P>
Da máquina autora e como autor da publicação, abra o compartilhamento. Aqui está como parece no meu laptop:<\/P>
<\/P>
<\/P>
<\/P>
Nao se preocupe se os arquivos no seu compartilhamento forem diferentes dos meus, eles logo estarão alinhados.<\/P>
<\/P>
Agora vamos provisionar o Pacote FME para ArcGISOnlineConnector e a conexão web usada por ele no servidor. Baixe a versão atual do pacote para o compartilhamento. Ainda da máquina autora, abra o Workbench e depois a caixa de diálogo FME Tools na visualização Caminhos Padrão. Observe (anote!) o diretório do perfil para Caminho dos Dados, é a pasta onde as conexões web são armazenadas. Você irá alterá-lo temporariamente em seguida.<\/P>
<\/P>

Maneira pela qual as conexões web e banco são compartilhadas é que o proprietário copia os arquivos fme_connections.data e fme_publicKey.jceks do Caminho dos Dados para uma pasta compartilhada (no nosso caso o compartilhamento acima, que também é o local padrão onde o usuário arcgis armazenará conexões web), redireciona o Caminho dos Dados para usar esse novo local, abre a visualização Conexões Web das ferramentas FME (FME Tools) e seleciona as conexões web para serem tornadas públicas. Depois disso reverte o Caminho dos Dados ao padrão original para o usuário autor. O usuário servidor arcgis deve ter acesso de gravação aos dados copiados. Se seu servidor não estiver na sua rede pode ser mais fácil usar a metodologia exportar/importar para compartilhamento das credenciais.
A seguir como usuário arcgis, logado no servidor abra Workbench pelo caminho dado acima e arraste o arquivo safe.esri-agol-1.1.4.fpkg (a versão pode mudar) do compartilhamento emC:\Users\arcgis\AppData\Roaming\Safe Software\FME, para dentro da tela para instalá-lo. Verifique seFME Tools>Web Connections<\/STRONG> vê a conexão web com o ArcGIS Online. Crie um espaço de trabalho de teste que faça uma conexão web e use um ArcGISOnlineConnector para listar o conteúdo de uma pasta de conteúdos - o download do blog tem um exemplo <STRONG>TestWebConnection.fmw<\/STRONG>. Se tudo funcionar, o servidor está pronto para ação!<\/P>
<P> <\/P>
<P>Execute sua ferramenta Spatial ETL como uma ferramenta para que um item de histórico seja criado. Então clique com o botão direito no item de histórico e compartilhe-o como uma ferramenta web. Aqui está minha experiência:<\/P>
<P> <\/P>
<P><IMG style="display: block; margin-left: auto; margin-right: auto;" class="j-img-centered jive-image image-8" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503874_pastedImage_6.png" border="0" \/><\/P>
<P> <\/P>
<P>Permita uploads, torne assíncrono, defina o nível da mensagem <STRONG>Info<\/STRONG>, isso exibirá mensagens de processamento do espaço de trabalho.<\/P>
<P> <\/P>
<P><IMG style="display: block; margin-left: auto; margin-right: auto;" class="image-9 j-img-centered jive-image" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503875_pastedImage_7.png" border="0" \/><\/P>
<P> <\/P>
<P>Não esqueça de editar o(s) parâmetro(s) da ferramenta - clique no ícone da caneta. Pode ser necessário fazer isso duas vezes para que fique 'fixo'.</P>
<P> </P>
<P><IMG style="display: block; margin-left: auto; margin-right: auto;" class="j-img-centered jive-image image-10" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503876_pastedImage_8.png" border="0" \/></P>
<p> </p>
<p>>Ele irá analisar com um aviso, isso é normal para ferramentas Spatial ETL.</p>
<p> </p>
<p>><img style="display: block; margin-left: auto; margin-right: auto;" class="image-11 j-img-centered jive-image" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503878_pastedImage_9.png" border="0" \/></p>
<p> </p>
<p>>Após a publicação da ferramenta web, abra o painel Catálogo no conteúdo do portal e execute sua ferramenta. A minha gera um aviso relacionado ao manuseio de algum sistema de coordenadas, mas vou aceitar a vitória. Por design, não há feições exibidas como saída pois não há gravador no espaço de trabalho, meus dados foram para o ArcGIS Online cortesia do ArcGISOnlineConnector. O log mostra que o processamento intermediário funcionou conforme esperado.</p>
<p> </p>
<p>><img style="display: block; margin-left: auto; margin-right: auto;" class="image-12 j-img-centered jive-image" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503960_pastedImage_1.png" border="0" \/></p>
<p> </p>
<p>><b>Teams</b> me mostra que o webhook foi acionado, que é a última parte do processamento da ferramenta web, e me dá uma URL de serviço então <i>algo</i> está lá.... Dê uma olhada no que está no transformador <b>HTTPCaller</b> para ver como eu coloquei uma imagem na carga útil do webhook (é um item de imagem público no Online).</p>
<p> </p>
<p>><img style="display: block; margin-left: auto; margin-right: auto;" class="j-img-centered jive-image image-14" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503962_pastedImage_3.png" border="0" \/></p>
<p> </p>
<p>>Bingo, meus dados carregam no meu mapa!</p>
<p> </p>
<p>><img style="display: block; margin-left: auto; margin-right: auto;" class="image-13 j-img-centered jive-image" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/503961_pastedImage_2.png" border="0" \/></p>
<p> </p>
<p>>Então esse é o ciclo completo, eu tenho uma ferramenta web que qualquer pessoa na minha organização pode usar para publicar camadas de feição hospedadas a partir de uma tabela de banco de dados Access, com o toque adicional de notificações automatizadas.</p>