pthfs1
(pthfs)
1
ワークフローの呼び出しアクティビティを使って複数のワークフロー間で処理を行う場合ですが、例えばAがMain.xamlとしてBのワークフローをMain側から呼び出す場合、Bで用いていた引数も変数もすべて初期化されてしまうようです(AからBを呼び出し、Bの処理が終わって処理がAに戻ってから繰り返し処理によって再度Bを呼び出したところ、前回B側の処理によって作成されたデータテーブル変数がnullになっていました)
繰り返しで何回もBを呼び出しても変数や引数の値が消滅することなく引き続き利用し続ける方法を考えているのですが、ワークフローを呼び出しアクティビティで、引数を「入出力」にして、Main側で定義した適当な変数を引数に対して入出力したらできるでしょうか(まだ試してません すみません)
また、他に方法はないでしょうか
Main側で用いるわけでもないのに引数を保持したいという理由だけでMain側で新たに変数を定義するのは設計としてはあまりよくないですよね
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
2
DataTable型で言うと、入力、出力、入出力に関係なく、呼ばれた先での変更が、呼び出し元にも影響する仕様のようです。
ですので、.Copyで別のDataTable領域を渡してあげた方がいいですね。
なんで?って聞いたら、メモリの節約のような事を言っていました。
Yoichi
(Yoichi)
3
こんにちは
変数あるいは引数のスコープを考えれば理解しやすいと思います。
スコープを抜けるとその変数は解放されるので、再度そのスコープに入っても前の状態は保持されておらず、初期状態になる(引数の場合は新たに渡されたものになる)ということです。(ワークフロー呼び出しだけではなく、一つのxamlファイル中での変数スコープでも同じです。)
pthfs1
(pthfs)
4
ありがとうございます。
.Copyで別のDataTable領域を渡すというところがよくわかりませんでしたが、その方法を使うとワークフロー間で値を保持することができるのでしょうか
pthfs1
(pthfs)
5
ありがとうございます。
引数の場合はスコープを定義できませんがワークフローから離れた時点ですべての引数変数は初期化されるのかなと思っています
pthfs1
(pthfs)
6
(追記)
ワークフローを呼び出しアクティビティで、引数を「入出力」にして、Main側で定義した適当な変数を引数に対して入出力したら無事にデータを保持することができました
現状この方法しか思いつきませんが、他の方はどのようにされてるのか気になりました
1 Like