メッセージ・セットのマイグレーションの注意事項

このトピックでは、マイグレーションするときに、各メッセージ定義ファイルで何をする必要があるのかについて説明します。

mqsimigratemsgsets コマンドを使用する時には、各メッセージ定義ファイルに関する以下の情報に注意する必要があります。

ユーザーへの注記

バージョン 2.1 からのエクスポートと WebSphere Business Integration Message Broker バージョン 5.0 の インポートの間で、手動でメッセージ・セット・ファイルを変更することを強くお勧めします。 そうしないなら結果は保証されません。 これは、レポートの中に次の警告およびエラーがあるとわかります (BIP0141、BIP0142 から BIP0157、BIP0163)

それぞれの新規メッセージ定義ファイル .mxsd は注釈付きスキーマ・モデルであり、 メッセージ・セット内のそれぞれの作成物はこの新規モデル内に再作成され、 その既存のプロパティーが保存されますが、以下の例外があります。
  • WebSphere Business Integration Message Broker バージョン 5.0 モデル内の名前 (Name) は、 バージョン 2.1 モデルの ID (Identifier) です。 バージョン 2.1 での接頭部は、そのエレメントが実際にはローカルであることを示す方法であったため、 オブジェクトが接頭部付きの ID を持つエレメントである場合、その接頭部は除去されるという点に注意してください。
  • ラベル (Label)簡略説明 (Short)詳細説明 (Long Description)、 および ヒストリー (History) は、 WebSphere Business Integration Message Broker バージョン 5.0 用の単一の文書 (Documentation) プロパティーにマージされます。
  • それぞれの複合タイプは、 WebSphere Business Integration Message Broker バージョン 5.0 では xsd:complexType および xsd:group となります。
    そのようにして作成された xsd:complexType は、ローカルまたはグローバルになれます。 デフォルトはローカルですが、以下のいずれかに当てはまる場合、グローバルに指定変更されます。
    1. 複合タイプが参照されない
    2. 複合タイプにバージョン 2.1 MRM 基本タイプがある
    3. 複合タイプが複数のエレメントにより参照される
    4. メッセージが複合タイプを基にしている
    5. -g パラメーターが指定されている
    そのようにして作成された xsd:group は、 ローカルまたはグローバルになれます。 デフォルトはローカルですが、以下のいずれかに当てはまる場合、グローバルに指定変更されます。
    1. 複合タイプが別の複合タイプ内に直接組み込まれている。 詳細は、組み込み単純タイプを参照してください。
    2. 複合タイプにバージョン 2.1 MRM 基本タイプがある。 詳細は、MRM 基本タイプを持つ複合タイプを参照してください。
    3. 複合タイプには、 「simpleUnorderedSet」のバージョン 2.1 タイプ構成および「クローズ (closed)」のバージョン 2.1 タイプ内容がある。

    「simpleUnorderedSet」のタイプ構成は、 WebSphere Business Integration Message Broker バージョン 5.0 のモデルからドロップされる点に注意してください。 タイプ内容が「クローズ (closed)」の場合、 それは BIP0191 警告メッセージを伴って「すべて (all)」に置換されます。 それ以外の場合は、BIP0192 警告メッセージを伴って「unorderedSet」に置換されます。

    「空 (empty)」のタイプ構成は、BIP0193 警告メッセージを伴って空の「シーケンス (sequence)」に置換されます。

  • 1 と等しくない minOccurs または maxOccurs を持つ組み込みメッセージは、BIP0162 警告メッセージを伴って出現を 1 に訂正します。
  • 各エレメントは、xsd:element になります。 そのようにして作成された xsd:element は、 指定された順序で適用される以下の基準に従って、ローカルまたはグローバルになれます。
    1. エレメントが参照されない場合、それはグローバルとなる
    2. エレメントが接頭部付きの ID を持ち、ちょうど 1 つの複合タイプのメンバーである場合、 それはローカルとなる
    3. エレメントがバージョン 2.1 MRM 基本タイプを持つ複合タイプの場合、 それはローカルとなる
    4. エレメントが複数の複合タイプのメンバーである場合、それはグローバルとなる
    5. -g パラメーターが指定されている場合、それはグローバルとなる
    6. それ以外の場合、エレメントはローカルとなる。

    バージョン 2.1 では、接頭部付きの ID は、エレメントが実際にはローカルであることを示すためのものでした。 しかしながら、接頭部付きの ID を持つエレメントが実際に複数の複合タイプで使用され、グローバルとなることは可能です。 その場合、グローバル・エレメントは前述の規則に従って作成されます。

    これは接頭部付きの ID の誤用であるため、BIP0195 警告メッセージも出され、 グローバル・エレメントが重複して作成されることがあります。 例えば、A^X および B^X があり、両方が 複数回使用される場合、 名前 X を持つ 2 つのグローバル・エレメントが作成されます。

    そのようにして作成された xsd:element のタイプは、以下のいずれかになります。
    1. グローバル xsd:complexType
    2. 無名のローカル xsd:complexType
    3. スキーマ組み込み xsd:simpleTypeMRM 単純タイプからスキーマ単純タイプへのマッピングを参照してください。
    4. スキーマ組み込み xsd:simpleType を制限する無名 xsd:simpleType
  • エレメントに属するすべての値制約は、以下のように処理されます。
    1. デフォルト (Default) 制約は、エレメントの「デフォルト (default)」属性を設定します。
    2. ヌル許可 (Null Permitted) 制約は、エレメントの「ヌル可能 (nillable)」属性を設定します。
    3. 日付テンプレート (Date Template) 制約は、エレメントの xsd:simpleType を変更します。 MRM 単純タイプからスキーマ単純タイプへのマッピングを参照してください。
    4. その他すべては、xsd:facets を適用することにより、 エレメントの xsd:simpleType を制限します。

    すべての参照されない値制約は、BIP0158、BIP0159、または BIP0160 警告メッセージを伴って廃棄されます。

    正しくない xsd:facet が作成される結果となるすべての値制約は、 BIP0165 警告メッセージを伴って廃棄されます。
    注: タイプ STRING のエレメントのみについては、 値制約 MinInclusive および MaxInclusive が、 文書化目的の隠れた注釈として代わりにインポートされます。
  • エレメント修飾子は 1 度だけ BIP0167 警告メッセージを伴って廃棄されます。
  • 各メッセージは、 メッセージおよび関連したグローバル xsd:element になります。
  • エレメント修飾子を使用したメッセージは、BIP0166 警告メッセージを伴ってその修飾を廃棄します。
  • バージョン 2.1 で冗長であった幾つかの物理形式のプロパティーは、新規モデルでは除去されています。 これらのプロパティーがデフォルトではない値で現れた場合、 BIP0164 (または他のさらに特定的な) 警告メッセージが出されます。
  • TDS メッセージ・セット・レベルのプロパティー 「世紀ウィンドウ (Century Window)」のデフォルト値は、 バージョン 2.1 では常時「53」に設定されていました。 メッセージング標準「SWIFT」ではこれは誤りであるため、「SWIFT」のデフォルトのみ、「80」に変更されています。 これは、インポートされたモデルで反映されます。

