Interstage Application Server アプリケーション作成ガイド (イベントサービス編)
目次 索引 前ページ次ページ

第8章 アプリケーションの開発(COBOL)

8.2 Pushモデル

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


 Linuxシステムでは、COBOLはWindows(R)クライアントだけで使用可能であるため、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メソッドを発行してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005