Crear y construir un paquete personalizado con IntelliJ
Utilice Eclipse para compilar un archivo JAR que puede cargar como paquete a su Control Room en Automation 360.
Antes de empezar
Se requiere una comprensión básica de JDK y Java IntelliJ para crear un paquete de acción. Debe contar con el siguiente software:
- Descargas del kit de desarrollo 11 de Java SE
- Java IDE (Community Edition de IntelliJ).
- Automation Anywhere A2019 SDK. Descargue y extraiga los archivos comprimidos para la versión que necesita: Notas de lanzamiento del kit de desarrollo del paquete A2019 de Enterprise
Procedimiento
-
Descomprima el contenido del paquete SDK en su directorio IdeaProjects y cambie el nombre de la carpeta de A2019.10-package-sdk-1.0.0 a MetricToImperial.
De manera predeterminada, el paquete se encuentra en: C:\Users\<User>\IdeaProjects.
- En IntelliJ IDEA, vaya a Archivo > Abrir y abra el proyecto en C:\\Users\<User>\IdeaProjects\\MetricToImperial.
-
Desde el interior del proyecto, abra el archivo settings.gradle. Establezca el
rootProject.name = 'MetricToImperial'
- Actualice el archivo package.template ubicado en src > main > resources > package.template.
- Cambie el nombre del paquete de A2019DemoPackage a MetricToImperial.
-
Actualice el nombre del paquete en locales json: vaya a src > main > resources > locales > en_US.json.
-
Abra el archivo en_US.json y actualice el campo etiqueta requerida. Actualice la descripción opcional.
en_US.json original en_US.json actualizado { "label" : "A2019DemoPackage", "description" : "Provides actions for A2019DemoPackage operations." }
{ "label" : "Metric To Imperial", "description" : "Converts lengths and distances from Metric format to Imperial format" }
- Elimine todas las demás líneas restantes del archivo en_US.json.
-
Abra el archivo en_US.json y actualice el campo etiqueta requerida. Actualice la descripción opcional.
-
Cree una nueva clase de Java, haga clic con el botón derecho del ratón en el paquete metrictoimperial.commands y seleccione Nueva > clase de Java. Introduzca el nombre para la nueva clase CMtoINCH:
-
Abra la clase CMtoINCH. Copie y pegue el siguiente código sobre la declaración de definición de clase:
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 de la clase CMtoINCH, copie y pegue el siguiente 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);
El código importa automáticamente espacios de nombres en función de las anotaciones y los tipos de datos.Para importar manualmente espacios de nombres, seleccione una línea resaltada y presione estas teclas simultáneamente alt y la tecla Intro.
-
Abra la clase CMtoINCH. Copie y pegue el siguiente código sobre la declaración de definición de clase:
-
Vaya a src > main > resources > locales > en_US.json y agregue los siguientes campos después de los valores de etiqueta y descripción:
"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"
- Vaya a src > main > java > com.automationanyhwere.botcommand, y elimine el paquete sample.commands. Además, elimine el paquete de muestras.
-
Actualice la anotación CommandPkg.
- Descargue ruler_icon.svg desde github y haga clic con el botón derecho del ratón en la imagen y guarde la imagen como ruler_icon.svg.
- Descargue iconwhite.svg desde github, haga clic con el botón derecho del ratón en la imagen y guarde la imagen iconwhite.svg.
- Copie ambos archivos en la carpeta src > main > resources > icons.
-
Abra el archivo build.gradle en la raíz del proyecto. Después de la sección de dependencias, pero antes de la última etiqueta de cierre, copie y pegue el siguiente 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" }
-
En el explorador de proyectos, haga clic con el botón secundario en src y seleccione Nuevo > Directorio.
- En el campo Nombre, ingrese test\java o seleccione la sugerencia test\\java de los Conjuntos de fuentes de gradación.
- Haga clic con el botón derecho en el directorio de java y seleccione Nuevo > paquete.
- Introduzca el nombre del paquete recién creado: com.automationanywhere.botcommand.metrictoimperial.commands.
- Haga clic con el botón derecho en el nuevo paquete y seleccione Nueva > clase de Java. Introduzca el nombre para la nueva clase CMtoINCHTest.
-
Dentro de la clase CMtoINCHTest, copie y pegue el siguiente 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); }
- Guarde el proyecto Archivo > Guardar todo.
-
Diseñar el paquete.
Puede utilizar la IU de IntelliJ o la línea de comandos. Si está usando la línea de comandos:
- Abra una ventana de terminal y navegue hasta el directorio MetricToImperial e ingrese: cd "%USERPROFILE%\IdeaProjects\MetricToImperial"
- Para construir el proyecto, ingrese el siguiente comando: gradlew.bat clean build shadowJar
Aparece un mensaje COMPILACIÓN CORRECTA.A veces, una compilación puede fallar porque los archivos existentes no se pudieron eliminar automáticamente y aparece un mensaje del sistema que indica que la ejecución falló para la tarea: limpiar. Si esto ocurre, cierre las ventanas del explorador y vuelva a ejecutar la compilación.