グローバル変数のような使い方をしたい場合は引数を使うのですか?

uipathにグローバル変数のような考え方がないと知りました。その代替をどうするかという質問です。
作りたいものの概要は、エクセルの一行一行を処理していきます。
A.メインフロー:エクセルをDataTableに読み込む/1行毎にのワークフローBを呼び出す/全体結果(DataTable)をエクセル(新しいファイルX)に書き出す
B.主となる処理を行う/処理結果を書き込むフローCを呼び出す
C.現在の行の処理結果をDataTableに結果を書き込む

この場合、フローBとフローCでDataTableを引数(in/out)として定義し、フローAで変数としてDataTableを定義すれば、エクセルの全部の行を処理し終わった後に、Aの最後でDataTableをエクセルに書きだせば、A/B/Cで編集した最終的なDataTableの内容がファイルXに書き出されるのでしょうか?

こんにちは

間違いではありませんが、DataTableとDataRowの特性を考えれば
AからBに渡すのはDataRowだけで十分で、そのDataRowを更新すれば元のDataTableも更新されますので、上記のような処理は不要かと思います。

1 Like

こんにちは
いちおうサンプル掲載しておきます。

呼び出し元とと結果

呼び出し先

サンプルプロジェクト
Sample20221011-6.zip (4.0 KB)

1 Like

サンプル含めありがとうございます。いろんなやり方があって悩みながら進めていますが、少しスッキリできそうです。

最新のStudioですとグローバル変数作れるようになっているみたいです。
データマネージャパネルから変数>新規作成でスコープをGlobalにすると作れます。
これだと引数利用なしでinvokeを超えて変数が維持されるようなのでご期待通りの扱いができるのではと思います。

おっしゃる通りですが二つ制限があります:

  1. ワークフロー呼び出すのISOLATED財産が使ったら、グローバル変数は使えなくなります。
  2. グローバル変数は .Net6プロジェクト(Windowsプロジェクト)だけにあります。
2 Likes

確かに、invokeでプロセス分離するとアウトですね。
windowsレガシで使えないのは・・まあ仕方なしか・・