Criar e construir um pacote personalizado usando IntelliJ
Use o IntelliJ para compilar um arquivo JAR que você pode carregar como um pacote para o 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. Você precisa dos seguintes softwares e arquivos:
- Downloads do Kit de desenvolvimento Java SE 11
- Java IDE Community edition do IntelliJ
- Automation Anywhere SDK A2019. Baixe e extraia os arquivos compactados zip para a versão que você precisa: Notas de versão do kit de desenvolvimento de pacotes do Enterprise A2019
Procedimento
-
Descompacte o conteúdo do pacote do SDK no diretório IdeaProjects e renomeie a pasta de A2019.10-package-sdk-1.0.0 para MetricToImperial.
Por padrão, o pacote está localizado em: C:\Users\<User>\IdeaProjects.
- No IntelliJ IDEA, vá para Arquivo > Abrir e abra o projeto em C:\Users\<User>\IdeaProjects\MetricToImperial.
-
Dentro da raiz do projeto, abra o arquivo settings.gradle. Definir o
nome.projeto.raiz = 'MétricaparaImperial'
- Atualize o arquivo package.template localizado em src > main > resources > package.template.
- Altere o nome do pacote de A2019DemoPackage para MetricToImperial.
-
Atualize o nome do pacote em locais json: vá para src > main > resources > locales > en_US.json.
-
Abra o arquivo en_US.json e atualize o campo de rótulo obrigatório. Atualize a descrição opcional.
Versão original en_US.json en_US.json atualizado { "label" : "A2019DemoPackage", "description" : "Provides actions for A2019DemoPackage operations." }
{ "label" : "Metric To Imperial", "description" : "Converts lengths and distances from Metric format to Imperial format" }
- Exclua todas as outras linhas restantes no arquivo en_US.json.
-
Abra o arquivo en_US.json e atualize o campo de rótulo obrigatório. Atualize a descrição opcional.
-
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:
-
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 = "CM to Inch", 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)
- 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);
O código importa automaticamente namespaces com base nas anotações e nos tipos de dados.Para importar manualmente namespaces, selecione uma linha realçada e pressione essas teclas simultaneamente alt e a tecla enter.
-
Abra a classe CMtoINCH. Copie e cole o seguinte código acima da instrução de definição de classe:
-
Vá para 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"
- Vá para src > main > java > com.automationanyhwere.botcommand e exclua o pacote samples.commands. Além disso, exclua o pacote de amostras.
-
Atualize a anotaçãoCommandPkg.
- Faça o download de ruler_icon.svg do github e clique com o botão direito do mouse na imagem e salve a imagem como ruler_icon.svg.
- Faça o download de iconwhite.svg do github, clique com o botão direito do mouse na imagem e salve o ícone de imagem iconwhite.svg.
- Copie ambos os arquivos na pasta de ícones de recursos principais > do > > src.
-
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" }
-
No explorador de projetos, clique com o botão direito do mouse em src e selecione New > Directory.
- No campo Nome insira test\\java, ou selecione a sugestão de test\\java nos Conjuntos de fontes Gradle.
- Clique com o botão direito do mouse no diretório java e selecione Novo > pacote.
- Digite o nome do pacote recém-criado: com.automationanywhere.botcommand.metrictoimperial.commands.
- Clique com o botão direito do mouse no novo pacote 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); }
- Salve o projeto Arquivo > Salvar tudo.
-
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:
- Abra uma janela de terminal e navegue até o diretório MetricToImperial e digite: cd %USERPROFILE%"\\IdeaProjects\\MetricToImperial"
- Para compilar o projeto, insira o seguinte comando: gradlew.bat clean build shadowJar
Uma mensagem COMPILAR 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: clean. Se isso ocorrer, feche as janelas do explorer e execute a compilação novamente.