Criar um pacote personalizado em IntelliJ

Use o Java IntelliJ para criar e compilar um arquivo JAR que você pode carregar como um pacote para a Control Room no Automation 360.

Pré-requisitos

Uma compreensão básica do JDK e Java IntelliJ é necessária para criar um pacote de ações. Certifique-se de ter instalado os seguintes softwares e arquivos:

Procedimento

  1. Baixe a versão mais recente do Automation Anywhere Package SDK. Para obter a versão mais recente do Package SDK, consulte - Notas da versão do SDK do pacote anterior.
  2. Descompacte o conteúdo do pacote SDK para qualquer diretório local.
  3. Renomeie a pasta de A360-package-sdk-<número da versão> para MetricToImperial.
  4. No IntelliJ IDEA, vá para Arquivo > Abrir e abra o projeto em C:\<SavedLocation>\MetricToImperial.
    Arquivo IntelliJ aberto
  5. Na raiz do projeto, abra o arquivo settings.gradle. Configure o rootProject.name = 'MetricToImperial'
    Nome do projeto Setting.gradle
  6. Abra o arquivo package.template localizado em src > main > resources > package.template.
  7. Altere o nome do pacote de A360DemoPackage para MetricToImperial.
    Renomear o campo de nome Package.Template
    Clique no botão Sincronizar no IntelliJ para atualizar o projeto.
  8. Atualize o nome do pacote em locales json: vá para src > main > resources > locales > en_US.json.
    1. Abra o arquivo en_US.json e atualize o campo label necessário de A360DemoPackage para MetricToImperial. Atualize a descrição opcional.
    2. Exclua todas as outras linhas restantes no arquivo en_US.json.
  9. Exclua os pacotes de amostra, vá para src > main > java > com.automationanyhwere.botcommand e exclua samples.commands e os pacotes samples.
  10. Crie um novo pacote, clique com o botão direito do mouse sobre a pasta java e selecione Novo > Pacote. Insira o novo nome do pacote como metrictoimperial.commands.
  11. Crie uma nova classe Java, clique com o botão direito do mouse no pacote metrictoimperial.commands e selecione Nova > Classe Java. Digite o nome para a nova classe CMtoINCH:.
    1. Abra a classe CMtoINCH. Copie e cole o seguinte código acima da instrução de definição de classe:
      import static com.automationanywhere.commandsdk.model.DataType.NUMBER;
      //BotCommand makes a class eligible for being considered as an action.
      @BotCommand
      //CommandPks adds required information to be dispalable on GUI.
      @CommandPkg(
        //Unique name inside a package and label to display.
        name = "CMtoInch", label = "[[CMtoINCH.label]]",
        node_label = "[[CMtoINCH.node_label]]", description = "[[CMtoINCH.description]]", icon = "ruler_icon.svg",
        //Return type information. return_type ensures only the right kind of variable is provided on the UI.
        return_label = "[[CMtoINCH.return_label]]",
        return_type = NUMBER,
        return_required = true)
    2. Dentro da classe CMtoINCH, copie e cole o seguinte código:
    //Identify the entry point for the action. Returns a Value<String> because the return type is String.
    @Execute
    public NumberValue action(
            //Idx 1 would be displayed first, with a text box for entering the value.
            @Idx(index = "1", type = AttributeType.NUMBER)
            //UI labels.
            @Pkg(label = "[[CMtoINCH.CMInput.label]]")
            //Ensure that a validation error is thrown when the value is null.
            @NotEmpty
                    Double CMInput) {
        //Internal validation, to disallow empty inputs. No null check needed as we have NotEmpty on CMInput.
        if ("".equals(CMInput.toString().trim()))
            throw new BotCommandException("Input of CM is required");
        Number result;
        try {
            //Conversion logic
            result = CMInput * 0.393701;
        } catch (Exception e) {
            //Throw custom error message
            throw new BotCommandException("Unable to convert " + CMInput.toString() + "cm to inches");
        }
        //Return NumberValue.
        return new NumberValue(result);
        }
    Para importar os namespaces, clique nas notações vermelhas destacadas, pressione a tecla ALT+ENTER e selecione Importar, que importa automaticamente namespaces com base nas anotações e datatypes.
    Classe Java CMtoINCH
  12. Configure o arquivo en_US.json, acesse src > main > resources > locales > en_US.json e adicione os seguintes campos após os valores de rótulo e descrição:
    "CMtoINCH.label" : "cm to inches",
    "CMtoINCH.node_label": "cm to inches",
    "CMtoINCH.description" : "Convert centimeters to inches",
    "CMtoINCH.return_label" : "Assign the Output in Inches to a Number Variable",
    "CMtoINCH.CMInput.label" : "Centimeters to Convert to Inches"

    Configurar en_US.json
  13. Atualize a anotação CommandPkg. Faça o download dos ícones do Github.
    1. Faça o download de ruler_icon.svg do github, clique com o botão direito do mouse na imagem e salve a imagem como ruler_icon.svg.
    2. Faça o download de iconwhite.svg do github, clique com o botão direito do mouse na imagem e salve a imagem como iconwhite.svg.
    3. Copie ambos os arquivos para a pasta src > main > resources > icons.
      Ícones para Pod
  14. Abra o build.gradle na raiz do projeto. Após a seção de dependências, mas antes da última tag de fechamento, copie e cole o seguinte código:
    test {
       testLogging {
          exceptionFormat = 'full'
       }
       useTestNG() {}
    
       afterSuite { desc, result ->
          if (!desc.parent)
             println("${result.resultType} " +
                   "(${result.testCount} tests, " +
                   "${result.successfulTestCount} successes, " +
                   "${result.failedTestCount} failures, " +
                   "${result.skippedTestCount} skipped)")
       }
       maxHeapSize "3g"
    }
  15. Atualize o número da versão e remova as dependências que não são necessárias para seu projeto de build.gradle.
    Nota: Versões de pacotes personalizados devem aderir às especificações do Controle de versões semânticas. Uma versão válida consiste em três números (MAJOR.MINOR.PATCH) separados por pontos (.). Você pode opcionalmente incluir um identificador de pré-lançamento após a versão PATCH, separados por um hífen (-). Sublinhados (_) não são permitidos.

    Exemplos de versões de pacotes válidas:

    • 2.0.2-20210701-202149
    • 2.0.2
    • 2.0.2-test-20210701-202149
  16. Crie um novo diretório, clique com o botão direito do mouse em src e selecione Novo > Diretório.
    1. No campo Nome insira test\java, ou selecione a sugestão de test\java nos Conjuntos de fontes Gradle.
    2. Crie um novo pacote, clique com o botão direito do mouse no diretório java e selecione Novo > Pacote.
    3. Digite o nome do pacote recém-criado: metrictoimperial.commands.
  17. Crie uma nova classe Java, clique com o botão direito do mouse e selecione Nova > Classe Java. Digite o nome para a nova classe CMtoINCHTest.
    Dentro da classe CMtoINCHTest, copie e cole o seguinte código:
    @Test
    public void testCMtoINCH(){
        Double validInput = 10.00;
        Double expectedOutput = 0.393701 * validInput;
        CMtoINCH testCM = new CMtoINCH();
        Value<Double> result = testCM.action(validInput);
        Assert.assertEquals(result.get(), expectedOutput);
    }

    Classe de teste CMtoINCH
  18. Salve o projeto em Arquivo > Salvar tudo.
  19. Crie o pacote.
    Você pode usar a interface do usuário IntelliJ ou a linha de comando. Se você estiver usando a linha de comando:
    1. Abra uma janela de terminal e navegue até o diretório MetricToImperial.
    2. Para compilar o projeto, insira o seguinte comando: gradlew.bat clean build shadowJar
    Uma mensagem COMPILAÇÃO COM SUCESSO é exibida.

    Às vezes, uma compilação pode falhar porque os arquivos existentes não puderam ser excluídos automaticamente e uma mensagem do sistema aparece indicando que a execução falhou para a tarefa: limpar. Se isso ocorrer, feche as janelas do Explorer e execute a compilação novamente.

Próximas etapas

Adicionar pacote personalizado ao seu Control Room