Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編


3.3.8 Object Accessアダプタを定義する

Object Accessアダプタの定義方法について説明します。

〈この項の構成〉

(1) 電文フォーマットの作成

各電文のフォーマットについて説明します。

(a) 要求電文

要求電文の電文フォーマットを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" 
xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">
  <xsd:element name="exec2">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="method_name" type="xsd:string"/>
        <xsd:element name="in_list" type="tns:OWB2.NameValueList"/>
        <xsd:element name="session_data" type="tns:OWB2.NameValueList"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="OWB2.NameValueList">
    <xsd:complexContent>
      <xsd:restriction base="tns:EComm2.NameValueList">
       <xsd:sequence>
         <xsd:element name="item" type="tns:EComm2.NameValue"
                      minOccurs="0" maxOccurs="unbounded"/>
       </xsd:sequence>
      <xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="EComm2.NameValueList">
    <xsd:sequence>
      <xsd:element name="item" type="tns:EComm2.NameValue"
                   minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="EComm2.NameValue">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="value" type="tns:CORBA.Any" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CORBA.Any">
    <xsd:sequence>
      <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
表3‒33 要求電文フォーマット

項目

電文フォーマット

要求電文形式

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"

xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">

 [オペレーション情報]

 [型定義情報]...

</xsd:schema>

オペレーション情報

<xsd:element name="exec2">

 <xsd:complexType>

  <xsd:sequence>

   [入力パラメタ情報]...

  </xsd:sequence>

 </xsd:complexType>

</xsd:element>

入力パラメタ情報

<xsd:element name="IDLに定義したパラメタ名称" type="[型情報]"/>

型定義情報:any

<xsd:complexType name="CORBA.Any">

 <xsd:sequence>

  <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>

  <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/>

 </xsd:sequence>

</xsd:complexType>

型定義情報:struct

<xsd:complexType name="IDLに定義した構造体宣言名称">

 <xsd:sequence>

  <xsd:element name="IDLに定義した構造体変数名称" type="[型情報]"

    minOccurs="1" maxOccurs="1"/>...

 </xsd:sequence>

</xsd:complexType>

型定義情報:sequence

<xsd:complexType name="IDLに定義したシーケンス宣言名称">

 <xsd:sequence>

  <xsd:element name="item" type="[型情報]"

    minOccurs="0" maxOccurs="0"/>

 </xsd:sequence>

</xsd:complexType>

型情報:string

xsd:string

型情報:any

tns:CORBA.Any

型情報:struct

tns:IDLに定義した構造体宣言名称

型情報:sequence

tns:IDLに定義したシーケンス宣言名称

要求電文の電文サンプルを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<tns:exec2 xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">
  <method_name>Mtd1</method_name>
  <in_list>
    <item>
      <name>MP7G</name>
      <value>
        <type>long</type>
        <value>200</value>
      </value>
    </item>
    <item>
      <name>GP9AKJ</name>
      <value>
        <type>Ecomm2.OctSeq</type>
        <value>ABCDE</value>
      </value>
    </item>
  </in_list>
  <session_data>
    <item>
      <name>S03U48</name>
      <value>
        <type>long</type>
        <value>212</value>
      </value>
    </item>
    <item>
      <name>H4TF8L</name>
      <value>
        <type>Ecomm2.OctSeq</type>
        <value>OK</value>
      </value>
    </item>
  </session_data>
</tns:exec2>

(b) 応答電文

応答電文の電文フォーマットを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" 
xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">
  <xsd:element name="exec2Response">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="result" type="tns:OWB2.NameValueList"/>
        <xsd:element name="out_rec" type="tns:OWB2.RecordValue"/>
        <xsd:element name="session_data" type="tns:OWB2.NameValueList"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="OWB2.NameValueList">
    <xsd:complexContent>
      <xsd:restriction base="tns:EComm2.NameValueList">
    <xsd:sequence>
          <xsd:element name="item" type="tns:EComm2.NameValue"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="EComm2.NameValueList">
    <xsd:sequence>
      <xsd:element name="item" type="tns:EComm2.NameValue"
                   minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="EComm2.NameValue">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="value" type="tns:CORBA.Any" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CORBA.Any">
    <xsd:sequence>
      <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OWB2.RecordValue">
    <xsd:complexContent>
      <xsd:restriction base="tns:EComm2.RecordValue">
    <xsd:sequence>
          <xsd:element name="name" type="tns:EComm2.NameList" minOccurs="1" maxOccurs="1"/>
          <xsd:element name="record" type="tns:EComm2.RecordList" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
      <xsd:restriction base="tns:EComm2.RecordValue">
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="EComm2.RecordValue">
    <xsd:sequence>
      <xsd:element name="name" type="tns:EComm2.NameList" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="record" type="tns:EComm2.RecordList" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
