さて前回までで、単体のRobotからカスタムアクティビティを利用するために、どこにそのカスタムアクティビティのnupkgを配置すればよいかについてしらべました。そのnupkgは個別にRobotの端末に配置する必要があったわけですが、今回はOrchestratorに接続しているRobotはどうすればよいかを整理します。
対象のシナリオ
いままでと同様、下記のカスタムアクティビティを使用しているシナリオ CustomActivityTest を使用します。
全体像
構成がややこしくなってきたので図で整理。Visual Studioでカスタムアクティビティ(ActivitiesPathUtils)を作成し、そのnupkgを作成します。同じ端末にあるUiPath Studioで、それを使用するUiPathのシナリオ(Package?) であるCustomActivityTest を作成します。まあ、ここまではいままでやってる作業と全く変わらずですね。
さてそのUiPath StudioからOrchestratorへPackage をPublishします。カスタムアクティビティを使っていなければ、ふつうにOrchestratorから図中下のロボット単体の端末へそのPackageをデプロイすればよいわけですが、カスタムアクティビティを使用する場合どこからそのnupkgを取得すればよいか、ってのを整理したいと思います。
結論をいうと図にあるようにOrchestratorにそのカスタムアクティビティのnupkgを配置(Push)しておくことで、Packageのデプロイ時にそれらのnupkgも自動で取得できるようになっています。
Robotからカスタムアクティビティを使う(Orchestrator接続ケース)
StudioからのPublish
Orchestratorに接続済みのUiPath Studio上で、Publishを行います。
一応Orchestrator上でPublishされていることを確認します。
Orchestrator上で、該当PackageとRobotを紐付けます(蛇足ですが、Environmentは日本語訳は「ロボットグループ」になるようですね)
ロボット単体端末からの実行
Environment に属しているロボット端末には、CustomActivityTest が配布されているとおもいます。
実行してみると、、、想定通りやっぱりダメですね。。Orchestratorなし版でやっていたのと同様、アクティビティがない的なエラーになります。
カスタムアクティビティのOrchestratorへのアップロード
さてカスタムアクティビティがないよってエラーからも分かるとおり、カスタムアクティビティ ActivitiesPathUtils のnupkgは個別に配布が必要みたいです。
しらべたところOrchestratorは、nupkgをホスティングするNuGetサーバの役割も担っているようで、NuGet関連の知識が活用出来そうです。ワタクシあまりMicrosoft 界隈に詳しくないのですが、NuGet パッケージの公開方法 この辺を参考にやってみます。
このサイトをみるとnupkgのNuGetサーバへの公開は、下記のようなコマンドを使うようです。
dotnet nuget push AppLogger.1.0.0.nupkg
-k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6
-s https://api.nuget.org/v3/index.json
ドットネット、、、こんなコマンドあんのかな?とおもって叩いてみたら、ありました :-)。.NET Framework に同梱されていたんですかね、、。
さて、-k オプションはAPIキー、-sオプションのURLはNuGetサーバのURLっぽい。どう指定するのかしらべたところ、これらはOrchestratorに接続した端末の %programData%\UiPath\UiPath.settings
に書いてありました。
{
"NuGetApiKey": "78542xxx-xxxx-xxxx-xxxx-xxxxxxxxxx", ← -kに指定
"NuGetServerUrl": "https://[サーバ名]/nuget/feed/default",
"ActivitiesFeed": "https://[サーバ名]/nuget/activities", ← -sに指定
"UiPathServerUrl": "https://[サーバ名]",
"TracingLevel": "Information",
"LowLevelTracing": false,
"SecureLicenseKey": "xxxx",
"LoginToConsole": true,
"ResolutionWidth": 0,
"ResolutionHeight": 0,
"ResolutionDepth": 0,
"FontSmoothing": false,
"ConnectionString": ""
}
ちなみにAPIキーはOrchestratorのWEB画面上、Settings >> Deployment からも確認可能です。
さてやってみます。Visual Studio側の端末の、カスタムアクティビティのnupkgがあるディレクトリで、下記の通りコマンドを実行します。
Z:\git\Path\Path>dir ActivitiesPathUtils.0.0.15.nupkg
2018/10/10 13:49 10,731 ActivitiesPathUtils.0.0.15.nupkg
1 個のファイル 10,731 バイト
0 個のディレクトリ 156,051,349,504 バイトの空き領域
Z:\git\Path\Path> dotnet nuget push ActivitiesPathUtils.0.0.15.nupkg
-k 78542xxx-xxxx-xxxx-xxxx-xxxxxxxxxx
-s https://[サーバ名]/nuget/activities (実際は一行で)
info : ActivitiesPathUtils.0.0.15.nupkg を 'https://[サーバ名]/nuget/activities' にプッシュしています...
info : PUT https://[サーバ名]/nuget/activities/
info : Created https:/[サーバ名]/nuget/activities/ 367 ミリ秒
info : パッケージがプッシュされました。
Z:\git\Path\Path>
おおお、パッケージがプッシュされた、と。。じっさい、Orchestratorサーバ側でみてみると、
ちゃんとアップロードされていますねー。
再実行
さてOrchestratorにカスタムアクティビティのnupkgがアップされたので、再実行してみます。
実行できました。
まとめ
カスタムアクティビティを作成してそのnupkgをどのように共有するかについて、UiPath Studioから使用する場合 、単体Robotから使用する場合、Orchestratorに接続したRobotから使用する場合、をそれぞれ整理しました。
個別にnupkgを配布・共有する必要があったカスタムアクティビティですが、Orchestratorを導入することでその必要がなくなり、とても便利になることが分かりました。
おつかれさまでした。
ソースコード
https://github.com/masatomix/UiPath_Path/releases/tag/0.0.15
に配置しました。
関連リンク
- UiPath.Settings ファイルの説明 ロボットのガイド
- アクティビティパッケージの管理 Studioのガイド
- NuGet パッケージの公開方法