Création d'un déclencheur à l'aide du package SDK
- Dernière mise à jour2022/05/19
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 robot 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 obligatoires
Pour créer un déclencheur, les annotations suivantes sont obligatoires :
Annotation | Utilisation |
---|---|
BotCommand |
Utilisez l'annotation BotCommand avec le déclencheur commandType . Cette opération garantit que l'ancien objet Java (POJO) est adapté à la création d' Le 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 obligatoires et facilitent le contrôle de validation. Éventuellement, ils peuvent être affichés dans l'interface pour être saisis. 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 est ignorée si elle n'est pas accompagnée de Idx . |
StartListen |
Démarre l'écouteur du déclencheur. |
TriggerId |
Un identifiant de déclencheur, qui est obligatoire pour arrêter le déclencheur. |
TriggerRunnable |
Fournit le fichier exécutable. L'appel du fichier exécutable envoie un signal qui lance un robot associé à un déclencheur. |
Exemple de cas d'utilisation
Le cas d'utilisation suivant montre comment créer un déclencheur basé sur le temps qui déclenche un robot à intervalle régulier.
- 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 robot. Tous les déclencheurs sont identifiés par un triggerId.
- Ajoutez 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 de sorte que, lorsque vous souhaitez arrêter un déclencheur spécifique, vous 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 } }