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.

  1. 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.

  2. Ajoutez un triggerId à la classe :
    @TriggerId
    	private String triggerUid;
    	
    	public String getTriggerUid() {
    		return triggerUid;
    	}
    
    	public void setTriggerUid(String triggerUid) {
    		this.triggerUid = triggerUid;
    	}
  3. 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());
    	}
  4. 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());
    	}
  5. 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);
    		}
    	}
  6. 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
    	}
    
    }