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

8.2 Pushモデル

  COBOLでのPushモデルのアプリケーションの開発について説明します。


(1)概要

  サプライヤがコンシューマにイベントデータを送信する場合、イベントチャネル上のCOSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSHメソッドを呼び出します。イベントチャネルは、ユーザがコンシューマ上に実装したSERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドを呼び出します。
  その概要を以下に示します。



(2)サプライヤの作成

  サプライヤからイベントチャネルへイベントデータを送信する手続きの例、および処理の流れを以下に示します。


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

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

    CALL "COSEVENTCHANNELADMIN-SUPPLIERADMIN-OBTAIN-PUSH-CONSUMER" USING
          SUPPLIER
          ENV
          PROXYPUSH.                                    /* 2 */

    CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-CONNECT-PUSH-SUPPLIER" USING
          PROXYPUSH
          PROXYPUSH
          ENV.                                          /* 3 */

    CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSH" USING
          PROXYPUSH
          EVDATA
          ENV.                                          /* 4 */

    CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-DISCONNECT-PUSH-CONSU" USING
          PROXYPUSH
          ENV.                                          /* 5 */
    ... 
END PROGRAM "FUNC".

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

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

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

  4. イベントチャネルのCOSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSHメソッドを呼び出します。

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


  サプライヤからイベントデータを送信するには、以下のメソッドを使用します。引数のEVDATAにイベントデータを指定して送信します。このCOSEVENTCHANNELADMIN-PROXYPUSHCONSUMERは、COSEVENTCOMM-PUSHCONSUMERを継承しています。


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

DATA DIVISION. 
WORKING-STORAGE SECTION. 
COPY CONST IN COSEVENTCOMM. 
01 COPY PUSHCONSUMER IN COSEVENTCOMM REPLACING
    COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER BY OBJ. 
COPY CONST IN CORBA. 
01 COPY ANY IN CORBA REPLACING CORBA-ANY BY EVDATA. 
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 

PROCEDURE DIVISION. 
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSH" USING
      OBJ
      EVDATA
      ENV.

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

  コンシューマは、イベントチャネルから送信されるイベントデータを受け取るために、SERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドを実装します。イベントチャネルは、コンシューマ上のSERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドを呼び出し、コンシューマにイベントデータを送信します。
  コンシューマがイベントデータを受け取る例、および処理の流れを以下に示します。


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

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

    CALL "COSEVENTCHANNELADMIN-CONSUMERADMIN-OBTAIN-PUSH-SUPPLIER" USING
          CONSUMER
          ENV
          PROXYPUSH.                                                  /* 2 */

    CALL "COSEVENTCHANNELADMIN-PROXYPUSHSUPPLIER-CONNECT-PUSH-CONSUMER" USING
          PROXYPUSH
          MY-OBJ
          ENV.                                                        /* 3 */
    ... 
END PROGRAM "FUNC". 

PROGRAM-ID. "SERVER-COSEVENTCOMM-PUSHCONSUMER-PUSH".                  /* 4 */
    ... 
    LINKAGE SECTION. 
    01 COPY PROXYPUSHCONSUMER IN COSEVENTCOMM REPLACING COSEVENTCHANNELADMIN-PROXYP003
                                                                         BY OBJ. 
    01 COPY ANY IN CORBA REPLACING CORBA-ANY                             BY EVDATA. 
    01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT             BY ENV. 

    PROCEDURE DIVISION  USING
                        OBJ
                        EVDATA
                        ENV. 

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

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

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

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

  4. ユーザがコンシューマ上に実装するSERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドです。


注意

  コンシューマ側のアプリケーションでは、アプリケーション終了時に、イベントチャネルに対して必ずCOSEVENTCHANNELADMIN-PROXYPUSHSUPPLIER-DISCONNECT-PUSH_SUPPLIERメソッドを発行してください。イベントチャネルに対してCOSEVENTCHANNELADMIN-PROXYPUSHSUPPLIER-DISCONNECT-PUSH_SUPPLIERメソッドを発行しないでアプリケーションを終了すると、アプリケーション終了後に再度アプリケーションを起動した場合に、同一のイベントデータが複数個配信されてしまいます。