Construire un package personnalisé dans IntelliJ

Utilisez Java IntelliJ pour créer et compiler un fichier JAR que vous pouvez charger en tant que package dans votre Control Room dans Automation 360.

Prérequis

Une connaissance de base de JDK et Java IntelliJ est nécessaire pour créer un package d'actions. Assurez-vous que vous avez installé les logiciels et fichiers suivants :

Procédure

  1. Téléchargez la dernière version du Automation Anywhere Package SDK. Pour la dernière version du Package SDK, voir Notes de publication du SDK du package précédent.
  2. Dézippez le contenu du package SDK dans n'importe quel répertoire local.
  3. Renommez le dossier de A360-package-sdk-<numéro de version> en MetricToImperial.
  4. Dans IntelliJ IDEA, accédez à Fichier > Ouvrir et ouvrez le projet à C:\<SavedLocation>\MetricToImperial.
    Ouverture de fichier IntelliJ
  5. À partir de la racine de projet, ouvrez le fichier settings.gradle. Définissez rootProject.name = 'MetricToImperial'
    Nom du projet Setting.gradle
  6. Ouvrez le fichier package.template situé dans src > main > resources > package.template.
  7. Remplacez le nom du package A360DemoPackage par MetricToImperial.
    Renommer le champ de nom de Package.Template
    Cliquez sur le bouton Sync dans IntelliJ pour mettre à jour le projet.
  8. Mettez à jour le nom du package dans locales json : accédez à src > main > resources > locales > en_US.json.
    1. Ouvrez le fichier en_US.json et mettez à jour le champ required label de A360DemoPackage en MetricToImperial. Mettez à jour la description facultative.
    2. Supprimez toutes les autres lignes du fichier en_US.json.
  9. Supprimez les packages d'exemple, accédez à src > main > java > com.automationanyhwere.botcommand, puis supprimez les packages samples.commands et samples.
  10. Créez un nouveau package, cliquez avec le bouton droit sur le dossier java et sélectionnez Nouveau > Package. Saisissez metrictoimperial.commands comme nouveau nom du package.
  11. Créez une nouvelle Classe Java, cliquez avec le bouton droit sur le package metrictoimperial.commands, puis sélectionnez Nouveau > Classe Java. Saisissez le nom de la nouvelle classe CMtoINCH:.
    1. Ouvrez la classe CMtoINCH. Copiez et collez le code suivant au-dessus de l'instruction de définition 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. Dans la classe CMtoINCH, copiez et collez le code suivant :
    //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);
        }
    Pour importer les namespaces, cliquez sur les notations rouges en surbrillance, puis appuyez sur les touches ALT+ENTRÉE et sélectionnez Importer pour importer automatiquement les namespaces en fonction des annotations et des datatypes.
    Classe Java CMtoINCH
  12. Pour configurer le fichier en_US.json, accédez à src > main > ressources > locales > en_US.json et ajoutez les champs suivants après les valeurs d'étiquette et de description :
    "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"

    Configurer en_US.json
  13. Mettez à jour l'annotation CommandPkg. Téléchargez les icônes depuis Github.
    1. Téléchargez ruler_icon.svg à partir de github et cliquez avec le bouton droit sur l'image et enregistrez l'image sous ruler_icon.svg.
    2. Téléchargez iconwhite.svg à partir de github, cliquez avec le bouton droit sur l'image et enregistrez l'image iconwhite.svg.
    3. Copiez les deux fichiers dans le dossier src > main > resources > icons.
      Icônes pour Pod
  14. Ouvrez build.gradle dans la racine du projet. Après la section des dépendances, mais avant la dernière balise de fermeture, copiez et collez le code suivant :
    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. Mettez à jour le numéro de version et supprimez les dépendances qui ne sont pas obligatoires à votre projet de build.gradle.
    Remarque : Les versions de packages personnalisés doivent respecter la spécification Gestion des versions sémantique. Une version valide se compose de trois chiffres (MAJOR.MINOR.PATCH) séparés par des points (.). Vous pouvez, si vous le souhaitez, inclure un identifiant de pré-version après la version PATCH, en les séparant par un trait d'union (-). Les traits de soulignement (_) ne sont pas autorisés.

    Exemples de versions de packages valides :

    • 2.0.2-20210701-202149
    • 2.0.2
    • 2.0.2-test-20210701-202149
  16. Créez un nouveau répertoire, cliquez avec le bouton droit sur src et sélectionnez Nouveau > Répertoire.
    1. Dans le champ Nom, saisissez test\java ou sélectionnez la suggestion test\java dans Gradle Source Sets.
    2. Créez un nouveau package, cliquez avec le bouton droit sur le répertoire java et sélectionnez Nouveau > Package.
    3. Saisissez le nom du package nouvellement créé : metrictoimperial.commands.
  17. Créez une nouvelle classe Java, cliquez avec le bouton droit et sélectionnez Nouveau > Classe Java. Saisissez le nom de la nouvelle classe CMtoINCHTest.
    Dans la classe CMtoINCHTest, copiez et collez le code suivant :
    @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);
    }

    Test de classe CMtoINCH
  18. Enregistrer le projet Fichier > Enregistrer tout.
  19. Construisez le package.
    Vous pouvez utiliser l'interface utilisateur IntelliJ ou la ligne de commande. Si vous utilisez la ligne de commande :
    1. Ouvrez une fenêtre de terminal et accédez au répertoire MetricToImperial
    2. Pour créer le projet, saisissez la commande suivante : gradlew.bat clean build shadowJar
    Un message CONSTRUIT AVEC SUCCÈS s'affiche.

    Une création peut parfois échouer parce que les fichiers existants n'ont pas pu être supprimés automatiquement et un message système s'affiche indiquant que l'exécution a échoué pour la tâche : nettoyer. Dans ce cas, fermez les fenêtres de l'explorateur et exécutez à nouveau la construction.

Étapes suivantes

Ajoutez un package personnalisé à votre Control Room