UiPathから別製品で用意されたdllのAPIを呼び出したいです

こんにちは。1点質問させていただきます。
dllを利用する方法の手がかりが欲しいため、何か情報ございましたらご教示ください。

現在、Docuworksという製品のAPIをUiPathから利用したく検証をしております。
・UiPath Studio: Enterprise Edition v2022.10.14
・プロジェクト: VB/Windows

質問

Docuworksがインストール済みであれば「xdwapiwn.dll」を利用することでAPIが利用できるようです。(下記公式ドキュメントの(1)のと(2)のAPIのうち、(2)の.NET用のAPIが利用できそうだと考えております。)
しかし、.NETやC#の知識が乏しくUiPathからの利用方法がわかりませんでした。
[コードを呼び出し]などを利用する方法でも構いませんので、何かdllを利用する方法の手がかりが欲しいです。

Docuworks公式ドキュメントより抜粋

(1) DocuWorks API
DocuWorks API(以下、「XDWAPI」)はDocuWorks文書を他のアプリケーションから変換、操作するためのライブラリです。
(2) XDWAPI .NET
XDWAPI .NETは、Microsoft(R) .NET FrameworkからXDWAPIを利用するためのライブラリです。

やりたいこと

複数のxdwファイルをAPIの “XDW_MergeXdwFiles” というメソッドを通してマージしたい。

試したこと

現状、以下を試し利用できそうな感触は得ています。
[.NET コードを挿入]というアクティビティで、試しに「xdwapiwn.dll」を「アセンブリ」に設定してみました。
その結果、画像のとおり「種類名」が自動設定され「メソッド名」もドロップダウンから選択できるようになりました。
しかし、このアクティビティは「対象のアプリケーションのメイン UI スレッドに .NET コードを挿入します。」という機能であり、今回UIは特にありませんのでこのアクティビティは実行エラーとなりました。

アセンブリ:"dwsdk917\dotNET\bin\xdwapiwn.dll"
種類名:"FujiFilm.FB.DocuWorks.Toolkit.Xdwapi"
メソッド名:"XDW_MergeXdwFiles"

[.NET コードを挿入]実行時のエラーメッセージ

ソース: .NET コードを挿入

メッセージ: 種類がサポートされていません。

例外の型: UiPath.Core.Activities.InjectDotNetTypeNotSupportedException

UiPath.Core.Activities.InjectDotNetTypeNotSupportedException: 種類がサポートされていません。   at UiPath.Core.Activities.InjectDotNetCode.ExecuteAsyncWithResult(AsyncCodeActivityContext context, CancellationToken cancellationToken)
   at UiPath.Core.Activities.ObsoleteTaskAsyncCodeActivity`1.BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, Object state)
   at System.Activities.AsyncCodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

こんにちは

当該DLLをnupkgとして固めて、パッケージ管理から読み込むと参照できないでしょうか?

ご回答ありがとうございます。

当該DLLをnupkgとして固めて、パッケージ管理から読み込むと参照できないでしょうか?

知識がなく申し訳ありませんが、
DLLをnupkgとして固める手段には、どういった方法がございますでしょうか。
有償の開発環境などは用意せずに実施可能な手段がございましたら、ぜひ試したいと思います。

以下いかがでしょうか?

1 Like

ご回答ありがとうございます。

NuGet Package Explorer を利用し「xdwapiwn.dll」1ファイルのみ配置し、nupkgを作成しました。作成手順は下記を参考にしています。
【参考】UiPath:カスタムアクティビティとNuGet Package Explorer #Activity - Qiita

しかし、UiPathでパッケージ管理から読み込もうとすると下記のとおり
「Windowsプロジェクトに対応しているバージョンがありません」と出てしまいました。
nupkgファイルの中身も念のため確認しましたが「xdwapiwn.dll」は存在しているようです。
原因はわかりますでしょうか。

image

UiPath Studio側の要件として、nupkgファイルの属性としてTargetFrameworkを設定する必要があったと思います。

ご回答ありがとうございます。

TargetFrameworkに “net6.0” を指定したところ、パッケージ管理からインストールまでできました。

ここから題名のdllのAPIを呼び出しを行いたいのですが、どのように行うかご教示いただけませんでしょうか。参考となる情報のリンクなどがありましたらよろしくお願いします。
(並行して試行錯誤もしてみます。)

どのクラスのどのメソッドでしょうか?各アクティビティのエディタで呼び出せませんでしょうか?

ご回答ありがとうございます。

各アクティビティのエディタで呼び出せませんでしょうか?

[コードを呼び出し] のアクティビティで、コード補完で表示されるか試してみましたが表示はされませんでした。もう少し試行錯誤してみたいと思います。
インポートされた名前空間には「FujiFilm.FB.DocuWorks.Toolkit」を設定してみました。

どのクラスのどのメソッドでしょうか?

最初に投稿した画像のメソッドが呼び出したいと思っています。
具体的には下記となります。

アセンブリ:"dwsdk917\dotNET\bin\xdwapiwn.dll"
種類名:"FujiFilm.FB.DocuWorks.Toolkit.Xdwapi"
メソッド名:"XDW_MergeXdwFiles"

よって、おそらく下記になると思います。
(的外れなことを言っていたら申し訳ありません。)

名前空間:FujiFilm.FB.DocuWorks.Toolkit
クラス名: Xdwapi
メソッド名:XDW_MergeXdwFiles

手元に当該DLLがないので試せせないのですが、可能でしたらそのDLLかnupkgファイル共有可能でしょうか?(このフォーラムのDMで送ってもらっても構いません)

こんにちは

DMの方でも返しましたが、以下の様に設定してみてください。
(なおさらにその先の参照も同梱しないといけないかもしれませんので、そのあたりは調整ください)

image

1 Like

返答が遅くなり申し訳ございません。
結果、無事にUiPath上で利用することができました。本当にありがとうございます。

実施したこと

  1. Yoichi様から受領した nupkg でUiPath Studio上で正常に動作することを確認しました。
  2. いただいた Nuget Package Explorer の設定画像をもとに私の方でも nupkg を作成し、こちらも正常に動作することを確認しました。

私の nupkg が動作しなかった理由

Nuget Package Explorerでの設定が正しくなかったためです。
(libフォルダ や net6.0 フォルダなどを作成せずに、直下にDLLファイルを配置していました。)

無事解消されたため、本質問は解決とさせていただきます。
アドバイスのみにとどまらず nupkg 作成などまでしていただき、ありがとうございました。

3 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.