WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

cniRun

この関数は、ノードを入力ノードとして宣言します。

これはメッセージ処理ノードおよび出力ノードでは使用されません。また、cniEvaluate を呼び出す必要はありません。 ブローカーはスレッドを割り振り、そのスレッドでこの関数を呼び出します。

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

構文

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

パラメーター

context
ノードによって作成され、cniCreateNodeContext 関数によって戻される、ノードのインスタンスのコンテキストのアドレス (入力)。
localEnvironment
入力ローカル環境オブジェクトのアドレス (入力)。

旧バージョンとの互換性のために、このパラメーターを destinationList として参照することができます。

exceptionList
メッセージの例外リストのアドレス (入力)。
message
データが接続されるメッセージ・オブジェクトのアドレス (入力)。

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

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

戻り値

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

CCI_TIMEOUT
入力ノードは、入力データを受信しませんでした。 この値は、メッセージ・フローの再構成が要求される場合、制御がブローカーに戻されるべきである、という意味です。 ユーザー定義入力ノードは規則的に戻り、制御をブローカーに戻します。
CCI_SUCCESS_CONTINUE
メッセージが正常に処理されました。 ブローカーはデフォルトのトランザクション・コミット処理を実行します。 入力ノードが処理を継続できるようにするため、 そのノードの cniRun インプリメンテーション関数が直ちに呼び出されます。
CCI_SUCCESS_RETURN
メッセージが正常に処理されました。 ブローカーはデフォルトのトランザクション・コミット処理を実行します。 入力ノードは、スレッドが必要ではなく、 メッセージ・フローのスレッド・プールに戻すと判別しています。 この処理が、唯一のまたは最後のアクティブ・スレッドで実行されている場合、ブローカーはその最後のスレッドがプールに戻されないようにします。そうしないと、別のスレッドをディスパッチするために使用できるアクティブ・スレッドがなくなります。 この状況で、ブローカーは、CCI_SUCCESS_CONTINUE が戻されたかのように、cniRun インプリメンテーション関数を直ちに呼び出します。
CCI_FAILURE_CONTINUE
メッセージの処理中にエラーが検出され、 ノードはトランザクション・ロールバック処理を実行するように要求しています。 入力ノードの cniRun インプリメンテーション関数が直ちに呼び出されます。
CCI_FAILURE_RETURN
メッセージの処理中にエラーが検出され、 ノードはトランザクション・ロールバック処理を実行するように要求しています。 ただし、入力ノードは、スレッドが必要ではなく、 メッセージ・フローのスレッド・プールに戻すことができると判別しています。 この処理が、最後のアクティブ・スレッドで実行されている場合、ブローカーはその最後のスレッドがプールに戻されないようにします。そうしないと、別のスレッドをディスパッチするために使用できるアクティブ・スレッドがなくなります。 この状況で、ブローカーは、CCI_FAILURE_CONTINUE が戻されたかのように、cniRun インプリメンテーション関数を直ちに呼び出します。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:03


参照トピック参照トピック | バージョン 8.0.0.5 | as07480_