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 Loop. Il se compose de deux méthodes, Next
et hasNext
, qui renvoient l’objet réel et une valeur booléenne.
Annotations requises
Lorsque l’itérateur est utilisé, la méthode suivante
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 faux
si aucune autre valeur n’est disponible. Dans Automation 360, lorsque la boucle est exécutée, hasNext()
est appelé en premier et next()
est appelé uniquement si hasNext()
a renvoyé une valeur vraie
.
Pour créer un itérateur, les annotations suivantes sont requises.
Annotation | Utilisation |
---|---|
BotCommand |
Utilisez l’annotation BotCommand avec un itérateur comme la commandType . Cela garantit que l’ancien objet Java ordinaire (POJO) est éligible pour 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 requis et aidez au contrôle de validation, ou ils peuvent être affichés dans l’interface pour l’entrée. Fournissez l’Idx et le type. |
Pkg |
Annotez tous les paramètres et variables membres qui seront affichés dans l’interface. Cette annotation sera ignorée si elle n’est pas accompagnée de l’Idx . |
HasNext |
La méthode qui doit être appelée pour le test si l’itération a plus d’éléments (retourne vrai si next() renvoie 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 l’ |
Next |
La méthode renvoie 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 passe par plusieurs boucles, par exemple, pour (int i=0 ; <n; i++
I) la construction Java. Il accepte la valeur de n
à partir du Bot Creator lorsque l’bot est créé.
- Créez la classe POJO avec la logique métier.
Assurez-vous que le POJO dispose d’une méthode et renvoie une valeur booléenne. Cela servira de méthode de comparaison.
public class IteratorTypeDemo { private Double times = 10 d; private Double counter = 0 d; public boolean hasNext() { return counter < times; } 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; }
- Annoter la méthode
hasNext()
etnext()
de manière appropriée.@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 l’injection
du setter.
- Annotez la variable qui accepte les valeurs 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 renvoie un
Double
.