Automation Anywhere

Automation Anywhere Automation 360

關閉內容

內容

開啟內容

使用軟件包 SDK 創建觸發器

  • 已更新:12/11/2020
    • Automation 360 v.x
    • 探索
    • RPA 工作區

使用軟件包 SDK 創建觸發器

使用時 Automation 360,您可以使用 SDK 軟件包創建觸發器。

使用觸發器

用於 Automation 360 創建觸發器。當 bot 滿足某些條件時,觸發器將啓動,並等待條件更改或停止。當觸發器的條件匹配時,調用運行方法來向觸發器發出信號。

所需的註釋

若要建立觸發程序、需要下列附註:

註解 使用方式
BotCommand BotCommand 註釋與 觸發器一起使用爲命令類型。這可確保普通舊 Java 對象 (POJO) 適合使用創建觸發器 Automation 360
CommandPkg 創建軟件包時使用這些值。提供註釋的名稱、標籤和說明。
IDX 註釋所有必需的參數和成員變量,並幫助進行驗證檢查。或者,它們可能會顯示在輸入的接口中。提供索引 (IDX) 和類型。
包裝 註釋界面中顯示的所有參數和成員變量。如果 沒有 IDX 附帶此註釋,則將忽略該註釋
StartListen 啓動觸發器偵聽器。
TriggerId 觸發 ID ,用於停止觸發程序。
TriggerRunnable 提供可運行。調用 runnable 發送一個信號,該信號啓動 bot 與觸發器關聯的。

使用案例範例

下列使用案例顯示如何建立定時觸發,以 bot 定期觸發。

  1. 使用業務邏輯創建 POJO 類:
    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());
    	}
    
    }

    多個 相同類型的觸發器可以存在於 bot中。所有觸發器 由 triggerId 標識

  2. triggerId 添加 到類:
    @TriggerId
    	private String triggerUid;
    	
    	public String getTriggerUid() {
    		return triggerUid;
    	}
    
    	public void setTriggerUid(String triggerUid) {
    		this.triggerUid = triggerUid;
    	}
  3. 單獨存儲 TimerTask ,以便在您要停止特定觸發器時,使用 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. 在滿足條件時啓動觸發器。接受可運行的,並相應地調用它。
    @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. 單獨停止觸發器(使用 triggerId),或同時停止所有觸發器(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. 加入其餘的註記。
    @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
    	}
    
    }
傳送意見反饋