RPA体験談【実践編:Ifを使った条件分岐が複雑になるとき_Invoke Workflow Fileで別のxamlに飛ばす/Dictionary変数を使う】

Ifを使った条件分岐が多くなりすぎて、困ることはありませんか?
その対処方法です。
対処方法を二つご案内します。
1.Invoke Workflow File で 別の xamlに飛ばす
2.Dictionary変数を使う
私は使ったことが無いのですが、他に「Switchアクティビティ」というのも使えそうです。

Ifだけだと可読性が下がる

Ifは便利なアクティビティですが、条件が多くなると、階層が深くなり、とゴチャゴチャしがちです。
例えばこんな感じです。

Invoke Workflow File で 別の xamlに飛ばす

例えば、ExcelApplicationScopeでExcelを呼び出し、1行ずつ処理をする
ForEachRowの中にで、階層が深い条件を設定するには、どうすれば良いでしょうか。
Flow decisionを入れる訳にもいかないし、というときには、「Invoke Workflow File」の出番です。
ForEachRowの 中に Invoke Workflow File をセットして
データテーブルの中の DataRowを Invokeで受け渡します。
子xamlの中での、列ごとのデータの取り出しは、
argDT1Row(“id”).ToString というように、DataRowから、項目名を指定して、変数に代入します。
※ForEachRowの中で良く使う「Get Row Item」では動きませんのでご注意ください。

実際の処理を、以下に表示します。

※今回のケースでは、DataRow以外にExcelファイル名や 書き込み列名 なども受け渡し項目に追加します。
↓画像をクリックすると拡大表示します。
↓画像をクリックすると拡大表示します。上のリストの「Excel Application Scopt」以降です。
上のリストの「For Each Row」からInvokeで飛ばした、別のxaml(ForLoopの中Ver2.xaml)です。
↓画像をクリックすると拡大表示します。

Dictionary変数を使う

Dictionary変数は、Keyと結果がセットになっている変数です。
{“key1”, “結果1”},{“key2”, “結果2”},… の様に指定します。
今回は、選択肢によって、メッセージの文面を変えます。
これをWorkFlowの中でIfで書くと、見にくいので、Dictionary変数を使います。
Keyと結果がセットになっている変数なので、これを、Defaultに予め入れておくと、
見やすいし、メンテナンスもしやすいです。
Dictionary変数の設定方法
↓画像をクリックすると拡大表示します。
↓画像をクリックすると拡大表示します。
Defaultの設定方法
New Dictionary(Of String, String) From{{“key1”, “結果1”},{“key2”, “結果2”}}

日記の目次を作りました。
RPA体験談【目次(主にUiPathについて書いています)】

 

 

 

前へ