mqsimigratemsgsets が作成するもの

.mrp ファイルが現れるたびに、 新規メッセージ・セット・プロジェクトが作成されます。 その名前は、バージョン 2.1 でのメッセージ・セット名およびレベルから派生する名前となります。 ユーティリティーはこれを行う時に、「1」以外のすべてのレベル値に対して、 メッセージ・セット名に接尾部を追加します。 このプロセスにより、1 対 1 のマッピングを復元し、 名前が付いた唯一のメッセージ・セットをブローカーが見つけることが可能になります。

例えば、名前「SWIFT」およびレベル「1」を持つバージョン 2.1 のメッセージ・セットは、 バージョン 5.0 にメッセージ・セット名「SWIFT」でマイグレーションするのに対して、 名前「SWIFT」およびレベル「2」を持つバージョン 2.1 のメッセージ・セットは、 バージョン 5.0 にメッセージ・セット名「SWIFT_2」でマイグレーションします。

メッセージ・セット・フォルダーおよび関連した messageSet.mset ファイルが 新規プロジェクト内に作成されます。 メッセージ・セットの内容において、以下のことが適用されます。
  • メッセージ・セット・フォルダー名は、新規プロジェクトと同じである。
  • メッセージ・セット ID は、バージョン 2.1 の元のメッセージ・セットの ID である。
  • メッセージ・セットは、ネーム・スペースをサポートしない指定をして作成される。
  • すべての物理形式レイヤーは、新規メッセージ・セットに再作成される。
  • すべての COBOL 言語バインディング・レイヤーは、BIP0174 警告メッセージで廃棄される。
  • すべての C 言語バインディング・レイヤーは、BIP0173 警告メッセージで廃棄される。
  • すべてのファイナライズ状態は、BIP0170 警告メッセージで廃棄される。
  • すべての基本情報は、BIP0172 警告メッセージで廃棄される。
  • すべてのフリーズ・タイム・スタンプは、BIP0169 警告メッセージで廃棄される。 このメッセージは常時受け取るという点に注意してください。
