cniRun

この関数は、ノードを入力ノードとして宣言します。 これはメッセージ処理ノードまたは出力ノードでは使用されません。また、cniEvaluate を呼び出す必要はありません。WebSphere Message Broker はスレッドを割り振り、そのスレッドでこの関数を呼び出します。

定義されている場所 タイプ メンバー
CNI_VFT 条件付き iFpRun

構文

int cniRun(
  CCiContext* context,
  CCiMessage* destinationList,
  CciMessage* exceptionList,
  CciMessage* message
);

パラメーター

context
ノードによって作成され、cniCreateNodeContext 関数によって戻される、ノードのインスタンスのコンテキストのアドレス (入力)。
destinationList
入力宛先リスト・オブジェクトのアドレス (入力)。
exceptionList
メッセージの例外リストのアドレス (入力)。
message
データが接続されるメッセージ・オブジェクトのアドレス (入力)。

cniSetInputBuffer を呼び出すことにより、ユーザー定義ノードはビット・ストリームをこのメッセージに関連付けることができます。このメッセージのツリーへのデータの取り込みはサポートされていないため、cniAddAsLastChild または cniCreateElementAsLastChildFromBitstream などの関数の呼び出しは効果がありません。メッセージ全体として構文解析されるバッファーを提供する代わりに、ツリーの一部を作成するためには、cniCreateMessage を使用して新規メッセージを作成する必要があります。

例えば、メッセージのペイロードの部分として使用されるビット・ストリームがあり、さらにヘッダーも追加したい場合には、以下のステップを完了する必要があります。
  1. cniCreateMessage を使用して新規メッセージを作成します。
  2. cniCreateElementAsLastChildUsingParser などの構文エレメント・アクセス・ユーティリティー関数を使用し、この新規メッセージのルート・エレメントに渡すことにより、この新規メッセージにヘッダー部分を作成します。
  3. cniCreateElementAsLastChild などの関数を使用して、ヘッダーにフィールドを追加します。
  4. cniCreateElementAsLastChildFromBitstream を呼び出してビット・ストリームを構文解析し、この新規メッセージのルート・エレメントに渡すことにより、メッセージの本体を作成します。

戻り値

この関数はブローカーによってループの一部として呼び出されます。 戻り値の意味は以下に示すとおりです。

CCI_TIMEOUT
入力ノードは、入力データを受信しませんでしたが、 メッセージ・フローの再構成が要求される場合は、 制御が WebSphere Message Broker に戻されることを要求します。ユーザー定義入力ノードはかなり頻繁に戻り、制御を WebSphere Message Broker に戻します。
CCI_SUCCESS_CONTINUE
メッセージが正常に処理されました。 デフォルトのトランザクション・コミット処理は、WebSphere Message Broker によって実行されます。入力ノードが処理を継続できるようにするため、 そのノードの cniRun インプリメンテーション関数が直ちに呼び出されます。
CCI_SUCCESS_RETURN
メッセージが正常に処理されました。 デフォルトのトランザクション・コミット処理は、WebSphere Message Broker によって実行されます。入力ノードは、スレッドが必要ではなく、 メッセージ・フローのスレッド・プールに戻すと判別しています。 これが唯一のまたは最後のアクティブ・スレッドで実行されている場合、 WebSphere Message Broker はその最後のスレッドがプールに戻されないようにします。 そうしないと、別のスレッドをディスパッチできる、 他のアクティブ・スレッドがなくなります。この状況で、WebSphere Message Broker は、CCI_SUCCESS_CONTINUE が戻されたかのように、 cniRun インプリメンテーション関数を直ちに呼び出します。
CCI_FAILURE_CONTINUE
メッセージの処理中にエラーが検出され、 ノードはトランザクション・ロールバック処理を実行するように要求しています。 入力ノードの cniRun インプリメンテーション関数が直ちに呼び出されます。
CCI_FAILURE_RETURN
メッセージの処理中にエラーが検出され、 ノードはトランザクション・ロールバック処理を実行するように要求しています。 ただし、入力ノードは、スレッドが必要ではなく、 メッセージ・フローのスレッド・プールに戻すことができると判別しています。 これが最後のアクティブ・スレッドで実行されている場合、 WebSphere Message Broker はその最後のスレッドがプールに戻されないようにします。 そうしないと、別のスレッドをディスパッチできる、 他のアクティブ・スレッドがなくなります。この状況で、WebSphere Message Broker は、CCI_FAILURE_CONTINUE が戻されたかのように、 cniRun インプリメンテーション関数を直ちに呼び出します。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
as07480_