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 Pacote 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 o samples.commands e exclua 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 na 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.
  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 Novo > 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