Erstellen eines Auslösers mit dem Paket-SDK
- Aktualisiert: 2022/05/19
Erstellen eines Auslösers mit dem Paket-SDK
Wenn Sie Automation 360 verwenden, können Sie mit dem SDK-Paket einen Auslöser erstellen.
Verwendung eines Auslösers
Verwenden Sie Automation 360, um einen Auslöser zu erstellen. Ein Auslöser startet einen Bot, wenn bestimmte Bedingungen erfüllt sind, und wartet, bis sich die Bedingungen geändert haben oder nicht mehr bestehen. Wenn die Bedingungen des Auslösers erfüllt sind, wird die Ausführungsmethode aufgerufen, um einen Signal an den Auslöser zu senden.
Erforderliche Anmerkungen
Zum Erstellen eines Auslösers sind die folgenden Anmerkungen erforderlich:
Anmerkung | Verwendung |
---|---|
BotCommand |
Verwenden Sie die Anmerkung BotCommand mit dem Auslöser commandType . Dadurch wird gewährleistet, dass das Plain Old Java Object (POJO) für die Erstellung des Auslösers mit Automation 360 geeignet ist. |
CommandPkg |
Diese Werte werden bei der Erstellung eines Pakets verwendet. Geben Sie einen Namen, eine Bezeichnung und eine Beschreibung für die Anmerkung an. |
Idx |
Versehen Sie alle Parameter und Mitgliedsvariablen, die erforderlich sind und bei der Validierungsprüfung helfen, mit Anmerkungen. Alternativ können sie auch in der Schnittstelle für die Eingabe angezeigt werden. Geben Sie den Index (Idx ) und den Typ an. |
Pkg |
Versehen Sie alle Parameter und Mitgliedsvariablen, die in der Schnittstelle angezeigt werden sollen, mit Anmerkungen. Diese Anmerkung wird ignoriert, wenn sie nicht von Idx begleitet wird. |
StartListen |
Startet den Auslöser-Listener. |
TriggerId |
Eine Auslöser-ID, die zum Anhalten des Auslösers erforderlich ist. |
TriggerRunnable |
Stellt das Runnable-Element zur Verfügung. Durch den Aufruf des Runnable-Elements wird ein Signal gesendet, das einen mit einem Auslöser verbundenen Bot auslöst. |
Anwendungsbeispiel
Der folgende Anwendungsfall zeigt, wie Sie einen Timer-Auslöser erstellen, der in regelmäßigen Abständen einen Bot auslöst.
- Erstellen Sie die POJO-Klasse mit der Geschäftslogik:
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()); } }
In einem Bot können mehrere Auslöser desselben Typs vorhanden sein. Alle Auslöser werden durch eine triggerId identifiziert.
- Fügen Sie der Klasse eine triggerId hinzu:
@TriggerId private String triggerUid; public String getTriggerUid() { return triggerUid; } public void setTriggerUid(String triggerUid) { this.triggerUid = triggerUid; }
- Speichern Sie die TimerTask separat, sodass Sie die triggerId verwenden, wenn Sie einen bestimmten Auslöser stoppen wollen.
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()); }
- Starten Sie einen Auslöser, wenn die Bedingungen erfüllt sind. Akzeptieren Sie ein Runnable-Element und rufen Sie es entsprechend auf.
@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()); }
- Stoppen Sie den Auslöser entweder einzeln (verwenden Sie eine triggerId) oder stoppen Sie alle Auslöser gleichzeitig (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); } }
- Fügen Sie die restlichen Anmerkungen hinzu.
@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 } }