ワークフローの呼び出しでDataRow型の引数を渡すには?

メインのワークフローでDataTableから抽出して作ったDataRow型の変数を
呼び出した別のワークフローに引数として渡す処理を作ってみたのですが、
引数を使う箇所で『オブジェクト参照がオブジェクト インスタンスに設定されていません。』というエラーになってしまいました。
中身が空のままになっているようなのですが、DataRow型は引数として扱えないものなのでしょうか?

引数の方向は入力で、String/Boolean/DateTimeの3列から成っているデータを扱っています。

扱えると思います

@HANACCHI さんと同意見で、扱えると思います。
ひとつの可能性として、上手く変数/引数に対してデータが渡せていないことが原因かと思うので、デバッグ実行するなどして正しくデータが扱えているかを確認してみてください。
もうひとつは、DataRow型ということで呼び出し先などで列名を指定したりすると思いますが、その列名の指定が間違っている可能性も考えられるかと思います。

>はなっちさん >いわさきさん
ご回答ありがとうございます。

試しにデータテーブル周りの処理だけのプロジェクトを作ったところ上手く行ったので
相違点を探してみたのですが、呼び出し先をピクチャインピクチャで実行する設定にしているのが原因でした。
InvokeWorkFlowFileの『分離』にチェックが入っていると、DataRow型の引数が渡せない?みたいです。

サンプル.zip (4.6 KB)

元々そういう仕様なのかもしれませんが…データテーブルは渡せるのが興味深いところです。

こんにちは

「分離」オプションにより、別プロセスにてワークフローが実行されるため、変数(引数)の参照渡しができず、(内部実装がわかりませんので推測になりますが)シリアル化したものの値渡しになると思われます。
DataTableはシリアライズが可能、DataRowはシリアライズが不可能ですので、DataRowについては分離オプションONの時に中身を渡すことができず、nullになっていると思います。
(シリアライズ可否は GetType(DataTable).IsSerializeGetType(DataRow).IsSerialize で確認することができるかと思います。)

2 Likes