LoginSignup
2
0

More than 3 years have passed since last update.

UiPathでライブラリに引数を設定して呼び出す

Posted at

UiPathでライブラリに引数を設定して呼び出す

前回の記事「UiPathでライブラリを直接呼び出す」の拡張編です。
UiPathのプロジェクトファイルに格納されたDLLに対して、引数を設定して呼び出す方法を紹介します。

開発のきっかけ

最近では当たり前ですが、昔はUiPathでカスタムライブラリを作成するには、
Visual StudioでDLLを作成し、Nuget ExplorerなどでDLLをnuget化して利用しかありませんでした。

UiPathでデバッグするにも、Immediate Panelがなかったり、現時点でもComやラムダ式をデバッグしたり
解析することができませんでした。

お約束事項(免責事項)

この記事は2020年6月時点の情報を基に作成しております。
記事の内容は私個人の見解であり、所属する組織の公式見解ではありません。

カスタムライブラリ

前回の記事で使用したサンプルのカスタムライブラリを使用します

ソース内容

前回のソースと同じものです。
今回は、Test2のメソッドを使用します。

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;
        }
    }
}

UiPathのプロジェクト構成

こちらも、前回と同様の構成を想定しております。
カスタムライブラリのサンプル(UiPathCustomLibrary.dll)はプロジェクト直下に格納しています。

image.png

UiPathの実装

基本的には、前回と同様の実装です。変更点は以下の3つです。

  • 「6.変数追加」で引数用の変数paramObjを1次元配列のオブジェクトObject[]で追加し、「7.変数の値を設定」で値を設定します。
  • 「7.変数の値を設定」では、使用するメソッド名を「Test1」から「Test2」に変更します。
  • 最後に、「10.処理の呼び出し」で引数を設定した呼び出しに変更します。

1. アセンブリ変数の作成

UiPathでasmという変数を作成します。
image.png

2. 型を変更

asmの型をBrowse for Types...を選択します。
image.png

3. 型名

Type NameにSystem.Reflection.Assemblyを入力し、Asssemblyを選択します。
image.png

4. Assignの追加

Assign(代入)アクティビティを追加し、左辺にasmを設定します。
image.png

5. Assignの値を設定

Assignの右辺に以下の値を設定します。

Assembly.LoadFile( _
    Path.Combine( _
        Environment.CurrentDirectory, _
        "UiPathCustomLibrary.dll" _
    ) _
)

image.png

これで、DLLをロードすることができました。

6. 変数の追加

実行するメソッドの変数を追加します

  • 名前空間(usingName) : String
  • クラス名(className) : String
  • メソッド名(methodName) : String
  • 引数(paramObj) : System.Object[] or Object[]

image.png

7. 変数の値を設定

変数に値をそれぞれ設定します。

  • usingName = "UiPathCustomLibrary"
  • className = "TestClass"
  • methodName = "Test2"
  • paramObj = {"Hello RPA World!"}

image.png

8. 実行結果の変数を追加

実行結果を設定する変数 resultObj を追加し、変数の型をObjectに変更します。

image.png

9. Assignの追加

実行と実行結果を設定するAssignを追加します。

image.png

10. 処理の呼び出し

resultObjの値に、以下の値を設定します

asm _
    .GetType( usingName + "." + className ) _
    .GetMethod(methodName) _
    .Invoke(Nothing, paramObj)

image.png

UiPathの実行

実行すると、Hello Worldのメッセージが表示されます。
(メッセージボックスが前面に表示されてない場合、画像の通り、タスクバーからUiPathRobotの無名のタスクをせんたくしてください。)

image.png

終わりに

本投稿では、メソッドに引数を設定して呼び出す方法をご紹介しました。
サンプルのカスタムライブラリで用意している Test3のメソッドや、引数の設定、実行結果の取得については、別投稿します。

もし、よければLGTMをお願いします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0