269.2.4. リポジトリーの設定
概要
リポジトリーの設定は、SAP コンポーネントの repositoryDataStore
プロパティーで維持されます。このマップの各エントリーは、個別のリポジトリーを設定します。各エントリーのキーはリポジトリーの名前であり、このキーはこのリポジトリーが接続されるサーバー名にも対応します。
各エントリーの値は、メタデータリポジトリーの内容を定義するリポジトリーデータ設定オブジェクト org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl
です。リポジトリーデータオブジェクトは、関数テンプレート設定オブジェクト org.fuesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl
のマップです。このマップの各エントリーは、関数モジュールのインターフェースを指定し、各エントリーのキーは指定された function モジュールの名前です。
リポジトリーデータの例
以下のコードは、meta-data リポジトリーを設定する簡単な例を示しています。
<?xml version="1.0" encoding="UTF-8"?> <blueprint ... > ... <!-- Configures the sap-srfc-server component --> <bean id="sap-configuration" class="org.fusesource.camel.component.sap.SapConnectionConfiguration"> <property name="repositoryDataStore"> <map> <entry key="nplServer" value-ref="nplRepositoryData" /> </map> </property> </bean> <!-- Configures a Meta-Data Repository --> <bean id="nplRepositoryData" class="org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl"> <property name="functionTemplates"> <map> <entry key="BOOK_FLIGHT" value-ref="bookFlightFunctionTemplate" /> </map> </property> </bean> ... </blueprint>
関数テンプレートプロパティー
関数モジュールのインターフェースは、RFC 呼び出しの function モジュールにデータを転送する 4 つのパラメーターリストで構成されます。各パラメーター一覧は 1 つ以上のフィールドで構成されており、各フィールドは RFC 呼び出しで転送される名前付きパラメーターです。以下のパラメーター list および 例外の一覧がサポートされます。
- import パラメーター一覧 には、RFC 呼び出しの function モジュールに送信されるパラメーター値が含まれます。
- export パラメーターリスト には、RFC 呼び出しの関数モジュールによって返されるパラメーター値が含まれます。
- 変更パラメーターリスト には、RFC 呼び出しの function モジュールに送信され、返されるパラメーター値が含まれます。
- table パラメーターリスト には、RFC 呼び出しの function モジュールに送信され、返される内部テーブル値が含まれます。
- 関数モジュールのインターフェースは、RFC 呼び出しでモジュールが呼び出されると発生する ABAP 例外の例外リスト も含まれています。
関数テンプレートは、関数インターフェースの各パラメーター一覧のパラメーターおよびタイプ、および関数によってスローされた ABAP 例外を記述します。関数テンプレートオブジェクトは、以下の表で説明されているように、メタデータオブジェクトの 5 つのプロパティー一覧を維持します。
プロパティー | 説明 |
|
リストフィールドメタデータオブジェクト( |
|
リストフィールドメタデータオブジェクト( |
|
リストフィールドメタデータオブジェクト( |
|
リストフィールドメタデータオブジェクト( |
|
ABAP 例外メタデータオブジェクト( |
関数テンプレートの例
以下の例は、関数テンプレートの設定方法の概要を示しています。
<bean id="bookFlightFunctionTemplate" class="org.fusesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl"> <property name="importParameterList"> <list> ... </list> </property> <property name="changingParameterList"> <list> ... </list> </property> <property name="exportParameterList"> <list> ... </list> </property> <property name="tableParameterList"> <list> ... </list> </property> <property name="exceptionList"> <list> ... </list> </property> </bean>
フィールドメタデータプロパティーの一覧を表示します。
リストフィールドの meta-data オブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl
)は、パラメーター一覧のフィールドの名前とタイプを指定します。要素的なパラメーターフィールド(CHAR
、DATE
、BCD
、TIME
TIME、BYTE
、NUM
、FLOAT
、INT
、INT1、INT1
、INT2
、DECF16
、DECF34
、文字列)の場合、以下の表は、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを一覧表示しています。
Name | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前。 |
| - | フィールドのパラメータータイプ。 |
| - | 非Unicodeレイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
| - | Unicode レイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
|
| フィールド値の 10 進数の数。パラメータータイプ BCD および FLOAT にのみ必要です。「RFC のメッセージボディー」 を参照してください。 |
|
|
|
すべての要素的なパラメーターフィールドでは、フィールドの meta-data オブジェクトで 名前
、タイプ
、バイト長
、および unicodeByteLength
プロパティーを指定する必要があることに注意してください。さらに、BCD
、FLOAT
、DECF16
、および DECF34
の各フィールドでは、10 進数のプロパティーをフィールド meta-data オブジェクトで指定する必要があります。
TABLE
または STRUCTURE
タイプの複雑なパラメーターフィールドの場合、以下の表は、リストフィールドメタデータオブジェクトに設定できる設定プロパティーを示しています。
Name | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前 |
| - | フィールドのパラメータータイプ |
| - |
構造またはテーブルのメタデータ。レコードメタデータオブジェクト |
|
|
|
すべての複雑なパラメーターフィールドでは、名前
、type
、および recordMetaData
プロパティーをフィールド meta-data オブジェクトで指定する必要があります。recordMetaData
プロパティーの値は、ネスト化された構造の構造を指定するレコードフィールド meta-data オブジェクトの org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl
です。
要素リストフィールドメタデータの例
以下のメタデータ設定は、TICKET_PRICE
という名前の 2 進数の場所で、24 桁のパッシングされた BCD 番号パラメーターを指定します。
<bean class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl"> <property name="name" value="TICKET_PRICE" /> <property name="type" value="BCD" /> <property name="byteLength" value="12" /> <property name="unicodeByteLength" value="24" /> <property name="decimals" value="2" /> <property name="optional" value="true" /> </bean>
複合リストフィールドメタデータの例
以下の meta-data 設定は、connectionInfo
レコードのメタデータオブジェクトで指定される行構造を持つ CONNINFO
という名前の必要な TABLE
パラメーターを指定します。
<bean class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl"> <property name="name" value="CONNINFO" /> <property name="type" value="TABLE" /> <property name="recordMetaData" ref="connectionInfo" /> </bean>
レコードメタデータプロパティー
レコードメタデータオブジェクト org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl
は、ネスト化された STRUCTURE
または TABLE
パラメーターの名前および内容を指定します。レコードメタデータオブジェクトは、ネスト化された構造またはテーブル行にあるパラメーターを指定するレコードフィールドメタデータデータオブジェクト( org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl
)の一覧を維持します。
以下の表は、レコードメタデータオブジェクトに設定できる設定プロパティーの一覧です。
Name | デフォルト値 | 説明 |
| - | レコードの名前。 |
| - |
レコードフィールドメタデータオブジェクト( |
record meta-data オブジェクトのすべてのプロパティーが必要です。
レコードメタデータの例
以下の例は、レコードメタデータオブジェクトの設定方法を示しています。
<bean id="connectionInfo" class="org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl"> <property name="name" value="CONNECTION_INFO" /> <property name="recordFieldMetaData"> <list> ... </list> </property> </bean>
レコードフィールドメタデータプロパティー
レコードフィールドの meta-data オブジェクト org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl
は、構造を持つパラメーターフィールドの名前およびタイプを指定します。
レコードフィールドメタデータオブジェクトはパラメーターフィールドの meta-data オブジェクトと似ていますが、ネストされた構造やテーブル行内の個々のフィールドの場所のオフセットは追加で指定する必要があります。個々のフィールドのユニコード以外のオフセットと Unicode オフセットは、構造または行の前のフィールドの非Unicodeおよび Unicode バイト長の合計から計算して指定する必要があります。ネストされた構造でフィールドのオフセットを適切に指定できず、テーブル行により、基礎となる JCo および ABAP ランタイムのパラメーターのフィールドストレージが重複し、RFC 呼び出しの値が適切に転送されないことに注意してください。
CHAR
,DATE
,BCD
,TIME
,BYTE
,NUM
,FLOAT
, INTINT1
INT1 INT2INT
2DECF16
,DECF34
,STRING
,XSTRING
)の場合、以下の表は、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを一覧表示しています。
Name | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前 |
| - | フィールドのパラメータータイプ |
| - | 非Unicodeレイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
| - | Unicode レイアウトのフィールドの長さ(バイト単位)。この値は、パラメーターのタイプによって異なります。「RFC のメッセージボディー」 を参照してください。 |
| - | 非Unicodeレイアウトのバイト単位のフィールドオフセット。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。 |
| - | Unicode レイアウトのフィールドオフセット(バイト単位)。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。 |
|
|
フィールド値の 10 進数の数。パラメータータイプ |
TABLE
または STRUCTURE
タイプの複雑なパラメーターフィールドの場合、以下の表は、レコードフィールドメタデータオブジェクトに設定できる設定プロパティーを示しています。
Name | デフォルト値 | 説明 |
| - | パラメーターフィールドの名前 |
| - | フィールドのパラメータータイプ |
| - | 非Unicodeレイアウトのバイト単位のフィールドオフセット。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。 |
| - | Unicode レイアウトのフィールドオフセット(バイト単位)。このオフセットは、エンクロージング構造内のフィールドのバイトロケーションです。 |
| - |
構造またはテーブルのメタデータ。レコードメタデータオブジェクト |
要素レコードフィールドメタデータの例
以下のメタデータ構成は、ARR
という名前の DATE フィールドパラメーターが、Unicode 以外のレイアウトの場合は 85 バイトをエンクロージング構造に指定し、Unicode レイアウトの場合の囲み構造に 170 バイトを指定します。
DATE
<bean class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl"> <property name="name" value="ARRDATE" /> <property name="type" value="DATE" /> <property name="byteLength" value="8" /> <property name="unicodeByteLength" value="16" /> <property name="byteOffset" value="85" /> <property name="unicodeByteOffset" value="170" /> </bean>
複雑なレコードフィールドメタデータの例
以下の meta-data 設定は、flightInfo
record meta-data オブジェクトで指定された構造を持つ FLTINFO
という名前の STRUCTURE
フィールドパラメーターを指定します。パラメーターは、非Unicode レイアウトと Unicode レイアウトの両方で、囲み構造の先頭に置かれます。
<bean class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl"> <property name="name" value="FLTINFO" /> <property name="type" value="STRUCTURE" /> <property name="byteOffset" value="0" /> <property name="unicodeByteOffset" value="0" /> <property name="recordMetaData" ref="flightInfo" /> </bean>