<xsd:complexType name="EComm2.NameList">
    <xsd:sequence>
      <xsd:element name="item" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="EComm2.RecordList">
    <xsd:sequence>
      <xsd:element name="item" type="tns:EComm2.ValueList"
                   minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="EComm2.ValueList">
    <xsd:sequence>
      <xsd:element name="item" type="tns:CORBA.Any" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
表3‒34 応答電文フォーマット

項目

電文フォーマット

応答電文形式

<?xml version="1.0" encoding="UTF-8"?>

 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

 targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"

 xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">

  [オペレーション情報]

 [型定義情報]...

 </xsd:schema>

オペレーション情報

<xsd:element name="exec2Response">

 <xsd:complexType>

  <xsd:sequence>

   [出力パラメタ情報]...

  </xsd:sequence>

 </xsd:complexType>

</xsd:element>

出力パラメタ情報

<xsd:element name="IDLに定義したパラメタ名称" type="[型情報]"/>

注 この情報には,リターン情報を含みます。

型定義情報:any

<xsd:complexType name="CORBA.Any">

 <xsd:sequence>

  <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>

  <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/>

 </xsd:sequence>

</xsd:complexType>

型定義情報:struct

<xsd:complexType name="IDLに定義した構造体宣言名称">

 <xsd:sequence>

  <xsd:element name="IDLに定義した構造体変数名称" type="[型情報]"

    minOccurs="1" maxOccurs="1"/>...

 </xsd:sequence>

</xsd:complexType>

型定義情報:sequence

<xsd:complexType name="IDLに定義したシーケンス宣言名称">

 <xsd:sequence>

  <xsd:element name="item" type="[型情報]"

    minOccurs="0" maxOccurs="0"/>

 </xsd:sequence>

</xsd:complexType>

型情報:string

xsd:string

型情報:any

tns:CORBA.Any

型情報:struct

tns:IDLに定義した構造体宣言名称

型情報:sequence

tns:IDLに定義したシーケンス宣言名称

応答電文の電文サンプルを次に示します。

<?xml version="1.0" encoding="UTF-8" ?> 
<tns:exec2Response xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">
  <result>
    <item>
      <name>MP7G</name> 
      <value>
        <type>long</type> 
        <value>200</value> 
      </value>
    </item>
    <item>
      <name>GP9AKJ</name> 
      <value>
        <type>Ecomm2.OctSeq</type> 
        <value>ABCDE</value> 
      </value>
    </item>
  </result>
  <out_rec>
    <name /> 
    <record /> 
  </out_rec>
  <session_data>
    <item>
      <name>S03U48</name> 
      <value>
        <type>long</type> 
        <value>212</value> 
      </value>
    </item>
    <item>
      <name>H4TF8L</name> 
      <value>
        <type>Ecomm2.OctSeq</type> 
        <value>OK</value> 
      </value>
    </item>
    <item>
      <name>GW:status</name> 
      <value>
        <type>long</type> 
        <value>0</value> 
      </value>
    </item>
  </session_data>
</tns:exec2Response>

(c) フォルト電文

フォルト電文の電文フォーマットを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" 
xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">
  <xsd:element name="EComm2.Exceptionexec2Fault1">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="code" type="xsd:int"/>
        <xsd:element name="message" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
表3‒35 フォルト電文フォーマット

項目

電文フォーマット

フォルト電文形式

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"

xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">

[例外定義情報]

</xsd:schema>

例外定義情報

<xsd:element name="exec2Fault1">

<xsd:complexType>

<xsd:sequence>

[例外情報]...

</xsd:sequence>

</xsd:complexType>

</xsd:element>

例外情報

<xsd:element name="IDLの例外に定義した変数名称" type="[型情報]"/>

型情報:long

xsd:int

型情報:string

xsd:string

フォルト電文の電文サンプルを次に示します。

<?xml version="1.0" encoding="UTF-8" ?>
<tns:exec2Fault1 xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2">
  <code>0</code> 
  <message>no such method:Resource 'Base' does not contain method 'Mtd1'.</message> 
</tns:exec2Fault1>

(d) Object Wrapper提供IDL

Object Wrapper提供のIDLのサンプルを次に示します。

