Création d’un déclencheur à l’aide du package SDK
Lorsque vous utilisez Automation 360, vous pouvez créer un déclencheur à l’aide du package SDK.
Utilisation d’un déclencheur
Utilisez Automation 360 pour créer un déclencheur. Un déclencheur lance un bot lorsque certaines conditions sont remplies et attend que les conditions aient changé ou soient arrêtées. Lorsque les conditions du déclencheur correspondent, la méthode d’exécution est appelée pour signaler le déclencheur.
Annotations requises
Pour créer un déclencheur, les annotations suivantes sont requises :
Annotation | Utilisation |
---|---|
BotCommand |
Utilisez l’annotation BotCommand avec le déclencheur comme commandType . Cela garantit que l’ancien objet Java (POJO) est adapté à la création du déclencheur avec Automation 360. |
CommandPkg |
Ces valeurs sont utilisées lors de la création d’un package. Fournissez un nom, une étiquette et une description à l’annotation. |
Idx |
Annotez tous les paramètres et variables membres qui sont requis et aidez au contrôle de validation. Sinon, ils peuvent être affichés dans l’interface pour l’entrée. Fournissez l’index (Idx ) et le type. |
Pkg |
Annotez tous les paramètres et variables membres qui seront affichés dans l’interface. Cette annotation sera ignorée si elle n’est pas accompagnée de l’Idx . |
StartListen |
Démarre l’écouteur de déclencheur. |
TriggerId |
Un identifiant de déclencheur, qui est requis pour arrêter le déclencheur. |
TriggerRunnable |
Fournit le fichier exécutable. L’appel du fichier exécutable envoie un signal qui lance un bot associé à un déclencheur. |
Exemple de cas d’utilisation
Le cas d’utilisation suivant montre comment créer un déclencheur de minuterie qui déclenche un bot à intervalles réguliers.
- Créez la classe POJO avec la logique métier :
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()); } }
Plusieurs déclencheurs du même type peuvent exister dans un bot. Tous les déclencheurs sont identifiés par un triggerId.
- Ajouter un triggerId à la classe :
@TriggerId private String triggerUid; public String getTriggerUid() { return triggerUid; } public void setTriggerUid(String triggerUid) { this.triggerUid = triggerUid; }
- Stockez la TimerTask séparément afin que lorsque vous souhaitez arrêter un déclencheur spécifique, utilisez le 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()); }
- Démarrez un déclencheur lorsque les conditions sont remplies. Acceptez un fichier exécutable et appelez-le de manière appropriée.
@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()); }
- Arrêtez le déclencheur, soit individuellement (utilisez un triggerId), soit tous les déclencheurs en même temps (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); } }
- Ajoutez les annotations 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 } }