Crear un activador con el paquete SDK
- Última actualización2022/05/19
Crear un activador con el paquete SDK
Cuando se utiliza Automation 360, puede crear un activador mediante el paquete SDK.
Utilizar un activador
Utilice Automation 360 para crear un activador. Un activador inicia un bot cuando se cumplen ciertas condiciones y espera hasta que las condiciones hayan cambiado o se hayan detenido. Cuando se cumplen las condiciones del activador, se llama al método de ejecución para señalar el activador.
Anotaciones obligatorias
Para crear un activador, se requieren las siguientes anotaciones:
Anotación | Uso |
---|---|
BotCommand |
Use la anotación BotCommand con el activador como commandType . Esto asegura que el objeto Java antiguo sin formato (POJO) sea adecuado para crear el activador de Automation 360. |
CommandPkg |
Estos valores se utilizan cuando se crea un paquete. Proporcione un nombre, una etiqueta y una descripción para la anotación. |
Idx |
Anote todos los parámetros y variables miembro que se requieren y ayude a la comprobación de la validación. Otra posibilidad es que se muestren en la interfaz de la entrada. Proporcione el índice (Idx ) y el tipo. |
Pkg |
Anote todos los parámetros y variables de miembro que se mostrarán en la interfaz. Esta anotación será ignorada si no va acompañada de la etiqueta Idx . |
StartListen |
Inicia la escucha de activadores. |
TriggerId |
Un ID de activación, necesario para detener el activador. |
TriggerRunnable |
Proporciona el ejecutable. Al llamar al ejecutable se envía una señal que inicia un bot asociado a un activador. |
Ejemplo de caso de uso
El siguiente caso de uso muestra cómo crear un activador de temporizador que activa un bot a un intervalo regular.
- Crear la clase POJO con la lógica de negocio:
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 varios activadores del mismo tipo en un bot. Todos los activadores se identifican con un triggerId.
- Agregue un triggerId a la clase:
@TriggerId private String triggerUid; public String getTriggerUid() { return triggerUid; } public void setTriggerUid(String triggerUid) { this.triggerUid = triggerUid; }
- Almacene TimerTask por separado para que cuando quiera detener un activador específico, use el triggerId.
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 activador cuando se cumplan las condiciones. Acepte un ejecutable y llámelo correctamente.
@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 activador, de forma individual (use un triggerId), o detenga todos los activadores 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 el resto de anotaciones.
@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 } }