Forums: Open Discussion (Thread #20089)

Client FW for .NETでのビジネスロジック出力データセット取得方法 (2008-10-06 13:34 by Anonymous #39154)

TERASOLUNA Client Framework for .NETについて質問させてください。

画面から直接入力/出力されないデータを、ビジネスロジック入出力データセットに設定/取得したいと考えています。
このようなことを実現したい場合、BLogic実行直前に、画面データセットから変換されたビジネスロジック入力データセットを取得してカラムに直接値を設定することは、Preprocessedイベントを使えば実現できるようです。
しかし、BLogic実行後かつ画面データセットに反映される前の、ビジネスロジック出力データセットを取得するにはどうしたらよいのでしょうか?(もちろん、画面データセットに項目を用意して変換してやれば取得できるのはわかりますが、画面とは関係ないカラムを画面データセットに定義したくないので。。)

また、画面にないデータ項目を設定、取得するためだけにイベントを使うのもどうかと思うので、EventControllerには画面データセットだけでなく、ビジネスロジック入出力データセットを直接取得できるようなプロパティがあるとよいのではないかと思います。
ご検討よろしくお願いいたします。

Reply to #39154×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Client FW for .NETでのビジネスロジック出力データセット取得方法 (2008-10-06 15:31 by tatsumihr #39161)

EventControllerの実行結果であるExecutionResultクラスのBLogicResultDataプロパティより、ビジネスロジック出力データセットを取得できます。

(実装サンプル)
-----
ExecutionResult result = eventController.Execute();
DataSet blogicResultData = result.BLogicResultData;
-----


また、ビジネスロジックとのデータのやり取り方法として、EventControllerクラスのItemsプロパティを使う方法もあります。EventController.Itemsプロパティに値をセットすると、その値がビジネスロジックのItemsプロパティにセットされます。逆に、ビジネスロジックの戻り値であるBLogicResultクラスのItemsプロパティに値をセットすると、EventControllerクラスのItemsプロパティにその値がセット、または上書きされます。データセットを使わないデータの受け渡しもできますので、ご検討ください。

(実装サンプル)
-----
// EventController.Itemsプロパティにデータをセット
// この値はビジネスロジックのItemsプロパティにコピーされる
eventController.Items["inputKey"] = "inputObject";

// 実行
ExecutionResult result = eventController.Execute();

// ビジネスロジックの戻り値BLogicResult.Itemsプロパティの値を取得
Object outputObject = eventController.Items["outputKey"];
-----
Reply to #39154

Reply to #39161×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Client FW for .NETでのビジネスロジック出力データセット取得方法 (2008-10-06 17:41 by Anonymous #39166)

ExecutionResultから取得できるのですね。当然思い当たるべきでした。

Itemsプロパティを使ったデータのやり取りをする場合、リクエストヘッダに設定されるようですね。
TERASOLUNA Server framework for Java(Rich)と通信する場合には、BLogicから直接ヘッダにアクセスできなくて処理が面倒になりそう(フィルタでHttpServletRequestを直接操作?)であること、ヘッダだと構造化されたデータの扱いが難しいこと、ヘッダで業務データをやり取りすることに違和感を感じることから、PreprocessedおよびExecutionResultのBLogicResultDataを使用する方向で検討したいと思います。

もしまだ私の理解が不十分であれば、ご指摘いただけると嬉しいです。
ご回答ありがとうございました。
Reply to #39154

Reply to #39166×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Client FW for .NETでのビジネスロジック出力データセット取得方法 (2008-10-06 18:37 by tatsumihr #39169)

正確には、EventController.Itemsプロパティに"RequestHeaders"をキーとしてIDictionary<string, string>型のディクショナリを設定すると、そのディクショナリの値が通信時にヘッダとしてサーバへ送信されます。それ以外の値はクライアント側ビジネスロジックに渡っていますが、サーバへは送信されません。
したがって、以下のような使い分けになります。

・サーバへ送信したいデータ
 Preprocessedイベントでビジネスロジック入力データセットに設定する。
・クライアント側ビジネスロジックだけで利用したいデータ
 EventController.Itemsプロパティに設定する。

今回の場合はTERASOLUNA Server Framework for Java(Rich版)と通信する場合ですので、PreprocessedイベントおよびExecutionResult.BLogicResultDataプロパティを利用する方法で問題ないと思います。
Reply to #39166

Reply to #39169×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login