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

Automation Anywhere Automation 360

コンテンツを閉じる

コンテンツ

コンテンツを開く

Package SDK を使用して反復子を作成する

  • 更新済み: 1/07/2021
    • Automation 360 v.x
    • 構築
    • RPA Workspace

Package SDK を使用して反復子を作成する

Automation 360 では、SDK パッケージで反復子を作成できます。反復子は、類似したタイプの複数のオブジェクトをループすることができ、Loop パッケージで使用します。これは、nexthasNext の 2 つのメソッドで構成され、実際のオブジェクトとブール値を返します。

必要な注釈

反復子を使用されている場合、nextメソッドは次に使用可能な値を返します。使用可能な値がなくなると、例外が表示されます。hasNext メソッドは、その他の値の有無をチェックし、使用可能な値がない場合は false を返します。Automation 360 では、ループが実行されると、hasNext() が最初に呼び出され、next()hasNext() から true 値が返された場合にのみ呼び出されます。

反復子を作成するには、次の注釈が必要です。

注釈 用途
BotCommand commandTypeinteratorBotCommand 注釈を使用します。これにより、POJO (plain old Java object) が Automation 360 反復子の作成に適するようになります。
CommandPkg パッケージの作成では、注釈に名前、ラベル、説明を指定します。
Idx 検証チェックに役立つよう、必要なすべてのパラメーターとメンバー変数に注釈を付けます。これらは、入力時のインターフェースに表示することもできます。インデックス (Idx) とタイプを指定します。
Pkg インターフェースに表示するすべてのパラメーターとメンバー変数に注釈を付けます。Idx が付いていない注釈は無視されます。
HasNext 反復にさらに要素があるかどうかをテストするために呼び出す必要があるメソッド (例外がスローされずに next() から要素が返された場合は true を返す)。ブール値を返す必要があります。

メソッドがパラメーターを受け付ける場合は、Idx の注釈を付ける必要があります。hasNext メソッドは検証を行い、値がない場合は false を返します。Automation 360 では、Loop が実行されると、hasNext() が最初に呼び出され、hasNext() から true 値が返された場合にnext() はのみ呼び出されます。

Next 反復で次に使用可能な値を返します。戻り値の型は値です。使用可能な値がなくなると、例外が表示されます。
ユースケース例

このユースケースは、たとえば (int i=0; I<n; i++) Java 構文をループする例です。bot が作成されると、Bot Creator から n の値を受け付けます。

  1. 次のビジネスロジックを持つ POJO クラスを作成します。

    POJO にはメソッドが 1 つ必要であり、ブール値を返す必要があります。これは、比較メソッドの働きをします。

    public class IteratorTypeDemo {
    
    	private Double times = 10 d;
    	private Double counter = 0 d;
    
    	public boolean hasNext() {
    		return counter < times;
    	}
    
    	public Value < Double > next() throws Exception {
    		if (counter >= times)
    			throw new Exception("Counter '" + counter + "' is exceed the times limit '" + times + "'");
    
    		counter++;
    		NumberValue result = new NumberValue();
    		result.set(counter);
    		return result;
    	}
    
    	public void setTimes(Double times) {
    		this.times = times;
    	}
    
    }
    
  2. POJO クラスに注釈を付けることで Automation 360 反復子に対して有効にし、パッケージを作成します。
    @BotCommand(commandType = CommandType.Iterator)
    @CommandPkg(return_label = "Return the value in variable", node_label = ": {{times}} times",
    	label = "Iterator demo", description = "Iterate number of times", name = "iteratorTypeDemo", return_type = DataType.NUMBER)
    public class IteratorTypeDemo {
    
    	private Double times = 10 d;
    	private Double counter = 0 d;
    
    	public boolean hasNext() {
    		return counter < times;
    	}
  3. hasNext() および next() メソッドに適宜注釈を付けます。
    @HasNext
    public boolean hasNext() {
    	return counter < times;
    }
    
    @Next
    public Value < Double > next() throws Exception {
    	if (counter >= times)
    		throw new Exception("Counter '" + counter + "' is exceed the times limit '" + times + "'");
    
    	counter++;
    	NumberValue result = new NumberValue();
    	result.set(counter);
    	return result;
    }

    メソッドには使いやすい名前を付け、Java 反復子インターフェースに沿ったものにします。メソッドの命名で SDK 側の制限はありません。

    反復子では、パラメーターメソッドは使わずに、セッターインジェクションを使用します。

  4. 変数には IdxPkg の注釈を付けます。

    値が null にならないよう @NotEmpty を追加し、値が必ず 0 より大きくなるよう @GreaterThanEqualTo を追加します。

    @Idx(index = "1", type = AttributeType.NUMBER)
    @Pkg(label = "times", default_value = "10", default_value_type = DataType.NUMBER)
    @GreaterThanEqualTo("0")
    @NotEmpty
    @Inject
    private Double times = 10 d;

    属性の型番号は Double を返します。

フィードバックを送る