Créer un itérateur à l'aide du package SDK
- Dernière mise à jour2022/07/22
Créer un itérateur à l'aide du package SDK
Dans Automation 360, vous pouvez créer un itérateur avec le package SDK. Un itérateur est utilisé pour passer en boucle à travers plusieurs objets de type similaire et est utilisé avec le package Boucle. Il se compose de deux méthodes, next
et hasNext
, qui renvoient l'objet réel et une valeur booléenne.
Annotations obligatoires
Lorsque l'itérateur est utilisé, la méthode next
renvoie la valeur disponible suivante. Si aucune autre valeur n'est disponible, une exception s'affiche. La méthode hasNext
vérifie d'autres valeurs et renvoie false
si aucune autre valeur n'est disponible. Dans Automation 360, lorsque la boucle est exécutée, hasNext()
est appelée en premier et next()
n'est appelée que si hasNext()
retourne la valeur true
.
Pour créer un itérateur, les annotations suivantes sont obligatoires.
Annotation | Utilisation |
---|---|
BotCommand |
Utilisez l'annotation BotCommand avec un iterator comme commandType . Cette opération garantit que l'ancien objet Java (POJO) est éligible à la création d'un itérateur Automation 360. |
CommandPkg |
Lors de la création d'un package, fournissez un nom, une étiquette et une description à l'annotation. |
Idx |
Annotez tous les paramètres et variables membres qui sont obligatoires et aident au contrôle de validation, ou ils peuvent être affichés dans l'interface pour être saisis. Fournissez Idx et le type. |
Pkg |
Annotez tous les paramètres et variables membres qui seront affichés dans l'interface. Cette annotation est ignorée si elle n'est pas accompagnée de Idx . |
HasNext |
La méthode qui doit être appelée pour le test si l'itération a plus d'éléments (retourne true si next() retourne un élément plutôt que de générer une exception). Elle doit renvoyer une valeur booléenne.Si la méthode accepte les paramètres, ils doivent être annotés avec |
Next |
La méthode retourne la valeur disponible suivante dans l'itération. Le type de retour est une valeur. Si aucune autre valeur n'est disponible, une exception s'affiche. |
L'exemple de cas d'utilisation s'exécute en boucle un certain nombre de fois, par exemple, pour la structure Java (int i=0; I<n; i++
). Il accepte la valeur de n
à partir du Bot Creator lorsque l'robot est créé.
- Assurez-vous que vous avez importé les packages suivants pour garantir que toutes les fonctionnalités fonctionnent comme décrit dans l'exemple.
import com.automationanywhere.botcommand.data.Value; import com.automationanywhere.botcommand.data.impl.NumberValue; import com.automationanywhere.commandsdk.annotations.BotCommand; import com.automationanywhere.commandsdk.annotations.CommandPkg; import com.automationanywhere.commandsdk.annotations.HasNext; import com.automationanywhere.commandsdk.annotations.Idx; import com.automationanywhere.commandsdk.annotations.Inject; import com.automationanywhere.commandsdk.annotations.Next; import com.automationanywhere.commandsdk.annotations.Pkg; import com.automationanywhere.commandsdk.annotations.BotCommand.CommandType; import com.automationanywhere.commandsdk.annotations.rules.GreaterThanEqualTo; import com.automationanywhere.commandsdk.annotations.rules.NotEmpty; import com.automationanywhere.commandsdk.annotations.rules.NumberInteger; import com.automationanywhere.commandsdk.model.AttributeType; import com.automationanywhere.commandsdk.model.DataType;
- Créez la classe POJO avec la logique métier.
Assurez-vous que le POJO contient une méthode et retourne une valeur booléenne. Elles serviront de méthode de comparaison.
@BotCommand(commandType=CommandType.Iterator) @CommandPkg(return_label = "Return the value in variable", node_label = ": {{times}} times", label = "Iterator demo", description = "Iterate number of times", name = "iteratorTypeDemo", return_type = DataType.NUMBER) public class IteratorTypeDemo { @Idx(index = "1", type = AttributeType.NUMBER) @Pkg(label = "times", default_value = "10", default_value_type = DataType.NUMBER) @GreaterThanEqualTo("0") @NumberInteger @NotEmpty @Inject private Double times = 10d; private Double counter = 0d; @HasNext public boolean hasNext() { return counter < times; } @Next public Value<Double> next() throws Exception{ if (counter >= times) throw new Exception("Counter '"+ counter +"' is exceed the times limit '"+times+"'"); counter++; NumberValue result = new NumberValue(); result.set(counter); return result; } public void setTimes(Double times) { this.times = times; } }
- Annotez la classe POJO pour l'activer pour l'itérateur Automation 360 et pour créer un package.
@BotCommand(commandType = CommandType.Iterator) @CommandPkg(return_label = "Return the value in variable", node_label = ": {{times}} times", label = "Iterator demo", description = "Iterate number of times", name = "iteratorTypeDemo", return_type = DataType.NUMBER) public class IteratorTypeDemo { private Double times = 10 d; private Double counter = 0 d; public boolean hasNext() { return counter < times; }
- Annotez les méthodes
hasNext()
etnext()
de manière adéquate.@HasNext public boolean hasNext() { return counter < times; } @Next public Value < Double > next() throws Exception { if (counter >= times) throw new Exception("Counter '" + counter + "' is exceed the times limit '" + times + "'"); counter++; NumberValue result = new NumberValue(); result.set(counter); return result; }
Les méthodes sont nommées de manière facile à utiliser et sont en parallèle avec l'interface de l'itérateur Java. Il n'existe aucune restriction du côté de SDK lors de la dénomination des méthodes.
Dans un itérateur, n'utilisez pas de méthodes de paramètres, mais utilisez
setter injection
. - Annotez les variables avec
Idx
etPkg
.Ajoutez
@NotEmpty
pour vous assurer que la valeur n'est pas nulle, et ajoutez@GreaterThanEqualTo
pour vous assurer que la valeur est toujours supérieure à0
.@Idx(index = "1", type = AttributeType.NUMBER) @Pkg(label = "times", default_value = "10", default_value_type = DataType.NUMBER) @GreaterThanEqualTo("0") @NotEmpty @Inject private Double times = 10 d;
Le numéro du type d'attribut retourne un
Double
.