Ознакомиться с документацией Automation Anywhere

Automation Anywhere Automation 360

Закрыть содержимое

Содержимое

Открыть содержимое

Создайте итератор с помощью пакета SDK

  • Обновлено: 4/23/2021
    • Automation 360 v.x
    • Сборка
    • Рабочая область RPA

Создайте итератор с помощью пакета SDK

В Automation 360можно создать итератор с помощью пакета SDK. Итератор используется для циклического прохождения через несколько объектов аналогичного типа и используется вместе Loop с пакетом. Он состоит из двух методов, NEXT и hasNext, которые возвращают фактический объект и логическое значение.

Необходимые аннотации

При использовании итератора следующий метод возвращает следующее доступное значение. Если больше нет доступных значений, отображается исключение. Метод hasNext проверяет другие значения и возвращает false , если больше нет доступных значений. В Automation 360, когда цикл исполняется, hasNext() называется первым, а Next() вызывается только в том случае, если hasNext() вернул истинное значение.

Для создания итератора требуются следующие аннотации.

Аннотация Использование
Команда BotCommand Используйте аннотацию BotCommand с итератором в качестве командного типа. Это гарантирует, что обычный старый объект Java (POJO) может быть создан Automation 360 итератором.
CommandPkg При создании пакета укажите имя, метку и описание аннотации.
Idx Аннотируйте все необходимые параметры и переменные-члены, которые помогут проверить правильность ввода, или они могут отображаться в интерфейсе ввода. Укажите idx и тип.
Пакет Аннотируйте все параметры и переменные элемента, которые будут отображаться в интерфейсе. Эта аннотация будет проигнорирована, если она не сопровождается idx.
HasNext Метод, который должен быть вызван для тестирования, если итерация имеет больше элементов (возвращает TRUE , если Next() возвращает элемент, а не отбрасывает исключение). Он должен вернуть логическое значение.

Если метод принимает параметры, то они должны быть аннотированы idx . Метод hasNext проверяет его и возвращает false , если больше нет доступных значений. ВAutomation 360, когда Loop исполняется , сначала вызывается hasNext() . Next() вызывается только в том случае, если hasNext() возвращает истинное значение.

Далее Метод возвращает следующее доступное значение в итерации. Тип возврата - это значение. Если больше нет доступных значений, отображается исключение.
Пример использования

Например, в примере сценарий использования проходит несколько циклов, например, для (int i=0; i) построения Java. Он принимает значение n из Bot Creator при bot создании.

  1. Создайте класс POJO с бизнес-логикой.

    Убедитесь, что POJO имеет метод и возвращает логическое значение. Это будет служить методом сравнения.

    @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. Аннотировать класс POJO, чтобы включить его для Automation 360 итератора и создать пакет.
    @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. Добавьте комментарий к методу hasNext() и Next().
    @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;
    }

    . Методы названы простым в использовании способом и параллельны Java интерфейс итератора. При присвоении имен со стороны SDK ограничений нет методов.

    В итераторе не используйте параметрические методы, а используйте инъекцию с установщиком.

  4. Аннотируйте переменные с помощью idx и Pkg.

    Добавьте @NotEmpty , чтобы убедиться, что значение не равно null, и добавьте @GreaterThanEqualTo , чтобы значение всегда было больше 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;

    . Номер типа атрибута возвращает значение Double.

Отправить отзыв