ワークフローから別のワークフローの呼び出しに失敗する。

Mainのワークフローから別のワークフロー(X)を呼び出し、
そこからさらに別ワークフロー(Y)を呼び出すと
ワークフローが見つからない旨のメッセージが出ます。
下記のメッセージがエラーメッセージが表示されました。
「ファイル C:hogehoge\Y.xaml が見つかりませんでした。」

【フォルダ構成】
Uipath
├X.xaml
├Y.xaml
A
└main.xaml

【参照関係】
main.xaml→X.xaml→Y.xaml

main.xamlからX.xmalの呼び出しパスは絶対参照で指定されます。(フォルダが異なる為)
X.xalmからY.xalm呼び出し相対パスになっています。(X.xalmとY.xalmが同じフォルダにある為)

ライブラリ化したらいけるのかと思い試してみましたが、
それも「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
とエラーメッセージが出ました。
おそらく同じ原因だと思います。
ワークフローからワークフローをこのように呼び出す方法はないのでしょうか?
ちなみにX.xamlやY.xmalを別フォルダにしているのは、
他のワークフローでも使うような共通ワークフローだからです。

こんにちは

一般的に相対パスは、そのプログラムのCurrentDirectoryが起点となって処理されます
UiPathの場合は、通常プロジェクトフォルダー=Main.xamlのあるフォルダになります。
そのため、X.xamlから相対パスで読み込む記述をしているからと言って、X.xamlのある
フォルダが起点となるわけではなく、あくまでプロジェクトフォルダが起点に
なります。(そのためファイルが見つからないとなります。)

ワークフローからワークフローをこのように呼び出す方法はないのでしょうか?

最終的には絶対パスで指定する方が良いように思えますが...
Xを呼び出すときにパスの情報を渡してあげる等いくつかの工夫は考えられますが...。

1 Like

こんにちは

BlankProcess7.zip (43.6 KB)
ご参考まで

2 Likes

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

一般的に相対パスは、そのプログラムのCurrentDirectoryが起点となって処理されます
UiPathの場合は、通常プロジェクトフォルダー= Main.xamlのあるフォルダになります。
そのため、X.xamlから相対パスでこの記述をしているからと言って、X.xamlのあるフォルダー
が起点となるわけではなく、あくまでプロジェクトフォルダーが起点に
なります。(そのためファイルが別途ないとなります。)

やはりそうなりますよね。
理想は初めの構成でしたが、妥協案で下記の構成でワークフローを作成したところ、
正常に動作しました。
main.xamlからXを読んで、次にYをまたmainから読んでいます。
main.xaml
→X.xaml(main.xamlから呼び出し)
→Y.xaml(main.xamlから呼び出し)