Criar um iterador usando o SDK de pacote do
No Automation 360, você pode criar um iterador com o pacote do SDK. Um iterador é usado para passar por vários objetos de tipo semelhante e é usado com o Loop pacote. Ela consiste em dois métodos, next
e
hasNext, que retornam o objeto real e um valor booliano.
Anotações obrigatórias
Quando o iterador é usado, o próximo
método retorna o próximo valor disponível. Se não houver mais valores disponíveis, uma exceção será exibida. O método hasNext
verifica outros valores e retorna falso
se não houver mais valores disponíveis. Em Automation 360, quando o loop é executado, hasNext()
é chamado primeiro, e next()
é chamado somente se hasNext()
retornou um valor verdadeiro.
Para criar um iterador, as seguintes anotações são necessárias.
Anotação | Utilização |
---|---|
Comando de bot |
Use a anotação BotCommand com um iterador como o commandType. Isso garante que o objeto Java antigo simples (POJO) seja elegível para criar um Automation 360 iterador. |
Pacote de comando |
Ao criar um pacote, forneça um nome, rótulo e descrição para a anotação. |
Identificação |
Anotar todos os parâmetros e variáveis de membro necessários e ajudar na verificação de validação, ou eles podem ser exibidos na interface para a entrada. Forneça o Idx e o tipo. |
Pacote |
Anotar todos os parâmetros e variáveis de membro que serão exibidos na interface. Esta anotação será ignorada se não for acompanhada pelo Idx. |
TemPróximo |
O método que precisa ser chamado para teste se a iteração tiver mais elementos (retorna verdadeiro se next() retorna um elemento em vez de lançar uma exceção). Ele deve retornar um valor booliano. Se o método aceitar parâmetros, eles deverão ser anotados com o |
Próximo |
O método retorna o próximo valor disponível na iteração. O tipo de retorno é um valor. Se não houver mais nenhum valor disponível, uma exceção será exibida. |
O caso de uso de exemplo passa pelo número de vezes, por exemplo, para a construção Java (int i=0; <n; i++
I). Ele aceita o valor de n
do Bot Creator quando o bot é criado.
- Criar a classe POJO com a lógica de negócios.
Verifique se a POJO tem um método e retorna um valor booliano. Isso atuará como o método de comparação.
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; } }
- Faça anotações na classe POJO para habilitá-la para o Automation 360 iterador e criar um pacote.
@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; }
- Faça anotações no método
hasNext()
enext()
apropriadamente.@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; }
Os métodos são nomeados de maneira fácil de usar e estão em paralelo com a interface do iterador Java. Não há restrição do lado do SDK ao nomear métodos.
Em um iterador, não use métodos de parâmetro, mas use injeção
de setter.
- Faça anotações nas variáveis com
Idx
eAdicione
@NotEmpty
para garantir que o valor não seja nulo e adicione@GreaterThanEqualTo
para garantir que o valor seja sempre maior que0.
@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;
O número do tipo de atributo retorna um