メッセージ・セットをバージョン 2.1 からバージョン 6.0にマイグレーションするには、mqsimigratemsgsets コマンドを使用する必要があります。バージョン 5.0 からバージョン 6.0にマイグレーションするときには、このコマンドを使用する必要はありません。
バージョン 2.1 からのエクスポートとWebSphere Message Broker バージョン 6.0のインポートの間で、手動でメッセージ・セット・ファイルを変更しないでください。 なぜなら、これにより、レポート BIP0141、BIP0142 から BIP0157、 および BIP0163 の警告およびエラー・メッセージで示されているエラーが発生することがあるからです。
すべての参照されない値制約は、BIP0158、BIP0159、または BIP0160 警告メッセージを伴って廃棄されます。
.mrp ファイルが現れるたびに、新規メッセージ・セット・プロジェクトが作成されます。その名前は、バージョン 2.1 でのメッセージ・セット名およびレベルから派生する名前となります。 ユーティリティーはこれを行う時に、「1」以外のすべてのレベル値に対して、 メッセージ・セット名に接尾部を追加します。 このプロセスにより、1 対 1 のマッピングを復元し、 名前が付いた唯一のメッセージ・セットをブローカーが見つけることが可能になります。
たとえば、名前「SWIFT」およびレベル「1」を持つバージョン 2.1 のメッセージ・セットは、バージョン 6.0にメッセージ・セット名「SWIFT」でマイグレーションするのに対して、 名前「SWIFT」およびレベル「2」を持つバージョン 2.1 のメッセージ・セットは、バージョン 6.0に「SWIFT_2」でマイグレーションします。
-part パラメーターがなければ、メッセージ・セットと同じ名前を持つメッセージ・セット内、およびデフォルトの (notarget) ネームスペースに、単一のメッセージ定義 .mxsd ファイルが作成されます。
バージョン 2.1 では、すべてのエレメントおよび複合タイプがグローバルです。 バージョン 6.0 では、xsd:elements および xsd:complex types は、グローバルまたはローカルとなります。 バージョン 2.1 のメッセージ・セットをマイグレーションするとき、バージョン 2.1 でグローバルであった多くのエレメントおよび複合タイプが、上記の規則に従って、バージョン 6.0 のローカル xsd:elements および xsd:complex types に変換されていることにお気付きになるでしょう。
これは、複合タイプの妥当な内容が、「タイプ構成」のプロパティー規則に準じて、メッセージ・セット内で任意のオブジェクトになり得ることを意味しています。 一般的にこの場合、複合タイプは明示的な内容でモデル化されていません。
これにより、mqsimigratemsgsets コマンドは、 誤って、あるエレメントをグローバルではなくローカルにする可能性があります。 「オープン定義」を使用し、マイグレーション後に実行時妥当性検査エラー BIP5372E が生じることが見つかった (以前には生じていなかった) 場合、 -g パラメーターを指定して、mqsimigratemsgsets コマンドを再実行してください。
バージョン 2.1 では、接頭部付きの ID は、エレメントがローカルであることを示すためのものでした。 しかしながら、接頭部付きの ID を持つエレメントが実際に複数の複合タイプで使用され、グローバルとなることは可能です。その場合、グローバル xsd:element は前述の規則に従って作成されます。これは接頭部付きの ID の誤用であるため、BIP0195 警告メッセージも出され、 グローバル xsd:elements が重複して作成されることがあります。 例えば、A^X および B^X があり、両方 が 複数回使用される場合、 名前 X を持つ 2 つのグローバル xsd:elements が作成されます。
重複して作成される場合は、-pl パラメーターを指定した mqsimigratemsgsets コマンドをもう一度実行することができます。 これによって、接頭部付きの ID を持つすべての参照エレメントが、強制的にローカル xsd:elements として作成されます。
複合タイプ内の組み込み単純タイプは、特別の処理が必要です。 なぜなら、スキーマ・モデルはこの構成を処理できないからです。 組み込み単純タイプは推奨されていないため、xsd:complex タイプを含んだ「混合」属性を使用することにより、それらを置き換えてください。
組み込み単純タイプは主に、 子エレメント間に散在するデータ値を含んでいる複合 XML エレメントをモデル化するために導入されました。 そうしたデータ値のそれぞれは、組み込み単純タイプにより明示的にモデル化されました。 組み込み単純タイプは、値のプレースホルダーとして働くと共に、その単純タイプも提供しました。
XML スキーマにおいて、厳密に同等のものはありません。 最も近い働きをするものは、xsd:complexType の「混合」属性です。 しかしながら、これは、テキストが子エレメントの前またはその間に現れるということしか指定しません。 これは、テキストの場所またはデータ・タイプについては何も指定しません。
この意味構造を保つために、組み込み単純タイプと呼ばれるスキーマの拡張が導入されました。 これは適切な単純タイプの、名前が付いていないローカル xsd:element です。 そのタイプ自体は、特殊名 (ComIbmMrm_Anon で始まる) が付いた、 真の基礎となる xsd:simple type の制限されたものです。
この状況では BIP0161 警告メッセージが出され、特別の処理が必要です。 なぜなら、スキーマ・モデルはこの「複合」構成を処理できないからです。 複合エレメントは推奨されていないため、複合エレメントを使用する代わりに、 1 で説明されているグローバル xsd:complexType を参照する通常のエレメントに置き換えて、 「混合」属性を活用するように強くお勧めします。
そうした複合タイプは主に、 子エレメントだけでなくデータ値も含んでいる複合 XML エレメントをモデル化するために導入されました。 それで、そうした複合タイプのエレメントは、 通常の複合エレメントのように両方の複合内容を持っていますが、 単純エレメントのように値 (MRM 基本タイプ情報) も持っています。
XML スキーマにおいて、厳密に同等のものはありません。 最も近い働きをするものは、xsd:complexType の「混合」属性の使用です。 しかし、これは、テキストが子エレメントの前と間 (または、間のみ) に現れるということしか指定しません。 これは、テキストの場所またはデータ・タイプについては何も指定しません。
複合エレメントは、複合タイプを参照するそれぞれのエレメントごとに作成されます。 これは、エレメント自体が別の複合タイプのメンバーである場合のみ行われるという点に注意してください。
これら 2 つの組み合わせにより、 メッセージ内でそうした複合タイプを意味のある仕方で使用し続けることができます。 MRM 基本タイプ情報が失われるのは、 それがメッセージ内でアクティブに使用されることが全くなかった時だけだからです。
前のセクションで説明されている状況により作成される特殊データ・タイプ (ComIbmMrm で始まる) は、.wmq21.mxsd と呼ばれる XML スキーマで定義されます。 これは、mqsimigratemsgsets コマンドで作成される 各メッセージ定義ファイルに組み込まれます。
MRM タイプ | スキーマ・タイプ |
---|---|
BINARY | xsd:hexBinary |
BOOLEAN | xsd:boolean |
DECIMAL | xsd:decimal |
DATETIME | xsd:dateTime (以下の表も参照してください) |
FLOAT | xsd:float |
INTEGER | xsd:int |
STRING | xsd:string |
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 用の字句スペースと一致しないため、妥当性検査が失敗します。 これらは、エディターを使用して手動で訂正する必要があります。
値が完全に指定されなかったデフォルト値、最小値、最大値、または列挙値制約を提供したすべてのバージョン 2.1 DATETIME タイプに対しても、同じタスク・リスト・エラーが発生します。 例えば、日付テンプレート「CCYY-MM」、列挙「2003」は、バージョン 2.1 では実行時に「2003-01」として解釈されたため、許可されていました。 しかしながら、新規モデルでは、その値は単純タイプの字句スペースと一致する必要があるため、 「-01」を含む必要があります。