UiPathのInvoke Workflow Fileアクティビティを活用しよう!前編
UI開発者 宇賀
皆さんこんにちは!UI開発者の宇賀です。
今回のテーマは、ロボットをモジュール単位で管理する方法についてです。
UiPathでロボットを作るとき、すべての作業を1つのmain.xamlの中に詰め込んで作る方法もありますが、その中にある機能1つ1つを別のxamlファイルに切り出して管理していくという方法をご紹介します。
少々記事が長くなりそうですので、前編後編に分けてお送りしたいと思います。
モジュール化をする上で重要なアクティビティ「Invoke Workflow File」
さて、この前編では「Invoke Workflow File」というアクティビティについて紹介していきます。
早速このアクティビティの利用例を見ていきましょう。
1. 新しいxamlファイルを作成する
既存のプロジェクトでもよいですが、ここでは適当なプロジェクトを作成してからリボンUIの中にある「New」を選択します。
2. 新しいFlowchartを作成する
Nameには、どのようなタスクを行うモジュールなのかを記述するとよいでしょう。ここでは仮に「モジュール化する機能名」とします。
実務でモジュールを用意する場合はモジュールをどのディレクトリに格納するか、というところから定義しておくと運用時に混乱が少なくて済みますが、今回は例ですので「Location」は一旦先ほど作成したMain.xamlが保存されているのと同じ位置にしておくことをおすすめします。
3. 引数名と初期値を定義する
Arguments タブを選択し、引数を定義します。
「変数」のうち、別のxamlファイルに引き渡したり、渡される値のこと「引数」と呼びます。
つまり、ここで定義している「argument1」は別のアクティビティから渡された値を引き取るために用意された変数ということです。
今回は仮に、引数名「argument1」、型は「String」、初期値「"hoge"」としておきますが、実際に業務で設計する場合は「名前で意味のわかる引数名」と「妥当な初期値」にしておくべきだということに注意してください。
4. 引数「argument1」の値をOutputに出力するように設定する
Outputコンソールに値を出力するには「Write Llineアクティビティ」を利用します。
「モジュール化する機能名」のタブにカレントしているのを確認した上でWrite Lineアクティビティを設置し、Textに「argument1」と指定しましょう。
このとき「Run」を実行すると、画面下部のOutputエリアには「hoge」と出力されるはずです。なお、この「hoge」は先ほど定義した初期値の「hoge」です。
5. Main.xaml内にInvoke Work flowアクティビティを設置する
前述の通り、UiPathでロボットをモジュール化するための鍵を握るのが、予め用意されている「Invoke Workflow File」というアクティビティです。
このアクティビティは、ある1つのxamlファイルから別のxamlファイルを読み込み、同期的に実行させることができる大変便利なアクティビティです。
このアクティビティは非常に重要ですから覚えておきましょう。
Mainタブに切り替えてからアクティビティを設置します。
6. 外部xamlファイルの呼び出し設定を行う
Invoke Workflow fileアクティビティの「WorkflowFileName」に先ほどまで編集していたxamlファイルを設定します。
Invoke Workflow flieアクティビティをダブルクリックすることで上記キャプチャの画面に遷移することができますが、画面右側の「Properties」からも「WorkflowFileName」の値を編集することができます。
呼び出すxamlファイルを設定できたら、「Import Argument」ボタンを選択しましょう。
7. 引数の値を設定する
先ほど定義したargument1に入れる値を設定します。ここでは仮に、「"piyo"」としましょう。
8. RUNを実行してみる
以上の手順を踏むと、「モジュール化する機能名.xaml」で実行したときと異なり、Outputコンソールに「piyo」と出力されているのがおわかりいただけるかと思います。
まとめ
いかがでしたでしょうか?引数をうまく使って汎用的なxamlファイルモジュールを用意しておけば、運用効率があがりそうですよね。
先ほどの例のようにMain.xamlファイルでは、切り出したxamlファイルモジュールをひたすらInvoke Workflow Fileで叩いていくような形にしておけば、パーツの付けはずしだけでワークフローの変化へ柔軟な対応をすることができます。
今回はただWrite Lineアクティビティでコンソールに出力する文字列を上書きしただけでしたが、読み込むファイルのパスや書き出し先のパスなどを引数にして管理すれば、何度も同じフローを組みなおす必要もなくなります。
この記事が面白かった!と思った方は、ぜひぜひシェアボタンを押していただけるとうれしいです!
次回は、この手法のメリットとデメリットについてご紹介したいと思いますのでお楽しみに!