#UiPathでライブラリを直接呼出す
UiPathでは、OrchestratorやUiPath Goなどから、カスタムライブラリを追加することが容易になりましたが、実証実験の段階から、Orchstratorを入れたり、UiPath Goにお客様専用のライブラリを登録することは困難だったり、そもそもネットワークのホワイトリストですら登録いただくことに、大変だったりしますよね
本投稿では、自分で作ったカスタムライブラリ(DLL)を.nugetからではなく、直接、呼び出す方法を紹介します。
開発のきっかけ
最近では当たり前ですが、昔はUiPathでカスタムライブラリを作成するには、
Visual StudioでDLLを作成し、Nuget ExplorerなどでDLLをnuget化して利用しかありませんでした。
UiPathでデバッグするにも、Immediate Panelがなかったり、現時点でもComやラムダ式をデバッグしたり
解析することができませんでした。
お約束事項(免責事項)
この記事は2020年6月時点の情報を基に作成しております。
記事の内容は私個人の見解であり、所属する組織の公式見解ではありません。
利用イメージ
利用イメージは、カスタムライブラリのDLLを特定のフォルダ(例えばプロジェクトの配下など)に格納し、
xamlファイルをInvokeするのと同じような感じで、DLLファイルから呼び出してみたいと思います。
カスタムライブラリ
サンプルで利用できるDLLはこちらで用意しました。
https://github.com/takusonix/UiPathCustomLibrary/raw/master/UiPathCustomLibrary/bin/Release/UiPathCustomLibrary.dll
ソース内容はこちらです。
using System.Windows;
namespace UiPathCustomLibrary
{
public static class TestClass
{
public static void Test1()
{
MessageBox.Show("Hello World");
}
public static void Test2(string message)
{
MessageBox.Show(message);
}
public static int Test3(int a, int b)
{
return a + b;
}
}
}
サンプルDLLを利用せずに、ご自身で用意いただいても構いません。
UiPathのプロジェクト構成
UiPathのプロジェクト構成は、このようになっています。
カスタムライブラリのサンプル(UiPathCustomLibrary.dll)はプロジェクト直下に格納しています。
UiPathの実装
1. アセンブリ変数の作成
2. 型を変更
asmの型をBrowse for Types...
を選択します。
3. 型名
Type NameにSystem.Reflection.Assembly
を入力し、Asssemblyを選択します。
4. Assignの追加
Assign(代入)アクティビティを追加し、左辺にasm
を設定します。
5. Assignの値を設定
Assignの右辺に以下の値を設定します。
Assembly.LoadFile( _
Path.Combine( _
Environment.CurrentDirectory, _
"UiPathCustomLibrary.dll" _
) _
)
これで、DLLをロードすることができました。
6. 変数の追加
実行するメソッドの変数を追加します
- 名前空間(usingName)
- クラス名(className)
- メソッド名(methodName)
7. 変数の値を設定
変数に値をそれぞれ設定します。
- usingName = "UiPathCustomLibrary"
- className = "TestClass"
- methodName = "Test1"
8. 実行結果の変数を追加
実行結果を設定する変数 resultObj
を追加し、変数の型をObject
に変更します。
9. Assignの追加
10. 処理の呼び出し
resultObjの値に、以下の値を設定します
asm _
.GetType( usingName + "." + className ) _
.GetMethod(methodName) _
.Invoke(Nothing, Nothing)
UiPathの実行
実行すると、Hello Worldのメッセージが表示されます。
(メッセージボックスが前面に表示されてない場合、画像の通り、タスクバーからUiPathRobotの無名のタスクをせんたくしてください。)
終わりに
本投稿では、メソッドの呼び出しまでに留めております。
サンプルのカスタムライブラリで用意している Test2やTest3のメソッドや、引数の設定、実行結果の取得については、別投稿します。
もし、よければLGTMをお願いします。