module EComm2 {
    typedef sequence<octet>       OctSeq;
    typedef sequence<OctSeq>      NameList;
    typedef sequence<any> ValueList;
    typedef sequence<ValueList>   RecordList;
    struct Binary { 
        OctSeq   content;
    };
    struct NameValue {
        OctSeq   name;
        any      value;
    };
    typedef sequence<NameValue>   NameValueList;
    struct RecordValue {
        NameList name;
        RecordList        record;
    };
    exception _Exception
    {
        long     code;
        OctSeq   message;
    };
};
interface OWB2
{
    typedef EComm2::NameValueList        NameValueList;
    typedef EComm2::RecordValue            RecordValue;
    NameValueList exec2 (
        in string                          method_name,
        in NameValueList  in_list,
        out RecordValue           out_rec,
        inout NameValueList       session_data)
        raises ( EComm2::_Exception );
};

(2) Object Accessアダプタ通信構成定義ファイルの作成

Object Accessアダプタの場合,Object Accessアダプタ通信構成定義ファイルを作成する必要があります。

Object Accessアダプタ通信構成定義ファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「3.7.1 Object Accessアダプタ通信構成定義ファイル」を参照してください。

(3) データ変換の定義

データ変換(マッピング)定義画面で,変換元の電文フォーマット定義ファイルおよび変換先の電文フォーマット定義ファイルを設定して,データ変換を定義します。

データ変換の定義方法については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「7. データ変換の定義」を参照してください。

(4) ユーザ定義ファイルの作成

ユーザ定義ファイルは,次の定義ファイルをjarコマンドでアーカイブして作成します。

ユーザ定義ファイルの作成手順を説明します。

  1. コマンドプロンプトを起動します。

    [スタート]メニューの[プログラム]から[アクセサリ]−[コマンド プロンプト]でコマンドプロンプトを起動します。

  2. ユーザ定義ファイルを作業ディレクトリへコピーします。

    任意の作業ディレクトリに,次のディレクトリ構成を作成して,ユーザ定義ファイルをコピーします。

    jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def

    「C:\conf」ディレクトリに保存されている各定義ファイルを,「C:\work」ディレクトリを作業ディレクトリとしてコピーする場合の例を次に示します。

    >XCOPY C:\conf\adpoa_com.xml C:\work\jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\ /V
    >XCOPY C:\conf\adpoa_tpb.properties C:\work\jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\ /V
  3. ユーザ定義ファイルをアーカイブします。

    サービスプラットフォームが提供するjarコマンドを実行して,ユーザ定義ファイルを作成します。

    「Object Accessアダプタ通信構成定義ファイル」だけをアーカイブする場合と,「Object Accessアダプタ通信構成定義ファイル」および「TPBroker環境定義ファイル」をアーカイブする場合の例を次に示します。ここで示す例では,「C:\work」ディレクトリを作業ディレクトリとして,ユーザ定義ファイルを「C:\conf」に作成します。

    Object Accessアダプタ通信構成定義ファイルだけをアーカイブする場合

    > jar cf C:\conf\adpoadef.jar
      -C C:\work jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\adpoa_com.xml

    Object Accessアダプタ通信構成定義ファイルおよびTPBroker環境定義ファイルをアーカイブする場合

    > jar cf C:\conf\adpoadef.jar
      -C C:\work jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\adpoa_com.xml
      -C C:\work jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\adpoa_tpb.properties
  4. 作業ディレクトリを削除します。

    RMDIRコマンドを実行して,ユーザ定義ファイルのアーカイブ用に作成したディレクトリを削除します。

    「C:\work」ディレクトリを作業ディレクトリとした場合の例を次に示します。

    > RMDIR /S /Q C:\work\jp

注意事項を次に示します。

(5) サービスアダプタ定義画面での操作

