UiPath Developer Community 第8回ワークショップ で聞いてきた内容の覚え書き。。
行ってきました、第8回。回を追うごとに申し込みが困難になってますね、、。ちなみに次回は先着順になっていて、あっという間に埋まってしまいました。。。
さて今回のワークショップはEvent Monitoring やAI連携などがありましたが、自分的に目玉だったのは 「Debugging Custom Activities」つまり「カスタムアクティビティの、デバッガによるデバッグ方法について」です。
Visual Studioからデバッグしたい
ちょっとまえUiPathにおけるカスタムアクティビティの開発方法を結構調べていたのですが、情報がなくて困っていたのが開発したアクティビティのデバッグです。開発したアクティビティはnupkgになってUiPath StudioやRobotから実行されるわけで、Visual Studioからデバッグ起動って出来ないなーっておもってました。
今回の説明でVisual Studio デバッガーで実行中のプロセスへのアタッチ というやりかたを教えてもらいました。起動しているプロセスに対して、あと付けでVisual Studioのデバッガを接続する方法です。
まあ、よくよく聞いてるとUiPathの固有のやり方というよりはVisual Studioでのデバッグの一般論ぽいです。Visual Studio開発に慣れてるヒトにはもしかして当たり前の事だったのかも。
まあJavaでEclipseのケースでも、たとえばMavenで起動したWEBアプリをデバッグするとき
set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n -Xmx1024m -XX:MaxPermSize=128m
ってオプションつけて起動することでEclipseからデバッグできるようになりますが、コレと一緒ですね。
やってみる
今回サンプルでつかってる、カスタムアクティビティのソースです。
このプロジェクトがVisual Studio上で読み込まれている状態で、かつ、UiPath Studio側でこのアクティビティがnupkgとしてインストールされている状態だとします。
あ、ココでnupkgに入れるためのDLLのビルドや、そのDLLをnupkg化する手順について、下記の注意点があります。
注意点1:ReleaseでなくてDebugでビルドする。
UiPath Studioで使用するカスタムアクティビティの作成方法#いったんビルド では、
ツールバーの Debug をReleaseへ変更し、ビルド>>ソリューションのビルド を選択します。
と書きましたが、デバッグのための情報を保持したDLLを作成するため、Debugのままでビルドします。
Debugでビルドすると、下記の出力(コンソール)からも分かるとおり、DLLファイルは Debugのディレクトリに出力されます。
1>------ すべてのリビルド開始: プロジェクト:Utils, 構成: Debug Any CPU ------
1> Utils -> Z:\git\Path\Utils\bin\Debug\kino.UiPath.Utils.Activities.dll
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
次に書きますが、nupkgにする際にはこちらのDLLを使用します。
注意点2:nupkg 作成コマンド nuget pack のオプション変更
さて、上記で作成したDLLをnupkgにするのですが、UiPathのカスタムアクティビティのnupkgの作り方 では
Z:\git\Path\Utils> nuget pack Utils.csproj -Prop Configuration=Release
と書いたオプションの「Release」を
Z:\git\Path\Utils> nuget pack Utils.csproj -Prop Configuration=Debug
と「Debug」にします。そうすることで、DebugのディレクトリのDLLをつかってnupkgファイルを作成してくれます。
ついでにもう一点、細かい話ですが、UiPathのカスタムアクティビティ開発で、リソースの外部化とローカライズを行うで、nupkg作成用の設定ファイル「Utils.nuspec」に、下記のように
<files>
<file src="bin\Release\ja\*.dll" target="lib\net45\ja" />
</files>
で「Release」ディレクトリのリソースファイルを明示的に指定していますが、厳密にはDebug側のファイルを利用するように記載を変えた方がよいでしょう。今回は、Release側に出力されているものをそのままつかっちゃえばいいやって事で、ココはいじらないでやってます。
デバッガからデバッグする
この作成したnupkgを UiPath Studioにインストールしておきましょう。
以上で、Visual Studio上でカスタムアクティビティのプロジェクトを読み込んだ状態でかつ、UiPath Studio側でデバッグ用nupkgがインストールされている状態になりました。
UiPath Studio上でカスタムアクティビティを使用したワークフローを作成し、UiPath Studioからワークフローを起動しておきます。その際、ワークフローが終了してしまわないよう MessageBox などで、実行中の状態を保っておくようにします。というのは、Visual Studioは起動しているプロセスに対してデバッガをアタッチするのですが、今回アタッチしたいプロセス「UiPath.Executor.exe」はワークフロー実行中にしか起動していないからです。
ようするにこんな感じのワークフローを作成し実行しておきます。
つづいて Visual Studio 側で「デバッグ >> プロセスにアタッチ」を選択します。
表示されたダイアログ上で「UiPath.Executor.exe」を選択し「アタッチ」をクリック。
Visual Studioがピピピって(?)反応するので、そしたら MessageBox を押下してワークフローをすすめると、、、
おお!デバッグ接続できましたね!paths変数の値などもちゃんと確認することが出来ます。
いやー、これで開発が捗りますね。
今回もとても有意義な情報を収集することが出来ました。ありがとうございます。
さいごに
デバッグのやり方のスライドと、ノベルティの「ノ・ミカタ」と、お食事。ノ・ミカタは忘年会に向けて需要がありそうです:-)。
食事は「四谷(?)の有名なカレー屋ですよ」 とおっしゃっていました(たぶんココ)。辛めでおいしかったです。しかし、スプーンだとお芋をいただくのに限界がありました :-)
おつかれさまでした。。