Ir para o conteúdo

Melhores Práticas de Harmony

Introdução

Este documento serve como um guia geral para usar a plataforma de integração Harmony da Jitterbit como serviço (iPaaS). Ele fornece orientações de melhores práticas para cenários de integração comuns e recomendações usando as ferramentas disponíveis. Este documento não é abrangente e não cobre todos os cenários.

Este documento é destinado a usuários do Cloud Studio, a versão baseada na web do aplicativo de design de projetos da Jitterbit. Para melhores práticas usando Design Studio, o aplicativo de design de projetos baseado em desktop da Jitterbit, consulte Práticas recomendadas com o Design Studio.

Melhores práticas para Vinyl, a plataforma de aplicativos de baixo código (LCAP) da Jitterbit, são abordados separadamente.

Você já deve estar familiarizado com Harmony e Cloud Studio a partir dos seguintes recursos:

Nesse ponto, você deve conhecer os conceitos e termos básicos usados no Harmony e entender o que queremos dizer com projetos, operações, endpoints, scripting, migração e implantação.

Consulte os Recursos Adicionais no final desta página para links para vídeos e outros documentos que expandem essas práticas recomendadas com o Harmony.

Use Suporte, Gerentes de Sucesso do Cliente e Documentação

O acesso ao suporte Jitterbit está incluído como parte de uma licença de cliente Harmony. Quando surgirem dúvidas ou problemas técnicos, você pode obter assistência especializada do suporte da Jitterbit usando o Portal de suporte da Jitterbit ou por email. O Suporte Jitterbit descreve instruções especiais para situações de interrupção da produção, a fim de escalar problemas urgentes.

Você também pode entrar em contato com seu Gerente de sucesso do cliente (CSM) com questões relacionadas ao licenciamento ou outros tópicos.

Este site de documentação (Central de Sucesso da Jitterbit) e nosso site de documentação do desenvolvedor (Portal do desenvolvedor da Jitterbit) contêm mais de 2.300 URLs exclusivos de material técnico.

Para ajudá-lo a localizar material relevante, a caixa de pesquisa é pré-filtrada para limitar os resultados da pesquisa à seção da documentação que está sendo acessada no momento. Você pode pesquisar toda a documentação limpando o filtro de pesquisa. Para pesquisar frases específicas, coloque-as entre aspas duplas.

Receitas e Modelos

O Marketplace fornece mais de 400 receitas e modelos prontos do Cloud Studio para usar como base para projetos de integração:

  • Uma receita de integração move dados em uma direção entre objetos em dois aplicativos ou sistemas.

  • Um modelo de processo acelera a execução de um processo de negócios específico usando vários objetos em vários aplicativos ou sistemas. Os modelos de processo são projetados para reduzir o tempo de implantação em 50 a 80 por cento.

Atualizações de Produtos Jitterbit

As atualizações do Harmony são lançadas com frequência (consulte Cronograma de lançamento). Mesmo uma versão menor contém novos recursos e melhorias, juntamente com correções de bugs.

Aplicativos em nuvem acessados através do Portal Harmony são atualizados automaticamente e sempre executam a versão mais recente lançada.

Gateway de API em Nuvem e Grupo de Agentes em Nuvem as atualizações são aplicadas automaticamente. Para os Grupos de Agentes em Nuvem, existem dois conjuntos: Produção e Sandbox. O último conjunto é usado para testar a compatibilidade com pré-lançamentos de software de agente e não é um ambiente de desenvolvimento.

Os aplicativos instalados localmente são atualizados baixando e executando um instalador:

É aconselhável manter-se atualizado com os lançamentos, especialmente os lançamentos que incluem atualizações de recursos.

Simplicidade do Design do Projeto e Preferência de Recursos

Durante o processo de criação de um projeto de integração, você poderá encontrar vários métodos de implementação que podem resultar na mesma funcionalidade.

Embora muitas vezes haja vantagens ou desvantagens de um método em relação a outro, dependendo do caso de uso de integração (conforme documentado), recomendamos sempre manter em mente o princípio orientador abrangente da simplicidade. Projetos concebidos da forma mais simples possível geralmente têm maior longevidade e são muito mais fáceis para alguém de fora se atualizar caso seja necessária uma mudança. Por outro lado, projetos excessivamente complexos podem ser mais difíceis de manter e transferir para terceiros durante uma transição de responsabilidades.

