ビジネス・オブジェクト・プロパティー例

このセクションでは、アダプターでのビジネス・オブジェクトの処理を具体的に示す例を紹介します。

コネクターの呼び出し順序の例

下記のサンプル・コードは、「Hello World」という簡単なメッセージを WebSphere MQ に書き込むコネクター・コードです。

/**********************************************
 *Create the MQSession object and access the MQQueueManager and (local) MQQueue
 **********************************************/
 MQSession MQSess = new MQSession();
 iDispatch = MQSess.AccessQueueManager("COMTest");
 MQQueueManager QMgr = new MQQueueManager(iDispatch);
 
 QMgr.Connect();
 MQQueue MyQueue=new MQQueue(QMgr.AccessQueue_4("SYSTEM.DEFAULT.LOCAL.QUEUE",17));
 
 MyQueue.Open();
 MQMessage PutMsg = new MQMessage(MQSess.AccessMessage());
 
 //write a string to the message
 PutMsg.WriteString("Hello World";);
 
 //put the message on the queue
 MyQueue.Put(PutMsg);
 MyQueue.Close();
 QMgr.Disconnect();

ビジネス・オブジェクトの例

以下の画面例は、コネクターの呼び出し順序の例に示したコードが正常に機能するために必要なビジネス・オブジェクト構造とアプリケーション固有の情報を示しています。以下の画面例で説明するビジネス・オブジェクトは、Create 動詞を使用しています。

図 5. ビジネス・オブジェクト・レベルの ASI とサポートされる動詞

図 5 は、トップレベルのビジネス・オブジェクト MQ_MQSession を示しています。このビジネス・オブジェクトは、メソッド・シーケンス内で最初に作成されるオブジェクトにあたります。Create 動詞の ASI には、AccessQueueManager と指定されています。これは、MQQueueManager オブジェクトへのアクセスを可能にする関数です。

AccessQueueManager は、Integer 型のオブジェクトを戻します。このオブジェクトが MQQueueManager のコンストラクターに渡されると、MQQueueManager プロキシーのインスタンスが作成されます。

ビジネス・オブジェクト・レベルの ASI にストリング proxy_class=mqtest.MQSession が指定されていることに注意してください。これは、現在のビジネス・オブジェクトに対応する COM コンポーネントを表すプロキシー・オブジェクトを示しています。proxy_class ASI の詳細については、表 4 を参照してください。

図 6. MQSession オブジェクトのビジネス・オブジェクト階層

図 6 は、親オブジェクト (MQSession) から最下位の子までを含む、ビジネス・オブジェクト階層を示しています。

AccessQueueManager は、iDispatch ポインターを戻すメソッドです。このポインターは、MQQueueManager (ビジネス・オブジェクトの Return_Value 属性に指定されています) にマップされています。MQQueueManager は、図 6 に示すビジネス・オブジェクト構造に含まれる子オブジェクト MQ_MQQueueManager によって表現される、プロキシー・オブジェクトです。

図 7. MQ_MQQueueManager のメソッド呼び出しシーケンス

図 7 では、ビジネス・オブジェクト MQ_MQQueueManager の動詞 Create のメソッド・シーケンスを示します。

このシーケンスは、次の 3 つのメソッドで構成されています。

  1. Connect
  2. AccessQueue_4
  3. Disconnect

図 6 に示したように、BO 構造に含まれる AccessQueue_4 は、MQ_MQQueue というプロキシー・オブジェクトを戻します。このとき、コネクターは、AccessQueue_4 を実行した、戻されたプロキシー・オブジェクト (AccessQueue_4 の子) を、MQ_MQQueueManager の呼び出しシーケンスの 3 番目、つまり最後のメソッドである Disconnect を実行する に処理します。

図 8. MQ_MQQueue のメソッド呼び出しシーケンス

図 8 は、AccessQueue_4 の子 (図 6) である MQ_MQQueue のメソッド・シーケンスを示します。この呼び出しシーケンスは、次の 3 つのメソッドで構成されています。

  1. Open
  2. Put
  3. Close

Put メソッドは MQMessage を引数とするので、コネクターは、Put メソッドを実行するMQMessage オブジェクトを作成する (そして作成したオブジェクトに対してメソッドを実行する) 必要があります。

コネクターの処理動作には再帰的な性質があります。つまり、Put は、AccessQueue_4 (図 6) の親である MQ_MQQueueManager (図 7) の Disconnect メソッドを実行する に実行されます。

図 9. MQMessage のメソッド呼び出しシーケンス

図 9 は、MQMessage のメソッド・シーケンスを示しています。このシーケンスは、単純ストリングを引数とする WriteString メソッドのみを呼び出します。この例では、引数は「Hello World」メッセージです。このメッセージが WebSphere MQ に書き込まれます。コネクターでは、その後、このセクションで説明した再帰的シーケンスに従ってメソッドの処理が続行されます。コネクターは、WriteString を呼び出した後、階層を「引き返し」、MQ_MQQueue (図 8) の Close メソッドを実行し、MQ_MQQueueManager (図 7) の Disconnect メソッドを実行します。

Copyright IBM Corp. 2004, 2005