Automation Anywhere ドキュメントを読んで確認する

Automation Anywhere Automation 360

コンテンツを閉じる

コンテンツ

コンテンツを開く

Package SDKを使用したトリガーの作成

  • 更新済み: 12/11/2020
    • Automation 360 v.x
    • 最新情報
    • RPA Workspace

Package SDKを使用したトリガーの作成

Automation 360 を使用すると、SDK パッケージを使用してトリガーを作成することができます。

トリガーの使用

Automation 360 を使用してトリガーの作成します。トリガーは、特定の条件が満たされたときに bot を起動し、条件が変更または停止するまで待機します。トリガーのすべての条件が一致すると、実行メソッドが呼び出され、トリガーに信号を送ります。

必要な注釈

トリガーを作成するには、次の注釈が必要です。

注釈 用途
BotCommand commandTypetriggerBotCommand 注釈を使用します。これにより、POJO (plain old Java object) が Automation 360 を使用したトリガーの作成に適するようになります。
CommandPkg これらの値は、パッケージの作成時に使用されます。注釈に名前、ラベル、説明を指定します。
Idx 検証チェックに役立つよう、必要なすべてのパラメーターとメンバー変数に注釈を付けます。入力時のインターフェースに表示することもできます。インデックス (Idx) とタイプを指定します。
Pkg インターフェースに表示するすべてのパラメーターとメンバー変数に注釈を付けます。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
    	}
    
    }
フィードバックを送る