Object Accessアダプタを定義する場合の手順を次に示します。設定内容の詳細は,「3.3.18(8) Object Accessアダプタの場合」を参照してください。

  1. サービスアダプタ定義画面を表示します。

    サービスアダプタ定義画面の表示方法については,「3.3.1(4) サービスアダプタ定義画面の表示」を参照してください。

  2. サービス部品制御情報の[サービス名]および[サービスID]を必要に応じて編集します。

  3. サービス部品制御情報の[追加]ボタンをクリックして,オペレーションを追加します。

    任意のフォルト名を指定してください。

  4. オペレーション情報の[通信モデル]のドロップダウンリストから,「同期」を選択します。

  5. 要求電文について,手順6.から手順15.までを実施します。

  6. 次に示す操作をします。

    標準電文のフォーマットを指定する場合

    手順7.〜9.を実施して,手順10.に進みます。

    標準電文のフォーマットを指定しない場合

    手順10.に進みます。

  7. 標準電文の[使う]チェックボックスをチェックします。

  8. 標準電文の[参照]ボタンをクリックして,[電文フォーマット]に標準電文のフォーマットを指定します。

    指定できる電文フォーマットの形式については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.6.5 XMLスキーマの適用範囲」を参照してください。

  9. 標準電文の[表示]ボタンをクリックします。

    電文フォーマットがXML形式の場合,標準電文のフォーマットが表示されます。必要に応じて指定した標準電文のフォーマットを確認してください。

  10. サービス部品電文に次の電文フォーマットが設定されていることを確認します。

    • 要求電文:exec2_request.xsd

    • 応答電文:exec2_response.xsd

  11. サービス部品電文の[表示]ボタンをクリックします。

    サービス部品電文のフォーマットが表示されます。必要に応じてサービス部品電文のフォーマットを確認してください。

  12. 次に示す操作をします。

    標準電文の[使う]チェックボックスをチェックした場合

    手順13.〜15.を実施して,手順16.に進みます。

    標準電文の[使う]チェックボックスをチェックしない場合

    手順16.に進みます。

  13. データ変換定義のファイル名を入力します。

  14. [編集]ボタンをクリックします。

    データ変換定義画面が表示されます。初めて定義する場合は,[ルート要素選択]ダイアログが表示されます。

  15. 標準電文とサービス電文の内容をマッピングします。

  16. 応答電文についても,手順6.から手順15.までを実施します。

  17. フォルト電文の電文フォーマットに「exec2_fault1.xsd」が設定されていることを確認します。

  18. サービスアダプタ定義(詳細)タブをクリックします。

    サービスアダプタ定義画面(詳細)が表示されます。

  19. サービスアダプタ(EJB-JARファイル)およびユーティリティクラス(JARファイル)の名称を確認します。

    サービスアダプタ(EJB-JARファイル)の名称が「cscmsg_adpejb.jar」,ユーティリティクラス(JARファイル)の名称が「adpoapc.jar」であることを確認してください。

  20. ユーティリティクラス(JARファイル)の[追加]ボタンをクリックして,次のユーティリティクラスを追加します。

    • adpoadef.jar(ユーザ定義ファイル)

  21. 定義内容を確認して,Eclipseのメニューから[ファイル]−[保存]を選択し,定義内容を保存します。

(6) Object Accessアダプタ実行環境プロパティファイルの作成

Object Accessアダプタの場合,Object Accessアダプタ実行環境プロパティファイルを作成する必要があります。

Object Accessアダプタ実行環境プロパティファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「6.11.1 Object Accessアダプタ実行環境プロパティファイル」を参照してください。

(7) TPBroker環境定義ファイルの作成

Object AccessアダプタのORB動作の設定は,プロパティ形式のTPBroker環境定義ファイルとして,ユーザが独自に作成します。定義ファイル名称は"adpoa_tpb.properties"とし,ユーザ定義ファイルにアーカイブします。TPBroker環境定義ファイルは,ユーザ定義ファイルにアーカイブ後に,HCSC開発環境でパッケージングし,実行環境へインポートすることで実行環境に反映されます。TPBroker環境定義ファイルの内容を変更する場合は,ユーザ定義ファイルの再アーカイブ後に,HCSC開発環境で再度パッケージングして実行環境へインポートします。なお,ORB動作の設定が必要ない場合は,TPBroker環境定義ファイルを作成する必要はありません。

TPBroker環境定義ファイルに設定したORB動作は,ほかの環境変数などの定義より優先して適用されます。

ORBの動作を定義します。同一のキーが存在する場合は,後述のキーの値が反映されます。行頭の#や!はコメントを示します。

<property name>=<property value>

定義できるプロパティについては,マニュアル「Borland(R) Enterprise Server VisiBroker(R) プログラマーズリファレンス」を参照してください。

Object Accessアダプタでは,TPBrokerの次のプロパティを標準で設定します。プロパティは,Object AccessアダプタのTPBroker環境定義ファイルで変更します。ただし,vbroker.agent.enableLocatorの設定は変更できません。Object Accessアダプタで,trueを設定してサービス実行時にスマートエージェントと通信します。

表3‒36 設定するプロパティ

プロパティ

説明

設定値

vbroker.ce.iiop.ccm.htc.readerPerConnection

RelativeRoundtripTimeoutPolicyで指定したタイムアウト値が満了した場合,コネクションを切断するかを指定します。

true

タイムアウト発生時にコネクションをクローズしません。

vbroker.agent.enableLocator

サービス実行時にスマートエージェントと通信するかを指定します。

true

サービス実行時にスマートエージェントと通信します。

この設定は変更できません。