.mrp ファイルに出現するメッセージ・カテゴリーごとに、 新規 .category ファイルが作成されます。 以下の概念に注意してください。
  • トランザクション・オブジェクトはバージョン 5.0 でドロップされ、 各トランザクションは同等のメッセージ・カテゴリーに置換される。
  • トランザクション・カテゴリー・オブジェクトはバージョン 5.0 でドロップされ、 各トランザクション・カテゴリーは、 トランザクション・カテゴリーにより参照されるすべてのトランザクション内のすべてのメッセージを含む同等のメッセージ・カテゴリーに置換される。

-part パラメーターがなければ、 メッセージ・セットと同じ名前を持つメッセージ・セット内、 およびデフォルトの (notarget) ネームスペースに、 単一のメッセージ定義 .mxsd ファイルが作成されます。

-part が指定されている場合、以下の場合に複数の .mxsd ファイルが作成されます。
  • .mrp ファイル内のメッセージ、エレメント、および複合タイプの数が 1000 を超え、 かつ、
  • .mrp ファイルが完全に排反するサブセットに分割できる。

バージョン 2.1 では、すべてのエレメントおよび複合タイプがグローバルでした。バージョン 5.0 では、エレメントおよび複合タイプは、グローバルまたはローカルとなります。バージョン 2.1 のメッセージ・セットをマイグレーションするとき、 バージョン 2.1 でグローバルであった多くのエレメントおよび複合タイプが、上記の規則にしたがって、 バージョン 5.0 のローカル・エレメントおよび複合タイプに変換されていることにお気付きになるでしょう。

この動作をオーバーライドする場合がある 2 つの理由があります。
  • すべてのオブジェクトがグローバルである、バージョン 2.1 のメッセージ・セットの編成を望む。 -g パラメーターを指定する場合、 この編成は実際的である限り保存されます。
  • 複合タイプの 「タイプ内容 (Type content)」「オープン定義 (Open defined)」を利用する。

    これは、複合タイプの妥当な内容が、「タイプ内容 (Type composition)」のプロパティー規則に準じて、メッセージ・セット内で任意のオブジェクトになり得ることを意味しています。 一般的にこの場合、複合タイプは明示的な内容でモデル化されていません。

    これによって、mqsimigratemsgsets コマンドは、 あるエレメントがグローバルではなくローカルになると誤って推論します。「オープン定義 (Open defined)」を使用し、 マイグレーション後に実行時妥当性検査エラー BIP5372E が生じることが見つかった場合、 以前にそれが生じていなかったとき、-g オプションを指定して、mqsimigratemsgsets コマンドを再実行してください。

組み込み単純タイプ

ユーザーへの注釈

複合タイプ内の組み込み単純タイプは、特別の処理が必要です。 なぜなら、スキーマ・モデルはこの構成を処理できないからです。 組み込み単純タイプは推奨されていないため、 包含する複合タイプの「混合 (mixed)」属性を活用することにより、 組み込み単純タイプの使用を置き換えるよう、強くお勧めします。

組み込み単純タイプは主に、 子エレメント間に散在するデータ値を含んでいる複合 XML エレメントをモデル化するために導入されました。 そうしたデータ値のそれぞれは、組み込み単純タイプにより明示的にモデル化されました。 組み込み単純タイプは、値のプレースホルダーとして働くと共に、その単純タイプも提供しました。

XML スキーマにおいて、厳密に同等のものはありません。 最も近い働きをするものは、xsd:complexType の「混合」属性の使用です。 しかしながら、これは、テキストが子エレメントの前と間 (または、間のみ) に現れるということしか指定しません。 これは、テキストの場所またはデータ・タイプについては何も指定しません。

この意味構造を保つために、組み込み単純タイプ (Embedded Simple Type) と呼ばれるスキーマの拡張が導入されました。 これは単に、適切な単純タイプの、名前が付いていないローカル・エレメントです。 そのタイプ自体は、特殊名 (ComIbmMrm_Anon で始まる) が付いた、 真の基礎となる単純タイプの制限されたものです。

MRM 基本タイプを持つ複合タイプ

ユーザーへの注釈

この状況では BIP0161 警告メッセージが出され、特別の処理が必要です。 なぜなら、スキーマ・モデルはこの「複合」構成を処理できないからです。 複合エレメントは推奨されていないため、複合タイプを、 1 で説明されているグローバル xsd:complexType を参照する通常のエレメントに置き換えて使用し、 「混合」属性を活用するよう、強くお勧めします。

そうした複合タイプは主に、 子エレメントだけでなくデータ値も含んでいる複合 XML エレメントをモデル化するために導入されました。 それで、そうした複合タイプのエレメントは、 通常の複合エレメントのように両方の複合内容を持っていますが、 単純エレメントのように値 (MRM 基本タイプ情報) も持っています。

