(O+P)ut

(O+P)ut

(O+P)ut = OutPut

【BluePrism入門】グローバル変数とローカル変数

f:id:mtiit:20180822175446j:plain:w60

BluePrismとは以下のようにフローを作成しながら、自動化したい作業を実現していくRPA*1ツールとなります。

f:id:mtiit:20180822155107p:plain
見た目はフローチャートのようですが、構造化プログラミング言語のように記述していくので、例にもれず「グローバル変数」と「ローカル変数」が存在します。



本記事では、BluePrismの中におけるそれらを、簡単に説明します。


まずは言葉の定義ですが、

  • グローバル変数(global variable):全てのスコープからアクセスできる変数
  • ローカル変数( local variable):プログラムの一部分でしか利用できない変数


簡単に言えば、

どこからでも使えるのがグローバル変数で、
使える範囲が決まってるのがローカル変数

です。



こう書くと、すべてグローバル変数でいいじゃん とか思っちゃいますが、プログラミング経験者の方はご存知の通り、どこからでもアクセスができるようというのは便利というメリット以上に恐ろしい側面もあります。*2


よって、基本的には変数はローカル変数を採用し、やむを得ない場合に限り、グローバル変数を採用するのが開発の王道です。


ご他聞に漏れず、
BluePrismもデフォルトで変数を用意するとローカル変数になっています。


簡単な例と共に見てみましょう。

f:id:mtiit:20180822161708p:plain


スタートをすると、Page1というページ(関数)に飛んで、

演算をData2に格納し、Page1をクローズし、全体としても終了します。

ここで、Page1の外にあるData1の設定ファイルを見ると以下のようになっています。

f:id:mtiit:20180822174056p:plain

赤線を要約すると、「他のページから非表示にする」、つまり、Data1はPage1からアクセスができないローカル変数となっています。

この状態で、Page1の中で Data1の値をData2に格納しようとすると、以下のようなメッセージが出ます。

f:id:mtiit:20180822174559p:plain
"Your expression does not appear to be valid:
Data item [Data1] cannot be accessed from stage 'Calc1' because it has been hidden from the current page.
"

要するに、データ項目[Data1]にアクセスできないよ、と言ってます。

ここで、先ほどの赤線の項目のチェックを外すと、問題なくPage1の中で参照できる、つまり、Data1がグローバル変数となります。
値を参照するだけでなく、計算結果に[Data1]を指定すると、Page1の中で計算が行われ、Data1の値が更新されます。



以上、ご参考ください。

*1:Robotic Process Automation

*2:別の関数などから知らないうちに値がいじられたり...