Para projetar projetos mais simples, recomendamos a seguinte ordem de preferência de recursos:

  1. Use recursos sem código sempre que possível, como projetar visualmente operações na quadro de design, agrupando componentes juntos para ajudar a organizá-los, adicionando tags e comentários ao implantar e publicar operações como APIs.
  2. Aproveite os recursos de baixo código, como o uso de variáveis nas telas de configuração de componentes baseadas em assistente ou manipular dados em nível de campo em um mapeamento de transformação usando uma função de script.
  3. Conforme necessário, implemente lógica mais complexa usando scripts escritos em Jitterbit Script linguagem.
  4. Somente quando um equivalente do Jitterbit Script não estiver disponível, implemente scripts em JavaScript.

Design de Projeto e Reutilização

Um cenário típico para reutilizar um projeto envolve o desenvolvimento de um projeto inicial com o uso extensivo de variáveis globais e, especialmente, variáveis do projeto. Itens configuráveis — como credenciais de endpoint, mapeamentos de campos opcionais, consultas parametrizadas, endereços email e nomes de arquivos — podem ser expostos como variáveis de projeto. O projeto inicial também pode conter funções comuns, como tratamento de erros ou uso de caches em todo o ambiente. O projeto inicial é exportado e depois importado para novos projetos para formar uma base consistente para desenvolvimento.

Reutilização de Endpoint

Endpoints, criados configurando uma conexão e atividades associadas usando conectores, são frequentemente usados em operações. No entanto, um endpoint exclusivo não precisa necessariamente ser criado para cada operação. Como as configurações de atividade aceitam variáveis para caminhos e nomes de arquivos, os endpoints genéricos podem ser criados uma vez e depois configurados dinamicamente usando variáveis globais e de projeto.

Por exemplo, suponha que um HTTP a conexão e uma atividade associada são criadas, e a configuração da atividade especifica um caminho definido por uma variável global, como $gv_http_path. Um script de controlador pode ser usado para preencher o $gv_http_path como requerido.

Outro exemplo é uma atividade Database Query com uma condição. Isso é WHERE condição pode ser atribuída a uma variável global, como $gv_database_condition.

A maioria dos endpoints tem a capacidade de ser configurada usando variáveis.

Reutilização de Script

Scripts autônomos que executam uma função específica, como retornar uma consulta de banco de dados ou calcular um resultado de uma série de argumentos, podem ser candidatos à reutilização, especialmente se usados em múltiplas operações.

Por exemplo, se um script usa o DBLookup função em uma tabela de banco de dados, e esta função é usada em todo o projeto, então um script independente (separado de uma operação) pode ser construído. Usando o ArgumentList função ou variáveis globais simples, o script pode aceitar argumentos e retornar um resultado. Como cada cadeia de operação tem um escopo diferente, o mesmo script pode ser chamado com segurança a partir de várias operações simultâneas.

Organização do Projeto

Workflows são usados como meio de organização do projeto. Um workflow normalmente contém operações relacionadas que processam dados do início ao fim: Criar pedidos, Sincronizar mestre de clientes, Confirmações de processos, etc. Processos que são comuns em diferentes workflows, como consultar um endpoint ou tratar uma condição de erro de operação, podem ser mantidos em seus próprio workflow e referido por outras operações de workflow.

Você também pode criar grupos personalizados onde os componentes do projeto podem ser coletados para facilitar a referência.

Os números atribuídos às operações que aparecem no designer de projetos são atribuídos automaticamente e baseiam-se na posição de exibição da operação no designer de projetos. Esses números não são mostrados nos logs de operação. Se for necessário um esquema de numeração de operação, ele poderá ser implementado incorporando a numeração ao nome da operação.

Gerenciar Operações Assíncronas

Ao usar o RunOperation função em seu modo assíncrono, as operações são executadas sem retornar o controle para a função de chamada. O uso de operações assíncronas pode levar a condições de corrida.

Por exemplo, se a Operação A atualizar uma tabela de banco de dados e for encadeada à Operação B, que lê a mesma tabela (ambas são síncronas), nenhuma condição de corrida será encontrada. Mas se a Operação A for chamada de forma assíncrona seguida imediatamente pela Operação B, então B poderá ser executada antes de A ser concluída.

