Crear un activador usando el paquete SDK
Al usar Automation 360, puede crear un activador usando el paquete SDK.
Uso de un disparador
Use Automation 360 para crear un activador. Un disparador inicia un bot cuando se cumplen ciertas condiciones y espera hasta que las condiciones hayan cambiado o se hayan detenido. Cuando se coinciden las condiciones del disparador, se llama al método de ejecución para indicar el disparador.
Anotaciones requeridas
Para crear un activador, se requieren las siguientes anotaciones:
Anotación | Uso |
---|---|
Comando de bots |
Utilice la anotación BotCommand con el activador como commandType. Esto garantiza que el objeto Java antiguo simple (POJO) sea adecuado para crear el disparador con Automation 360. |
Paq .Comando |
Estos valores se utilizan al crear un paquete. Proporcione un nombre, una etiqueta y una descripción para la anotación. |
[EMPTY] |
Anotar todos los parámetros y variables de miembro que se requieren y ayudar con la verificación de validación. Como alternativa, pueden mostrarse en la interfaz para la entrada. Proporcione el índice (Idx ) y el tipo. |
Paq . |
Anote todos los parámetros y variables de miembro que se mostrarán en la interfaz. Esta anotación se ignorará si no está acompañada por el Idx. |
Iniciares cuchar |
Inicia el oyente de activación. |
Id. de activación |
Una ID de activador, que es necesaria para detener el activador. |
ActivadorSe puede ejecutar |
Proporciona el ejecutable. Llamar al ejecutable envía una señal que inicia un bot asociado con un activador. |
Ejemplo de caso de uso
El siguiente caso de uso muestra cómo crear un disparador de temporizador que activa un bot a un intervalo regular.
- Cree la clase POJO con la lógica comercial:
public class TriggerDemo { private static final Timer TIMER = new Timer(true); public void startTrigger(Double interval) { TimerTask timerTask = new TimerTask() { @Override public void run() { // Do nothing } }; TIMER.schedule(timerTask, interval.longValue()); } }
Pueden existir múltiples activadores del mismo tipo en un bot. Todos los desencadenantes se identifican con un Id. de desencadenante.
- Agregar un triggerId a la clase:
@TriggerId private String triggerUid; public String getTriggerUid() { return triggerUid; } public void setTriggerUid(String triggerUid) { this.triggerUid = triggerUid; }
- Guarde el temporizadorTarea por separado para que cuando desee detener un activador específico, utilice la Id. de activador.
private static final Map<String, TimerTask> taskMap = new ConcurrentHashMap<>(); public void startTrigger(Double interval) { TimerTask timerTask = new TimerTask() { @Override public void run() { // Do nothing } }; taskMap.put(this.triggerUid, timerTask); TIMER.schedule(timerTask, interval.longValue()); }
- Inicie un disparador cuando se cumplan las condiciones. Aceptar un ejecutable y llamarlo adecuadamente.
@TriggerRunnable private Runnable runnable; public Runnable getRunnable() { return runnable; } public void setRunnable(Runnable runnable) { this.runnable = runnable; } public void startTrigger(Double interval) { TimerTask timerTask = new TimerTask() { @Override public void run() { runnable.run(); } }; taskMap.put(this.triggerUid, timerTask); TIMER.schedule(timerTask, interval.longValue()); }
- Detenga el gatillo, ya sea individualmente (use un triggerId) o detenga todos los gatillos al mismo tiempo (StopAllTriggers).
/* * Cancel all the task and clear the map. */ @StopAllTriggers public void stopAllTriggers() { taskMap.forEach((k, v) -> { if (v.cancel()) { taskMap.remove(k); } }); } /* * Cancel the task and remove from map * * @param triggerUid */ @StopListen public void stopListen(String triggerUid) { if (taskMap.get(triggerUid).cancel()) { taskMap.remove(triggerUid); } }
- Agregue las anotaciones restantes.
@BotCommand(commandType = BotCommand.CommandType.Trigger) @CommandPkg(label = "Demo Trigger", description = "Demo Trigger", icon = "email.svg", name = "demoTrigger") public class TriggerDemo { //Other code @StartListen public void startTrigger(@Idx(index = "1", type = AttributeType.NUMBER) @Pkg(label = "Please provide the interval to trigger in seconds", default_value = "120", default_value_type = DataType.NUMBER) @GreaterThan("0") @NumberInteger @NotEmpty Double interval) { //Other code } }