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

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

8.3 Pullモデル

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


 Linuxシステムでは、COBOLはWindows(R)クライアントだけで使用可能であるため、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.

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

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