はじめに
この投稿は、RPA ツールの UiPath でフローのファイルとして使用される「Xaml」ファイルについての記事です。
全部は紹介しきれないので、ざっくり概要だけ紹介します。
この投稿は、UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 14日目の投稿でもあります。
企画の内容は こちら 。カレンダーのURLは こちら です。
Xamlとは
Xaml(ザムル)はExtensible Application Markup Languageの略で、XMLベースのマークアップ言語です。.NET Framework 3.0以降のテクノロジーにおいて広範囲にわたり使用されています。データ構造やUi定義によく使用されますが、UiPath/Windows Workflow Foundation(※)では「ワークフローを定義する」ために使用されます。
UiPathは「Windows Workflow Foundation」をベースに作成されています。
Xamlを開いてみる
今回は、Ref(Robotic Enterprise Framework)の「Main.xaml」を開いてみてみます。
上部:ワークフローの設定
xamlの上部には、XMLネームスペース(xmlns)、引数(x:Members)、注釈(AnnotationText)、画面サイズ(HintSize)、使用するDLLネームスペース(NamespacesForImplementation・ReferencesForImplementation)などがあります。
XMLネームスペースは、XAML内で記述するタグの説明です。例えば、
xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"
とありますが、これは 「SAP」と言ったら「Schemas・・・Activities/Presentation」を指す
という意味です。(ERPのSAPではありません)
同じようなネームスペースで
xmlns:sap2010="http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation"
とありますが、これは上記SAP(Schemas・・・Activities/Presentation)の2010バージョンを指しています。
2010年に .NET Framework 4 に対応するために、Windows Workflow Foundation が大きくアップデートされたので、その対応版の機能であることをしてしているようです。
また、「.NET Framework」を示すネームスペース「X」や
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml
UiPath独自のコンポーネントを示すネームスペース「ui」などもあります。
xmlns:ui="http://schemas.uipath.com/workflow/activities
ネームスペース以外のブロックを見てみると、引数を示す「x:Members」や変数を示す「x:boolean」などもあります。
「NamespacesForImplementation」や「ReferencesForImplementation」はそのxamlで使用する、DLLのネームスペ-スを表します。
「VirtualizedContainerService.HintSize」はフローの横幅を示します。ちょっと保存しただけで、値が変わってしまうので、GitやSvn等のリポジトリ管理ツール泣かせのタグです。
<sap:VirtualizedContainerService.HintSize>707.333333333333,860</sap:VirtualizedContainerService.HintSize>
真ん中から下
使用するフローの種類でタグが変わり「Sequence・FlowChart・StateMachine」のいずれかになります。Xamlを追加する時に選択する「フローの種類」と同じです。
中を見てみると「Variableタグ」で変数が定義されていたり「Sequenceタグ」 で シーケンスが表現されています。UiPath独自のアクティビティなら「Ui:」とタグに書かれます。
見ていくと分かるのですが、Sequence等のフローの大枠は「Windows Workflow Foundation」の機能をそのまま使っているようで、UiPathのベースが「Windows Workflow Foundation」であることが感じ取れます。
Xamlを解析する
上記の通り、xamlファイルの中身を読み取れば、処理の内容がわかります。
- どういうアクティビティを使用しているか?
- 変数のスコープはどうなっているか?
- 他のアプリケーションを呼び出しているか?
などを出力することも可能で、コードレビューや見直し、ドキュメント作成に利用できます。
そこで、以下のようなツールを作成しました。
実行すると、プロジェクトの内容をHTMLで出力します
終わりに
いかがでしたでしょうか。
xamlを開く機会はあまりないとは思いますが、何かの参考になれば幸いです。
この記事が参考になったら「LGTM」をお願いします。閲覧ありがとうございました。