Crear un paquete personalizado en IntelliJ

Utilice Java IntelliJ para crear y 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. Asegúrese de haber instalado los siguientes softwares y archivos:

Procedimiento

  1. Descargue la última versión del Automation AnywherePaquete de SDK. Para ver la última versión del paquete de SDK, consulte Notas de la versión del SDK del paquete anterior.
  2. Descomprima el contenido del paquete de SDK en cualquier directorio local.
  3. Cambie el nombre de la carpeta de A360-package-sdk-<version number> a MetricToImperial.
  4. En IntelliJ IDEA, vaya a Archivo > Abrir y abra el proyecto en C:\<SavedLocation>\MetricToImperial.
    Apertura de archivos en IntelliJ
  5. En la raíz del proyecto, abra el archivo settings.gradle. Establezca el rootProject.name = 'MetricToImperial'
    Nombre del proyecto Setting.gradle
  6. Abra el archivo package.template ubicado en src > principal > recursos > package.template.
  7. Cambie el nombre del paquete de A360DemoPackage a MetricToImperial.
    Cambie el campo del nombre Package.Template
    Haga clic en el botón Sincronizar en IntelliJ para actualizar el proyecto.
  8. Actualice el nombre del paquete en locales json: vaya a src > principal > recursos > locales > en_US.json.
    1. Abra el archivo es_US.json y actualice el campo obligatorio etiqueta de A360DemoPackage a MetricToImperial. Actualice la descripción opcional.
    2. Elimine todas las demás líneas restantes del archivo en_US.json.
  9. Elimine los paquetes de muestra, vaya a src > principal > java > com.automationanyhwere.botcommand, elimine samples.commands y elimine los paquetes samples.
  10. Cree un nuevo paquete, haga clic con el botón derecho en la carpeta java y seleccione Nuevo > Paquete. Ingrese el nuevo nombre del paquete como metrictoimperial.commands.
  11. Cree una nueva Clase de Java, haga clic con el botón derecho en el paquete metrictoimperial.commands y seleccione Nueva > Clase de Java. Ingresar el nombre CMtoINCH: para la nueva clase.
    1. 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 = "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 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);
        }
    Para importar los namespaces, haga clic en las notaciones rojas resaltadas y presione la tecla ALT+ENTER y seleccione Importar, que importa automáticamente los namespaces según las anotaciones y los datatypes.
    Clase de Java CMtoINCH
  12. Configure el archivo en_US.json, vaya a src > principal > recursos > 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"

    Configure en_US.json
  13. Actualice la anotación CommandPkg. Descargue los íconos desde Github.
    1. Descargue ruler_icon.svg desde github y haga clic con el botón derecho en la imagen y guarde la imagen como ruler_icon.svg.
    2. Descargue iconwhite.svg desde github, haga clic con el botón derecho en la imagen y guarde la imagen iconwhite.svg.
    3. Copie ambos archivos en la carpeta src > principal > recursos > íconos.
      Íconos para Pod
  14. 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"
    }
  15. Actualice el número de versión y elimine las dependencias que no sean necesarias para su proyecto en build.gradle.
    Nota: Las versiones de paquetes personalizados deben cumplir con la especificación de versiones semánticas. Una versión válida consta de tres números (MAJOR.MINOR.PATCH) separados por puntos (.). Como alternativa, puede incluir un identificador de prelanzamiento después de la versión PATCH, separada por un guion (-). Los guiones bajos (_) no están permitidos.

    Ejemplos de versiones de paquetes válidas:

    • 2.0.2-20210701-202149
    • 2.0.2
    • 2.0.2-test-20210701-202149
  16. Cree un nuevo directorio, haga clic con el botón derecho en src y seleccione Nuevo > Directorio.
    1. En el campo Nombre, ingrese test\java o seleccione la sugerencia test\java de los Conjuntos de fuentes de gradación.
    2. Cree un nuevo paquete, haga clic con el botón derecho en el directorio java y seleccione Nuevo > Paquete.
    3. Ingrese el nombre del paquete recién creado: metrictoimperial.commands.
  17. Cree una nueva clase Java, haga clic con el botón derecho y seleccione Nueva > Clase de Java. Ingresar 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);
    }

    Clase de prueba de CM a INCH
  18. Guarde el proyecto Archivo > Guardar todo.
  19. Diseñar el paquete.
    Puede utilizar la IU de IntelliJ o la línea de comandos. Si está usando la línea de comandos:
    1. Abra una ventana de la terminal y navegue hasta el directorio MetricToImperial .
    2. Para crear el proyecto, introduzca 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.

Qué hacer a continuación

Agregue un paquete personalizado a su Control Room