Lea y revise la documentación de Automation Anywhere

Automation 360

Cerrar contenidos

Contenidos

Abrir contenidos

Crear un iterador con el paquete SDK

  • Actualizado: 2022/05/19
    • Automation 360 v.x
    • Crear
    • Espacio de trabajo de RPA

Crear un iterador con el paquete SDK

En Automation 360puede crear un iterador con el paquete SDK. Un iterador se utiliza para recorrer varios objetos de tipo similar y se utiliza con el Loop paquete. Consta de dos métodos, siguiente y hasNextque devuelven el objeto actual y un valor booleano.

Anotaciones necesarias

Cuando se utiliza el iterador, el siguiente devuelve el siguiente valor disponible. Si no hay más valores disponibles, se muestra una excepción. El hasNext comprueba si hay otros valores y devuelve falso si no hay más valores disponibles. En Automation 360cuando se ejecuta el bucle, tieneSiguiente() se llama primero, y siguiente() se llama sólo si haSiguiente() devuelve un verdadero verdadero.

Para crear un iterador, se requieren las siguientes anotaciones.

Anotación Uso
BotCommand Utilice el BotCommand con un iterador como el commandType. Esto asegura que el objeto Java antiguo (POJO) es elegible para crear un Automation 360 iterador.
CommandPkg Al crear un paquete, proporcione un nombre, una etiqueta y una descripción a la anotación.
Idx Anote todos los parámetros y las variables miembro que se requieren y ayudan a la comprobación de la validación, o pueden mostrarse en la interfaz para la entrada. Proporcionar el Idx y el tipo.
Pkg Anote todos los parámetros y variables miembro que se mostrarán en la interfaz. Esta anotación será ignorada si no va acompañada de la etiqueta Idx.
HasNext El método al que hay que llamar para comprobar si la iteración tiene más elementos (devuelve verdadero si next() devuelve un elemento en lugar de lanzar una excepción). Debe devolver un valor booleano.

Si el método acepta parámetros, estos deben ser anotados con el parámetro Idx. El hasNext lo verifica y devuelve falso si no hay más valores disponibles. EnAutomation 360cuando Loop se ejecuta hasNext() se llama primero. siguiente() se llama sólo si tieneSiguiente() devuelve un verdadero verdadero.

Next El método devuelve el siguiente valor disponible en la iteración. El tipo de retorno es un valor. Si no hay más valor disponible, se muestra una excepción.
Ejemplo de caso de uso

El caso de uso de ejemplo hace un bucle a través del número de veces, por ejemplo, para (int i=0; I<n; i++) Construcción Java. Acepta el valor de n del Bot Creator cuando se crea el bot se crea.

  1. Crear la clase POJO con la lógica de negocio.

    Asegúrese de que el POJO tiene un método y devuelve un valor booleano. Esto actuará como método de comparación.

    @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. Anotar la clase POJO para habilitarla para el Automation 360 iterador y crear un paquete.
    @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. Anotar la función hasNext() y next() de forma adecuada.
    @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;
    }

    Los métodos se nombran de forma sencilla y son paralelos a la interfaz de los iteradores de Java. No hay ninguna restricción por parte del SDK a la hora de nombrar los métodos.

    En un iterador, no utilice métodos de parámetros, sino que utilice inyección de setters.

  4. Anotar las variables con Idx y Pkg.

    Añadir @NotEmpty para asegurar que el valor no es nulo, y añade @GreaterThanEqualTo para garantizar que el valor sea siempre mayor que 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;

    El tipo de atributo número devuelve un Doble.

Enviar comentarios