LoginSignup
2
2

More than 3 years have passed since last update.

Automation Anywhere A2019で親BotからサブBotに変数の値を受け渡す (v11との比較)

Last updated at Posted at 2020-03-09

概要

Automation Anywhere でひとつのTaskBot (親Bot)からもうひとつのTaskBot (サブBot)を引数を引き継いで呼び出す、というのはある程度大きなRPAプロジェクトになってくるとよくあることです。

v11では以下のようなユーザーインターフェイスで親BotとサブBotの変数を双方向にマッピングすることができました。
image.png
そのため最新バージョンであるA2019でも同じことを期待したいところです。つまり、以下の図のように、親BotとサブBotの変数を入力、出力でマッピングして運用することです。
image.png
ところが、A2019では仕様変更が行われ、このような単純なマッピングではなく、以下の図のように考え方が変わりました。
image.png

この記事ではサンプルBotを動かしながら、実際の仕様について見ていきたいと思います。

サブBotで変数作成時に必要な設定

A2019では変数の作成時に「入力として使用」「出力として使用」というオプションが新しく登場します。これはv11では存在しませんでした。
image.png
これらは、Botが「サブBot」として機能する場合に重要となってきます。

「入力」(親Bot⇒サブBot)の受け渡し

サブBotの変数で「入力として使用」をONにすると、呼び出し元のBotからTaskBot:Runアクションで呼び出す際に、サブBotに渡す引数として表示されるようになります。複数の変数で「入力として使用」をONにすると、その数だけアクションの詳細にオプションが現れます。
image.png
値を受け渡す際には、各変数名の左に表示されているチェックボックスをONにします。また、その際には変数型を意識する必要があります。フィールドには変数型にあった値、変数、またはその組み合わせを引数として指定する必要があります。
image.png

「出力」(サブBot⇒親Bot)の受け渡し

サブBotの変数で「出力として使用」をONにしても、呼び出し元のBotからTaskBot:Runアクションで呼び出す際に、アクションの詳細には何も現れません。その代わりに、一番下にあるオプション「Assign the output to variable」に指定するディクショナリ型変数にKey/Valueの組み合わせとして値が返ります。複数の変数で「出力として使用」をONにすると、その数だけディクショナリ型変数の要素が返ってきます。

既定ではこのオプションは空欄です。
image.png

必ずディクショナリ型変数を指定します。
image.png

ドロップダウンリストには他の型の変数もなぜかリストされます。ディクショナリ型以外を選んでも、「出力として使用」がサブBotでひとつもONになってなければ特にエラーは出ません。
image.png
1つ以上の出力がある場合に、ディクショナリ型以外の変数が指定されていると、以下のエラーが出る場合があります。
image.png

ディクショナリ型変数は、要素を指定するカッコの中にKeyとなる値 (今回の場合はサブBotの変数名)をダブルクオートを付けずに指定します。たとえばディクショナリ型変数$Dic$に値が返ってきたとして、サブBotで$sub2$という名前の変数の値を参照するには$Dic{sub2}$と指定します。

この「出力」の変数に関する受け渡し方法は、本記事執筆時点でAAオフィシャルドキュメントには記載がありません。

「入力」「出力」両方をONにして親Botで入力部分に変数を指定してもダメです

v11のことを知っていると、A2019でも「変数のマッピング」ができるのではないかと勘違いして使ってしまう場合があるかもしれません。つまり、サブBotである変数 ($sub3$) について「入力として使用」「出力として使用」の両方をONにして
image.png
TaskBot:Runアクションの詳細で、入力値のフィールドに親Botの変数 ($parent3$) を指定すれば、両者の値が同期するのではないか、ということです。
image.png
しかし、残念ながらそうはならず、実際の動作は$parent3$の値が定数として$sub3$に渡されるだけの動作になります。出力は別途指定するディクショナリ型変数の一部として返ってきます。

サンプルBotで動作を確認してみる

Parentbot:2行目でSubbotを呼び出します
image.png
3行目では、一応元々の親Botの変数を表示します。4行目ではサブBotからの返り値であるディクショナリ型変数の要素をキーを指定して表示します。($Dic{sub2}$という表現)
3行目のアクションの詳細:
image.png
4行目のアクションの詳細:
image.png

ローカル変数/設定/初期値

変数型 変数名 入力 出力 初期値
文字 parent1 Parent
文字 parent2 Parent
文字 parent3
辞書/文字 Dic

Subbot
image.png
ローカル変数/設定/初期値

変数型 変数名 入力 出力 初期値
文字 sub1 Sub
文字 sub2 Sub
文字 sub3 Sub

実行すると、以下のメッセージボックスが順に表示されます。
image.png
各変数の値を時系列で表すと以下のようになります。
image.png

v11の場合 - 詳細

Automation Anywhere v11では、親BotとサブBotの変数の受け渡しは以下のように行いました。

Parentbot.atmx:2行目でSubbotを呼び出します
image.png
ローカル変数/初期値
image.png
Subbot.atmx
image.png
ローカル変数/初期値
image.png

親BotのRun Taskコマンドで、「変数」を選択して以下のように設定します。タスクを選択した後、最初に「クイックマップ」ボタンを押しておくと、Subbotのローカル変数がドロップダウンリストに読み込まれるため、簡単に設定が可能です。
image.png
実行すると、以下のメッセージボックスが順に表示されます。
image.png
各変数の値を時系列で表すと以下のようになります。
image.png

参考情報

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2