はじめに
Automation Anywhere V11では親子Bot間ではリストや辞書の構造体をやり取りすることができませんでした。
Automation360ではここがかなり拡張されています。
環境設定用の構造体情報をBot間で引き回す、なんて事ができそうです。
例えば環境設定用の情報がディクショナリ変数に入っているという想定で、それを親子Bot間でやり取りしてみます。
親から子へディクショナリ変数を渡す
これは簡単。
親Botのディクショナリ変数:oyaDic
子Botのディクショナリ変数:koDic
だとして、子Botで変数koDicの「入力として使用」にチェックを入れ、
親Botから子Botを呼ぶ(タスクBoot:実行)ところで、oyaDicとkoDicを割り当てるだけ。
子から親へディクショナリ変数を返す
逆に子のディクショナリ変数を親に渡す場合です(親⇒子は無いものとして)。
- 子Botで変数koDicの「出力として使用」にチェックを入れる。
- 親Botで子Botを呼ぶ(タスクBoot:実行)ところで、結果を変数に保存でディクショナリ変数を指定。仮に戻りを受ける変数としてreturnDicとします。
- 親から子を読んだあとの戻りで$returnDic{koDic}$が子Botのディクショナリ変数になります。
- なので、親Bot側でディクショナリ:Getを使い、ディクショナリ変数returnDicのキーkoDicの値をoyaDicに代入すると、oyaDicに子Botのディクショナリ変数の情報が入ります。
※子Bot⇒親Botの戻りをディクショナリ変数で受けているので、少しややこしいですね。
※「複数の変数」の指定を使い、子Botのディクショナリ変数と同じ名前の変数を親Bot側にも作り、それを割り当てる方が簡単でした。詳しくは以下を。
https://qiita.com/etoootak/items/21d5cfc2674dd63bcf4f
親から子へ辞書情報を渡し、さらに子から親へ辞書情報を返す
ここは余談です。混乱を招きそうなのでプログラムに詳しい方向け。
上の2つを混ぜれば親⇒子⇒親もできますが、実はそんな面倒な事をせずとも、最初の
『子Botで変数koDicの「入力として使用」にチェックを入れ』
だけでもOK。
子Botで書き換えたディクショナリ変数の内容が親Botで参照できます(戻りを受けなくても)。
じゃぁ、ぜんぶ「入力として使用」だけでいいじゃん、となりそうですが、それではダメなケースがあります。
(例えば数字型変数などは、「入力として使用」だけでは、子⇒親に返せません)
このへんの話を
https://qiita.com/etoootak/items/ddb87ed4b246acea3fd2
にもう少し書きました。