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

Automation 360

コンテンツを閉じる

コンテンツ

コンテンツを開く

パッケージ SDK を使用したトリガーの作成

  • 更新済み: 2022/05/19
    • Automation 360 v.x
    • 概要
    • RPA Workspace

パッケージ SDK を使用したトリガーの作成

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

トリガーの使用

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

必要な注釈

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

注釈 使用状況
BotCommand triggercommandType として BotCommand 注釈を使用します。これにより、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
    	}
    
    }
フィードバックを送る