ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(イベントサービス編)

8.3 Pullモデル

(1)概要

  コンシューマがサプライヤからイベントデータを受信する場合は、イベントチャネル上のCOSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULLメソッドを呼び出します。イベントチャネルは、ユーザがサプライヤ上に作成したSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを呼び出します。
  その概要を以下に示します。



(2)サプライヤの作成

  サプライヤは、イベントチャネルからイベントデータの要求を受け取るために、SERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを実装します。イベントチャネルは、サプライヤ上のSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを呼び出し、サプライヤにイベントデータを要求します。
  サプライヤのSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを実装するまでの手続きの例、および処理の流れを以下に示します。


[COBOLによるPullモデルのサプライヤ]

PROGRAM-ID. "FUNC".
    ... 
    CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-SUPPLIERS" USING
          EVENTCHOBJ
          ENV
          SUPPLIER.                                     /* 1 */

    CALL "COSEVENTCHANNELADMIN-SUPPLIERADMIN-OBTAIN-PULL-CONSUMER" USING
          SUPPLIER
          ENV
          PROXYPULL.                                    /* 2 */

    CALL "COSEVENTCHANNELADMIN-PROXYPULLCONSUMER-CONNECT-PULL-SUPPLIER" USING
          PROXYSUPPLIER
          MY-OBJ
          ENV.                                          /* 3 */
    ... 
END PROGRAM "FUNC”. 

PROGRAM-ID. "SERVER-COSEVENTCOMM-PULLSUPPLIER-PULL".    /* 4 */
    ... 
    LINKAGE SECTION. 
    01 COPY PROXYPULLSUPPLIER IN COSEVENTCOMM REPLACING COSEVENTCHANNELADMIN-PROXYP002
                                                                        BY OBJ. 
    01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT         BY ENV. 
    01 SENDDATA USAGE POINTER. 

    PROCEDURE DIVISION  USING
                        OBJ
                        ENV
                        EVDATA. 

    ... 
    /* アプリケーションの処理 */
    ... 
    EXIT PROGRAM. 
END PROGRAM "SERVER-COSEVENTCOMM-PULLSUPPLIER-PULL".

  1. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。

  2. イベントチャネルのオブジェクトリファレンスを獲得します。

  3. イベントチャネルと接続します。

  4. ユーザがサプライヤ上に実装するSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドです。


(3)コンシューマの作成

  コンシューマからイベントチャネルにイベントデータを要求する手続きの例、および処理の流れを以下に示します。


[COBOLによるPullモデルのコンシューマ]

PROGRAM-ID. "FUNC".
    ... 

    CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-CONSUMERS" USING
          EVENTCHOBJ
          ENV
          CONSUMER.                                      /* 1 */

    CALL "COSEVENTCHANNELADMIN-CONSUMERADMIN-OBTAIN-PULL-SUPPLIER" USING
          CONSUMER
          ENV
          PROXYPULL.                                     /* 2 */

    CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-CONNECT-PULL-CONSUMER" USING
          PROXYPULL
          PROXYPULL
          ENV.                                           /* 3 */
    CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULL" USING
          PROXYPULL
          ENV
          EVDATA.                                        /* 4 */

    CALL "COSEVENTCHANNELADMIN-PROXYCONSUMER-DISCONNECT-PULL-SUPPL" USING
          PROXYPULL
          ENV.                                           /* 5 */
    ... 
END PROGRAM "FUNC".

  1. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。

  2. イベントチャネルのオブジェクトリファレンスを獲得します。

  3. イベントチャネルと接続します。

  4. イベントチャネルにCOSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULLメソッドを発行します。

  5. イベントチャネルと切断します。


[待ち合わせる場合]

  コンシューマは、サプライヤからイベントデータを待ち合わせて引き出すには、以下のメソッドを使用します。イベントチャネルからイベントデータを取り出し、CORBA-ANY型の復帰値を返します。イベントチャネルからイベントデータの取り出しが可能になるか、または例外が発生するまでブロックされます。COSEVENTCHANNELADMIN-PROXYPULLSUPPLIERはCOSEVENTCOMM-PULLSUPPLIERを継承しています。


ENVIRONMENT DIVISION.
    CONFIGURATION SECTION. 
    SPECIAL-NAMES. 
    SYMBOLIC CONSTANT
    COPY SYMBOL-CONST IN CORBA. 

DATA DIVISION. 
    WORKING-STORAGE SECTION. 
    COPY CONST IN COSEVENTCOMM. 
    01 COPY PULLSUPPLIER IN COSEVENTCOMM REPLACING 
                        COSEVENTCHANNELADMIN-PULLSUPPLIER BY OBJ. 
    COPY CONST IN CORBA. 
    01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 
    01 EVDATA USAGE IS POINTER. 

PROCEDURE DIVISION. 
    CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULL" USING
          OBJ
          ENV
          EVDATA.

[待ち合わせない場合]

  コンシューマは、サプライヤからイベントデータを待ち合わせないで引き出すには、以下のメソッドを使用します。イベントチャネルからイベントデータを取り出し、CORBA-ANY型の復帰値を返します。イベントチャネルからイベントデータを取り出せない場合は、即座に復帰します。イベントデータが取り出せた場合は、HASEVENTにCORBA-TRUEが設定されます。イベントデータを取り出せなかった場合は、HASEVENTにCORBA-FALSEが設定されます。COSEVENTCHANNELADMIN-PROXYPULLSUPPLIERはCOSEVENTCOMM-PULLSUPPLIERを継承しています。


ENVIRONMENT DIVISION.
    CONFIGURATION SECTION. 
    SPECIAL-NAMES. 
    SYMBOLIC CONSTANT
    COPY SYMBOL-CONST IN CORBA. 

DATA DIVISION. 
   WORKING-STORAGE SECTION. 
   COPY CONST IN COSEVENTCOMM. 
   01 COPY PULLSUPPLIER IN COSEVENTCOMM REPLACING
                     COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER BY OBJ. 
   COPY CONST IN CORBA. 
   01 COPY BOOLEAN IN CORBA REPLACING CORBA-BOOLEAN BY HASEVENT. 
   01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 
   01 EVDATA USAGE IS POINTER. 

PROCEDURE DIVISION. 
    CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-TRY-PULL" USING
          OBJ
          HASEVENT
          ENV
          EVDATA.