代入アクティビティでキャスト例外

いつもお世話になっております。
代入アクティビティ内で想定していない例外が発生し、原因がわからないため皆様のお知恵をお貸し願いたいです。

<やっていること>
データテーブルの列(RowId)にInt32の最大値を代入する
列の型はInt32型

<発生している事象>
・代入自体はできているが、下記のエラーが発生して後続処理ができない
・エラー内容についても見覚えのない型のキャストに失敗したと出ており、
調査にあたっての切り分けができていない状況
<環境の情報>
UiPath Studio 2022.4.4
System.Activities = 22.4.1
UIAutomation.Activities = 22.4.4
Windowsレガシ
言語:VB

<代入アクティビティの中身>

CurrentRow("RowId") = Int32.MaxValue

<代入前のアクティビティ中身>
同じく代入だが、データテーブル内の文字列データを「・」で結合している

Add_Row("データ列名")=Add_Row("データ列名").ToString + "・" + CurrentRow_rowdt("データ列名").ToString

<エラーメッセージ>

RemoteException wrapping System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。  ---> RemoteException wrapping System.InvalidCastException: 型 'NLog.Logger' のオブジェクトを型 'System.Data.DataView' にキャストできません。 
   場所 System.Data.DataViewListener.IndexListChanged(ListChangedEventArgs e)
   場所 System.Data.Index.<>c.<OnListChanged>b__88_0(DataViewListener listener,
ListChangedEventArgs args,
Boolean arg2,
Boolean arg3)
   場所 System.Data.Listeners`1.Notify[T1,T2,T3](T1 arg1,
T2 arg2,
T3 arg3,
Action`4 action)
   場所 System.Data.Index.OnListChanged(ListChangedEventArgs e)
   場所 System.Data.Index.OnListChanged(ListChangedType changedType,
Int32 newIndex,
Int32 oldIndex)
   場所 System.Data.Index.RecordStateChanged(Int32 oldRecord,
DataViewRowState oldOldState,
DataViewRowState oldNewState,
Int32 newRecord,
DataViewRowState newOldState,
DataViewRowState newNewState)
   場所 System.Data.DataTable.RecordStateChanged(Int32 record1,
DataViewRowState oldState1,
DataViewRowState newState1,
Int32 record2,
DataViewRowState oldState2,
DataViewRowState newState2)
   場所 System.Data.DataTable.SetNewRecordWorker(DataRow row,
Int32 proposedRecord,
DataRowAction action,
Boolean isInMerge,
Boolean suppressEnsurePropertyChanged,
Int32 position,
Boolean fireEvent,
Exception& deferredException)
   場所 System.Data.DataRow.EndEdit()
   場所 System.Data.DataRow.set_Item(DataColumn column,
Object value)
   場所 System.Data.DataRow.set_Item(String columnName,
Object value)
	--- End of inner exception stack trace ---
   場所 System.RuntimeMethodHandle.InvokeMethod(Object target,
Object[] arguments,
Signature sig,
Boolean constructor)
   場所 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,
Object[] parameters,
Object[] arguments)
   場所 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
BindingFlags invokeAttr,
Binder binder,
Object[] parameters,
CultureInfo culture)
   場所 System.Activities.ExpressionUtilities.IndexerLocationFactory`1.IndexerLocation.set_Value(T value)
   場所 System.Activities.Location`1.ReferenceLocation.set_Value(T value)
   場所 System.Activities.ActivityContext.SetValueCore[T](LocationReference locationReference,
T value)
   場所 System.Activities.ActivityContext.SetValue[T](LocationReference locationReference,
T value)
   場所 System.Activities.Argument.Set(ActivityContext context,
Object value)
   場所 System.Activities.Statements.Assign.Execute(CodeActivityContext context)
   場所 System.Activities.CodeActivity.InternalExecute(ActivityInstance instance,
ActivityExecutor executor,
BookmarkManager bookmarkManager)
   場所 System.Activities.ActivityInstance.Execute(ActivityExecutor executor,
BookmarkManager bookmarkManager)
   場所 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor,
BookmarkManager bookmarkManager,
Location resultLocation)

お忙しい中大変恐れ入りますが、
どうぞよろしくお願いいたします。

こんにちは

NLog関係で落ちているようですが、前後のアクティビティどのようになっていますでしょうか?
あるいはデバッグではなく、通常実行でも同様になりますでしょうか?
あと環境の情報(バージョン等)を共有いただくと良いかと思います。

Yoichiさん

早速のコメントありがとうございます。
・環境の情報
・エラー直前のアクティビティ内容
について追記いたしました。

また、デバッグ、実行ともに本現象が発生いたしますが、
タイミングが不明です。
(半々くらいの割合で発生したり、しなかったりする)

非常にわかりづらい現象なのですが、どうぞよろしくお願いいたします。

こんにちは

エラーの内容と、アクティビティとしての処理内容があまり一致していないように思えるのですが
例えば、この代入アクティビティを一時的に削除した場合は、問題なく動作しますでしょうか?
あと、プロジェクトの対応OS(Windowsレガシー、Windows)と言語(VBでしょうか?)を記載いただけると良いかもしれません。
ちなみに手元の環境(Studio22.4.6+Sysytem.Activities 22.4.5)で同様の代入をしましたが、問題は再現しませんでした。

1 Like

たびたびのご教示ありがとうございます。
ご推察の通り、Windowsレガシ、VBです。

また、発生しているアクティビティをコメントアウトして再度デバッグで動かしたところ、
後続の処理で同様のエラーが発生いたしました。

これは今回エラー発生地点として挙げた代入アクティビティが原因ではなく、
より前の処理に原因があるということでしょうか?

その場合、発生地点を明確にしたいのですが、
どのように切り分けていけばよいでしょうか?
良い方法がございましたら合わせてご教授いただければ幸いです。

お願いばかりで大変恐れ入りますが、どうぞよろしくお願いいたします。

こんにちは

上記から、代入アクティビティが原因ではないと思われます。
エラーメッセージからはNLog関連の例外となっていますので、怪しいのは、これ以前のログ出力になります。
何か明示的にログ出力をしていないでしょうか?あればそれはどのような内容でしょうか?

1 Like

ありがとうございます。
明示的にログを出力している部分(メッセージをログアクティビティでログを出力している部分)で、
代入アクティビティ部分より前の箇所に、データテーブルの元となるCSVファイルのフルパスをログに記載しています。

そのアクティビティを無効化して実行した場合、どうなりますでしょうか?

1 Like

直近とその前のアクティビティを無効化させて実行いたしました。
結果は変わらず、同じエラー内容でした。

こんにちは

ログ周りが怪しいと推察していますが、実際のログファイルは正しく出力されていますでしょうか?
どこかで出力されていない箇所があれば、そこが原因の可能性がありますので、こちらの視点でも
確認いただければと思います。

Yoichiさん
ログについて調べましたが、
今のところ出力に問題はなさそうです。
ログレベルをTraceなどに上げて再度検証してみます。
ログ以外の可能性としては何か考えられますでしょうか?

こんにちは

まずは原因となっているアクティビティ等を特定する必要があるかと思いますので、
例えばステップ実行で、一つのアクティビティを時間をかけながら実行していって
不具合の出る箇所を特定することが必要なように思えます。

1 Like