Além disso, o número de chamadas assíncronas simultâneas deve ser gerenciado, pois o número de operações simultâneas executadas em um agente é limitado (consulte o [[OperationEngine]](/pt/agent/private-agents/private-agent-how-tos/edit-the-configuration-file-jitterbit-conf#editingtheconfigurationfilejitterbit.conf-operation-engine) seção do arquivo de configuração do Agente Privado).

Credenciais de Endpoint

Recomendamos usar um ID do sistema com permissões de administração para credenciais de endpoint, em vez de um ID no nível do usuário. Os IDs de usuário normalmente expiram ou precisam ser desativados quando um usuário sai da empresa.

Ao usar variáveis de projeto (cujos valores podem ser ocultos) para gerenciamento de credenciais, um administrador da organização Harmony não precisa inserir credenciais de produção. Ao configurar as permissões de usuário apropriadas, um usuário pode aplicar as credenciais de produção por meio do Management Console Projetos página.

Se estiver usando Agentes Privados, como alternativa ao Management Console, as variáveis globais podem ser gerenciadas usando o [[PredefinedGlobalVariables]](/pt/agent/private-agents/private-agent-how-tos/edit-the-configuration-file-jitterbit-conf#editingtheconfigurationfilejitterbit.conf-predefinedglobalvariables) seção do arquivo de configuração do Agente Privado.

Dados de Integração Persistentes

Existem vários métodos para armazenar dados na nuvem Harmony, incluindo o uso de variáveis de projeto, funções de cache em nuvem ou armazenamento temporário.

Variáveis do Projeto

Variáveis de projeto são variáveis estáticas pré-inicializadas que podem ser consideradas constantes de projeto. Eles podem ser editados no Cloud Studio (consulte Variáveis do projeto) ou o Management Console (consulte Projetos).

Um exemplo de uso de variáveis de projeto é para credenciais de endpoint. Ao usar variáveis de projeto, diferentes ambientes de endpoint (que geralmente possuem credenciais diferentes) podem ser aplicados a diferentes ambientes do Harmony e editado por meio do Management Console. Isso permite um processo de negócios em que um usuário com direitos do Management Console pode alterar credenciais sem precisar de acesso ao Cloud Studio e ao designer do projeto.

Um segundo exemplo é usar variáveis de projeto para armazenar sinalizadores usados pela lógica de integração que podem personalizar o comportamento da integração. Se um único projeto for desenvolvido, mas usado para endpoints diferentes, uma variável booleana do projeto (como Send_PO_Number) poderá ser verificada pela lógica da transformação para o campo PO Number. Se o valor da variável do projeto for falso, então o UnMap A função poderia ser usada para "desligar" esse campo e não incluí-lo em uma transformação relevante.

Funções de Cache em Nuvem

As funções de cache em nuvem ReadCache e WriteCache são usados para atribuir espaços de dados que estão disponíveis em projetos e ambientes. Um valor armazenado em cache fica visível para todas as operações em execução no mesmo escopo até expirar, independentemente de como a operação foi iniciada ou em qual agente ela é executada. Armazenando dados em cache no Harmony, em vez de depender de armazenamentos de dados locais ou específicos do agente, como Armazenamento temporário, os dados podem ser compartilhados entre operações separadas e entre projetos.

Estes são usos adicionais do cache em nuvem:

  • Os dados podem ser compartilhados entre operações assíncronas dentro de um projeto.
  • Erros gerados em diferentes operações podem ser armazenados em um cache comum. Ao acumular resultados operação dessa maneira, alertas mais abrangentes podem ser criados.
  • Os tokens de login podem ser compartilhados entre operações.

Gerenciar Armazenamento Temporário

Armazenamento temporário endpoints são frequentemente usados em operações tanto em Cloud quanto em Agentes Privados. Eles são distintos de Armazenamento local endpoints, que só podem ser usados em Agentes Privados.

Ao usar um endpoint de armazenamento temporário, os arquivos temporários são gravados e lidos no diretório temporário do sistema operacional padrão no agente que está executando o trabalho:

  • No caso de um único Agente Privado, o diretório de armazenamento temporário é o diretório temporário padrão do servidor do Agente Privado.
  • Se você estiver usando mais de um Agente Privado, agrupado em um Grupo de Agentes Privados, o diretório de armazenamento temporário é o diretório temporário padrão do servidor de Agente Privado específico que está fazendo o trabalho.
  • Como os Agentes em Nuvem são agrupados em um Grupo de Agentes em Nuvem, o diretório de armazenamento temporário é o diretório temporário padrão do servidor de Agente em Nuvem específico que está fazendo o trabalho.

Em um Grupo de Agentes agrupados ( Agentes em Nuvem), desde que as operações que usam o armazenamento temporário estejam vinculadas (encadeadas), todas as leituras e gravações do armazenamento temporário acontecerão no mesmo servidor do agente. No entanto, se Chain A gravar em seu armazenamento temporário myfile e Chain B lê seu armazenamento temporário myfile, e as duas cadeias não estão encadeadas uma à outra, a ação de leitura de armazenamento temporário em Chain B pode não ser lida pelo mesmo agente que Chain A.

Ao usar o armazenamento temporário, lembre-se destas diretrizes:

  • Ao usar Agentes Privados, para tornar seu projeto à prova de atualização, use armazenamento temporário de forma que a mudança de um único Agente Privado para um Grupo de Agentes com vários agentes não exija refatoração.

  • Ao usar um Grupo de Agentes agrupados ( Agentes em Nuvem), para garantir que o servidor do agente onde o armazenamento temporário é gravado seja o mesmo servidor de onde o armazenamento temporário será lido, certifique-se de que quaisquer referências ao armazenamento temporário Leiam* As atividades * e **Write estão na mesma cadeia de operação.

  • O armazenamento temporário em Agentes Privados é excluído após 24 horas por padrão pelo Jitterbit File Cleanup Service. A frequência do serviço de limpeza pode ser configurada através do arquivo de configuração do Agente Privado debaixo de [FileCleanup] seção. No entanto, nos Agentes em Nuvem, os arquivos temporários podem ser excluídos imediatamente.

  • Os Agentes em Nuvem têm um limite de tamanho de arquivo de armazenamento temporário de 50 GB por arquivo. Arquivos temporários maiores que 50 GB só são possíveis ao usar Agentes Privados.

  • Ao gravar no armazenamento temporário, o padrão é sobrescrever os arquivos. Isso pode ser alterado com a caixa de seleção Anexar ao arquivo em uma atividade de gravação de armazenamento temporário. Normalmente, isso exige que, após a leitura da fonte, o arquivo seja excluído ou arquivado. Uma maneira simples de fazer isso é usar as opções de pós-processamento Excluir arquivo ou Renomear arquivo em uma atividade de leitura de armazenamento temporário.

  • Palavras-chave do nome do arquivo estão disponíveis e podem ser usados ao criar um nome de arquivo.

  • Um arquivo em armazenamento temporário pode ser lido construindo um script com o ReadFile função. Por exemplo: ReadFile("<TAG>activity:tempstorage/Temporary Storage/tempstorage_read/Read</TAG>"). Tenha em mente que isso só funciona de forma confiável se houver um único Agente Privado.

Em alguns casos, pode ser vantajoso usar uma Variável em vez de um endpoint de armazenamento temporário. Consulte Armazenamento variável versus armazenamento temporário em Variável Global versus Armazenamento Temporário para uma comparação entre esses dois tipos diferentes e para recomendações sobre quando cada um é apropriado.

Scripts

Scripts escritos em Jitterbit Script linguagem ou JavaScript pode ser usado em praticamente qualquer lugar nas operações e nos mapeamentos de transformação.

Quando Usar Scripts

As operações podem ser organizadas em cadeias de operação de duas maneiras: (1) vinculando operações usando as condições On Success e On Fail usando ações de operação, ou (2) usando um controller script.

Em vez de usar ações de operação, um script de controlador usa o RunOperation função para vincular operações usando um script.

Para capturar uma operação com falha, o If função pode ser usada em conjunto com RunOperation. Por exemplo: If(!RunOperation(<operation tag>),<condition>), onde a condição pode usar GetLastError para capturar o erro e pode optar por interromper todo o processo usando RaiseError e/ou execute outro processo para acumular texto de erro.

Um script de controlador pode ser benéfico em situações como estas:

  • Para executar uma operação que depende de fatores externos, como variáveis ou dados do projeto.
  • Para chamar suboperações de dentro de um loop, onde os dados são passados para a operação a partir de uma lista.
  • Rastrear atividades da cadeia de operação. Por exemplo: (WriteToOperationLog("count of records to process: " + cnt), WriteToOperationLog("Starting update operation at: " + Now()), WriteToOperationLog("Database query: " + sql), etc.)

Outras áreas onde os scripts são frequentemente usados estão nos campos mapeados em transformações e em outros scripts independentes. Se o mesmo script estiver sendo usado em mais de uma transformação, considere configurar esse script como um script independente e chamá-lo de dentro de cada transformação usando RunScript.

Convenção de Nomenclatura para Variáveis

Harmony tem quatro tipos de variáveis:

Como o escopo de uma variável local é limitado a um único script, uma convenção de nomenclatura para elas pode ser muito simples, como todas as letras minúsculas ou uma palavra inicial, como return ou myVariable. Não são permitidos períodos em variáveis locais.

As variáveis globais, como seu escopo é maior (uma variável global está disponível para ser referenciada nas mesmas operações e scripts ou em operações abaixo dentro de uma cadeia de operação ), devem usar uma convenção de nomenclatura consistente para evitar confusão. Por exemplo, usando vários componentes para um nome de variável, separados por pontos, você poderia seguir um padrão como este:

type.category.subcategory
Componente Descrição
type Uma breve abreviatura que identifica o tipo de variável, como pv (variável do projeto), gv (variável global), io (nome da origem/destino do endpoint ), dict (dicionário), etc.
category Uma categoria lógica para a variável, como sfdc, shipearly, confirm, order, etc.
subcategory Uma subcategoria lógica para a variável, como purchase_orders, categories, ids, etc.

Combinando esses componentes, estes são possíveis nomes de variáveis:

  • $pv_shopify_base_url
  • $dict_staples_po_line_items
  • $io_request
  • $gv_sfdc_workorder_id

Como as variáveis são classificadas em ordem alfabética em vários locais da IU, organizá-las hierarquicamente ajudará no gerenciamento e no uso de variáveis.

Qualquer que seja a convenção que você escolher usar, recomendamos codificá-la e documentá-la para que todos os membros da equipe possam usá-la de forma consistente em todos os projetos.

Nota

Se você planeja usar Jitterbit Script variáveis globais em um JavaScript script, é importante usar sublinhados em vez de pontos:

  • $example_arr_names
  • $example_sfdc_success_message

Ambientes

O Harmony permite metodologias de ciclo de vida de desenvolvimento de software através do uso de ambientes. Você pode configurar ambientes de produção e não produção.

Por exemplo, suponha que um ambiente Desenvolvimento e um ambiente Produção estejam configurados no Management Console e ambos estejam associados ao mesmo Grupo de Agentes. Suponha que um projeto seja desenvolvido primeiro no ambiente_Desenvolvimento_.

O Cloud Studio tem um recurso de migração que copiará esse projeto para o ambiente_Production_, após o qual as credenciais do endpoint serão alteradas para as credenciais do endpoint Production usando variáveis de projeto. Outros endpoints de origem e destino também foram alterados. Após a migração inicial, quaisquer migrações adicionais do mesmo projeto de Desenvolvimento para Produção excluem a migração de valores de variáveis de projeto, a menos que sejam novas variáveis de projeto.

Teste

O Harmony permite o rápido desenvolvimento de integração e testes unitários, tornando visíveis os dados reais de integração durante o tempo de design. A vantagem óbvia é permitir um processo de desenvolvimento iterativo, mostrando os dados antes e depois das transformações de campo, em vez de construir a operação inteira, executá-la e inspecionar a saída. Os dados ficam visíveis usando o recurso de visualização em uma transformação.

Depois que os dados de origem de amostra forem importados ou gerados, a transformação mostrará a saída de quaisquer mapeamentos e scripts incorporados.

Solução de Problemas

Um conceito-chave para uma arquitetura de integração saudável é reconhecer que haverá questões levantadas pela empresa em relação à precisão do trabalho de integração, especialmente quando aparecerem discrepâncias nos dados do endpoint. A integração pode ou não ser culpada. Cabe ao projeto de integração fornecer um alto grau de transparência, a fim de ajudar a resolver questões sobre a precisão dos dados.

Por exemplo, se os dados em um endpoint de destino parecem estar incorretos, então normalmente o suporte de integração é chamado para fornecer detalhes sobre quaisquer ações de integração, como horários, fontes, lógica de transformação, mensagens de sucesso ou falha, etc. disponibilizando essas informações como parte padrão da arquitetura de integração. No Harmony, isso é suportado através de logging e alertando características.

Exploração Madeireira

Registros de operação capturam dados importantes por padrão, como tempos de execução de operação e mensagens de sucesso, falha ou cancelamento. Se houver falhas e o endpoint retornar informações de falha, o log capturará essas informações.

Com relação às falhas, o Harmony utiliza a resposta para fazer a determinação do status. Por exemplo, se um código de status HTTP 400 ou mais for recebido em uma resposta, o Harmony considera isso uma falha. Se a solicitação tiver status 200, mas a resposta contiver erros de dados, o Harmony tratará isso como um sucesso.

Ao desenvolver um projeto de integração, utilize o WriteToOperationLog função nos mapeamentos e scripts para capturar dados e etapas importantes do processo. Isso normalmente é tão simples quanto: WriteToOperationLog("The id is: "+sourcefieldid).

Se for desejado capturar toda a saída de uma transformação, isso pode ser feito construindo uma operação que lê a fonte, executa a transformação e grava a saída em uma Variable ou Armazenamento temporário endpoint em vez do endpoint de destino. Um script pós-operação pode ler a saída e registrá-la. Então a operação “real” pode ser executada.

Os registros podem ser visualizados na [tela de registro de operação do Cloud Studio ]](/pt/cloud-studio/cloud-studio-reference/operations/operation-logs) ou o Management Console Atividades página. O Management Console Atividades pode ser acessada pela equipe de suporte sem a necessidade de navegar até o projeto.

Os dados nos logs podem ser pesquisados. Para filtrar apenas os registros necessários, você pode usar a sintaxe de pesquisa de message=%\<your text>% nos registros de operação do Cloud Studio e do Management Console.

Freqüentemente, as APIs apresentam uma mensagem informativa de resposta de sucesso ou de fracasso. Se o registro de depurar estiver habilitado para a API, o corpo da solicitação será capturado nos logs da API (que são distintos dos logs de operação).

Os logs de operação, incluindo mensagens de log detalhadas de Agentes em Nuvem e Agentes Privados, são retidos por 30 dias pelo Harmony.

Alerta

Frequentemente, os resultados da integração não só precisam ser registrados, mas também escalonados. Notificações Email podem ser facilmente anexados a operações e caminhos de sucesso/falha ou chamados de scripts. Você pode alternativamente usar o Email para configurar uma atividade de envio Email como alvo de uma operação.

Para obter informações adicionais, consulte Configurar alertas, registros e tratamento de erros.

Recursos Adicionais

Estas seções e páginas da documentação fornecem práticas recomendadas adicionais.

Palestras Técnicas

Conversas sobre tecnologia Jitterbit são apresentações em vídeo que abrangem áreas de interesse de usuários de todos os níveis:

Conversa Técnica Duração Data de lançamento
Proxy de API 39:53 09.01.2019
APIs 49:22 07.08.2018
Cloud Studio 43:53 14.05.2019
Práticas recomendadas para orquestração de projetos complexos 50:46 16/10/2018
Construtor de Conectores 50:19 16/07/2019
Ambientes 1:04:22 04/04/2018
Armazenamento e gerenciamento de credenciais externas 46:58 2020.10.09
Práticas recomendadas para tratamento de erros 27:22 13/03/2018
Práticas recomendadas do Jitterbit 1:04:38 2020.03.16
Práticas recomendadas de registro 1:03:02 12.02.2019
Gerenciador do portal API aberto 57:21 05/11/2019
Fontes de passagem e práticas recomendadas para variáveis globais 42:44 05/12/2018
Práticas recomendadas para Agentes Privados 42:43 05/07/2018
Modelos de Processo 43:27 2020.07.08
Práticas recomendadas para organização do projeto 1:08:39 08/06/2018

Documentação

A documentação do Jitterbit inclui práticas recomendadas em nossas páginas sobre o uso de produtos Jitterbit:

Segurança

Metodologia de Projeto de Integração

  • Metodologia de Projeto de Integração
    Itens principais que um gerente de projetos de um projeto do Cloud Studio deve saber, incluindo como organizar sua equipe, reunir e validar requisitos de forma clara e concisa e aproveitar os pontos fortes do Harmony para entregar um projeto de integração bem-sucedido.

Criar Projetos

Exploração Madeireira

Agentes Privados