Lesen und beachten Sie die Automation Anywhere-Dokumentation

Automation 360

Inhalt schließen

Inhalte

Inhalt öffnen

Einen Iterator mit Package SDK erstellen

  • Aktualisiert: 2022/05/19
    • Automation 360 v.x
    • Erstellen
    • RPA Workspace

Einen Iterator mit Package SDK erstellen

Unter Automation 360können Sie einen Iterator mit dem SDK-Paket erstellen. Ein Iterator dient zum Durchlaufen mehrerer Objekte ähnlichen Typs und wird mit dem Loop Paket verwendet. Sie besteht aus zwei Methoden, nächste und hasNext, die das aktuelle Objekt und einen booleschen Wert zurückgeben.

Erforderliche Anmerkungen

Wenn der Iterator verwendet wird, wird die nächste Methode den nächsten verfügbaren Wert zurück. Wenn keine weiteren Werte verfügbar sind, wird eine Ausnahme angezeigt. Die Website hasNext Methode prüft auf andere Werte und gibt false zurück, wenn keine weiteren Werte verfügbar sind. In Automation 360, wenn die Schleife ausgeführt wird, hasNext() zuerst aufgerufen, und next() wird nur aufgerufen, wenn hasNext() ein true Wert zurückgibt.

Um einen Iterator zu erstellen, sind die folgenden Anmerkungen erforderlich.

Anmerkung Verwendung
BotCommand Verwenden Sie den BotCommand Annotation mit einem Iterator als commandType. Dadurch wird sichergestellt, dass das einfache alte Java-Objekt (POJO) für die Erstellung eines Automation 360 Iterators geeignet ist.
CommandPkg Wenn Sie ein Paket erstellen, geben Sie einen Namen, eine Bezeichnung und eine Beschreibung für die Anmerkung an.
Idx Kommentieren Sie alle Parameter und Mitgliedsvariablen, die erforderlich sind und bei der Validierungsprüfung helfen, oder sie können in der Schnittstelle für die Eingabe angezeigt werden. Stellen Sie die Idx und den Typ an.
Pkg Beschriften Sie alle Parameter und Mitgliedsvariablen, die in der Schnittstelle angezeigt werden sollen. Diese Anmerkung wird ignoriert, wenn sie nicht von der Idx.
HasNext Die Methode, die aufgerufen werden muss, um zu prüfen, ob die Iteration mehr Elemente hat (gibt true wenn next() ein Element zurückgibt, anstatt eine Ausnahme zu machen). Sie muss einen booleschen Wert zurückgeben.

Wenn die Methode Parameter akzeptiert, müssen diese mit dem Attribut Idx. Die Website hasNext Methode prüft sie und gibt false zurück, wenn keine weiteren Werte verfügbar sind. UnterAutomation 360wird, wenn Loop ausgeführt wird, hasNext() zuerst aufgerufen. next() wird nur aufgerufen, wenn hasNext() ein wahr Wert zurückgibt.

Next Die Methode gibt den nächsten verfügbaren Wert in der Iteration zurück. Der Rückgabetyp ist ein Wert. Ist kein weiterer Wert verfügbar, wird eine Ausnahme angezeigt.
Beispiel für einen Anwendungsfall

Der Beispielanwendungsfall durchläuft eine Reihe von Schleifen, z.B. for (int i=0; I<n; i++) Java-Konstrukt. Es akzeptiert den Wert von n aus dem Bot Creator wenn die bot erstellt wird.

  1. Erstellen Sie die POJO-Klasse mit der Geschäftslogik.

    Stellen Sie sicher, dass das POJO eine Methode hat und einen booleschen Wert zurückgibt. Dies wird als Vergleichsmethode dienen.

    @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;
        }
    }
  2. Annotieren Sie die POJO-Klasse, um sie für den Automation 360 Iterator zu aktivieren und ein Paket zu erstellen.
    @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;
    	}
  3. Annotieren Sie die hasNext() und next() Methode entsprechend.
    @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;
    }

    Die Methoden sind benutzerfreundlich benannt und entsprechen der Java-Iterator-Schnittstelle. Bei der Benennung von Methoden gibt es von Seiten des SDK keine Einschränkungen.

    In einem Iterator sollten Sie keine Parametermethoden verwenden, sondern Setter-Injektion.

  4. Beschriften Sie die Variablen mit Idx und Pkg.

    hinzufügen. @NotEmpty um sicherzustellen, dass der Wert nicht null ist, und fügen Sie @GreaterThanEqualTo um sicherzustellen, dass der Wert immer größer ist als 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;

    Der Attributtyp number gibt ein Double.

Feedback senden