XML スキーマにおいて、厳密に同等のものはありません。 最も近い働きをするものは、xsd:complexType の「混合」属性の使用です。 しかし、これは、テキストが子エレメントの前と間 (または、間のみ) に現れるということしか指定しません。 これは、テキストの場所またはデータ・タイプについては何も指定しません。

XML スキーマには厳密に同等のものがないため、以下のことがなされました。
  1. グローバル xsd:complexType および global xsd:group は、 通常の仕方で作成されます。 xsd:complexType には「混合」属性セットが追加されており、その内容は、 グローバル xsd:group への参照のみとなっています。 これは、複合内容をモデル化しますが、MRM 基本タイプ情報を失います。
  2. 特定のスキーマ拡張である、複合エレメント (Compound Element) が導入されています。 これは、複合エレメントと単純エレメントが融合したものです。 それは、無名の複合タイプを持つエレメントとしてスキーマ条件にインプリメントされています。 そのタイプの内容は以下のとおりです。
    • ふさわしい単純タイプのローカル・エレメント (MRM 基本タイプ情報をモデル化するためのもの)。 単純タイプは、特殊名 (ComIbmMrm_BaseValue で始まる) が付いた、 真の基礎となる単純タイプの制限されたものです。
    • 上記の 1 で作成されたグローバル xsd:group へのグループ参照。

複合エレメントは、複合タイプを参照するそれぞれのエレメントごとに作成されます。 これは、エレメント自体が別の複合タイプのメンバーである場合のみ行われるという点に注意してください。

これら 2 つの組み合わせにより、 メッセージ内でそうした複合タイプを意味のある仕方で使用し続けることができます。 MRM 基本タイプ情報が失われるのは、 それがメッセージ内でアクティブに使用されることが全くなかった時だけだからです。

前のセクションで説明されている状況により作成される特殊データ・タイプ (ComIbmMrm で始まる) は、 .wmq21.mxsd と呼ばれる XML スキーマで定義されます。 これは、mqsimigratemsgsets コマンドで作成される 各メッセージ定義ファイルに組み込まれます。

MRM 単純タイプからスキーマ単純タイプへのマッピング

単純タイプのマッピングは以下の通りです。
MRM タイプ スキーマ・タイプ
BINARY xsd:hexBinary
BOOLEAN xsd:boolean
DECIMAL xsd:decimal
DATETIME xsd:dateTime (以下の表も参照してください)
FLOAT xsd:float
INTEGER xsd:int
STRING xsd:string
DATETIME タイプにおいて、単純タイプのマッピングは、 日付テンプレート (Date Template) 値制約の働きにより、以下のように変更される可能性があります。
MRM DATETIME 日付テンプレート スキーマ・タイプ
CCYY-MM-DDThh:mm:ss.s xsd:dateTime
CCYY-MM-DD xsd:date
CCYY-MM xsd:gYearMonth
CCYY xsd:gYear
--MM-DD xsd:gMonthDay
--MM xsd:gMonth
---DD xsd:gDay
Thh:mm:ss.s xsd:time

日付テンプレート (Date Template) が前述のリストにない場合、 日付テンプレートが時間コンポーネントだけを持っていたかどうかに基づいて、 DATETIME は、BIP0175 警告メッセージを伴って xsd:time または xsd:dateTime のいずれかにマップされます。 しかしながら、このマッピングにより、インポート後、 タスク・リストにエラーが発生することがある点に注意してください。

関係するエレメントがバージョン 2.1 の デフォルト値 (Default Value)最小値 (Min Inclusive)最大値 (Max Inclusive)、または列挙 (Enumeration) 値制約も持つ場合、 それらの値は xsd:time または xsd:dateTime 用の字句スペースと一致しないため、妥当性検査が失敗します。 これらは、エディターを使用して手動で訂正する必要があります

値が完全に指定されなかったデフォルト値 (Default Value)最小値 (Min Inclusive)最大値 (Max Inclusive)、 または列挙 (Enumeration) 値制約を提供したすべてのバージョン 2.1 DATETIME タイプに対しても、同じタスク・リスト・エラーが発生します。 例えば、日付テンプレート (Date Template)「CCYY-MM」、列挙 (Enumeration)「2003」は、 バージョン 2.1 では実行時に「2003-01」として解釈されたため、許可されていました。 しかしながら、新規モデルでは、その値は単純タイプの字句スペースと一致する必要があるため、 「-01」を含む必要があります

関連概念
メッセージのモデル化の概念

関連タスク
メッセージ・セットのマイグレーション

関連資料
mqsimigratemsgsets コマンド