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

このトピックでは、WebSphere Message Broker バージョン 6.0 へのメッセージ・セットのマイグレーション時に知っておく必要のある情報を提供します。 このトピックには、以下のセクションが含まれます。

バージョン 5.1 Message Brokers Toolkit を使用している場合、このトピックで「バージョン 5.0」に言及している箇所はすべて「バージョン 5.1」に置き換えてください。

バージョン 2.1 からのマイグレーション

メッセージ・セットをバージョン 2.1 からバージョン 6.0 にマイグレーションするには、mqsimigratemsgsets コマンドを使用して、バージョン 2.1 メッセージ・セットのエクスポート・ファイル (.mrp) をバージョン 6.0 メッセージ・セットのプロジェクトに変換します。 コマンドを実行する前に、その操作に関する詳細な注記が扱われているバージョン 2.1 からのメッセージ・セットのマイグレーションのトピックを参照してください。

バージョン 5.0 からのマイグレーション

メッセージ・セットをバージョン 5.0 からバージョン 6.0 にマイグレーションする場合には、マイグレーション・コマンドは必要ありません。 バージョン 5.0 メッセージ・セットのプロジェクトの内容は、バージョン 6.0 Message Brokers Toolkit で読み取り可能であり、初めて変更して保管する時にバージョン 6.0 形式に自動的に変換されます。

汎用マイグレーション情報

バージョン 2.1 からマイグレーションした場合でも、またはバージョン 5.0 からマイグレーションした場合でも、以下の情報を適用できます。
  • CWF プロパティー「反復カウント」は論理プロパティー「最大数」に置き換えられました。これにより、CWF 物理形式は、反復の回数を決定する「最大数」をすでに使用している TDS および XML 物理形式に合わせられます。 CWF 「反復カウント」の値セットを持っていたエレメントまたはグループごとに、メッセージ・エディターの「問題」ビューに警告が現れます。 問題を解決するには、その警告を右クリックして「クイック修正」をクリックします。
    注: バージョン 5.0 では、CWF プロパティー 「反復カウント」 が設定されておらず、さらに 「最小数」「最大数」と等しくない場合、反復の回数は 1 であると見なされます。 バージョン 6.0 では、反復の回数は「最大数」であると見なされます。 この状態で警告を発行することはできません。こうしたメッセージ・モデルは COBOL または C インポーターでは作成されません。このため、バージョン 5.0 メッセージ・エディターを使用して CWF メッセージ・モデルを作成した場合にのみ警告を発行できます。
  • バージョン 6.0 以前の TDS 物理形式には、メッセージ・キーによる組み込みメッセージ識別が含まれていました。 メッセージ・キー手法は推奨されなくなり、メッセージ ID と呼ばれる手法に置き換えられています。 TDS 「メッセージ・キー」値を持つメッセージごとに、および TDS 「エレメント値の解釈」プロパティーが「メッセージ・キー」に設定されているエレメントまたは属性ごとに、メッセージ・エディターの「問題」ビューに警告が現れます。 問題を解決するには、その警告を右クリックして「クイック修正」をクリックします。

    メッセージ・セットがバージョン 5.0 またはバージョン 2.1 ブローカーにデプロイされている場合、それらのブローカーは組み込みメッセージ識別の方法としてメッセージ ID 手法をサポートしていないため、TDS メッセージ・キーを使用し続けてください。

  • TDS 物理形式プロパティー「データ・パターン」Message Brokers Toolkit によって妥当性検査され、それが有効な XML スキーマ正規表現であることが保証されます。エラーはメッセージ・エディターの「問題」ビューに表示され、エディターを使用してそれらを手動で訂正する必要があります。 特に、メタ文字のエスケープに関して XML スキーマの仕様に対して発行されたいくつかの誤りがありました。これによって妥当性検査エラーが発生する可能性があります。このエラーを訂正するには、円記号文字 ("¥") を使用してハイフン文字 ("-") または中括弧文字 ( "{" および "}") をエスケープする必要があるかもしれません (例えば、"¥{" または "¥-")。IBM 提供のメッセージ・セットを使用中にこうしたエラーを受け取った場合には、IBM に連絡してメッセージ・セットの訂正されたバージョンを入手してください。
  • エレメントまたは属性のデフォルト値または固定値、および単純タイプの列挙値は、単純タイプの長さ、最大長および最小長ファセット (指定されていれば) に対して検査されます。 値がファセットに準拠していない場合、メッセージ・エディターの「問題」ビューにエラーが表示されます。 問題を解決するには、クイック修正が使用可能であれば、そのエラーを右クリックして「クイック修正」をクリックします。そうでない場合、エディターを使用してその問題を手動で訂正します。 このエラーが生じやすいのは、COBOL コピーブックを Message Brokers Toolkitバージョン 5.0 Fix Pack 2 またはそれ以前のバージョンにインポートする場合です。
  • CWF および TDS の「ヌルのエンコード方式」および「ヌルのエンコード値」 プロパティーはローカル属性、グローバル属性および属性参照から除去されています。 XML スキーマでは、エレメントだけが「ヌル許可」プロパティーを持つことができるため、属性としてモデル化されるデータ・フィールドでヌル値を渡すことはできません。バージョン 5.0 の属性に CWF または TDS の「ヌルのエンコード方式」値を指定した場合、それらは無視されています。
  • TDS 「反復エレメント区切り文字」プロパティーはローカル属性および属性参照から除去されています。 XML スキーマでは、属性は繰り返されません。バージョン 5.0 の属性に TDS の「反復エレメント区切り文字」値を指定した場合、それらは無視されています。
  • 単純タイプ xsd:gMonth を使用したエレメントまたは属性の場合、CWF、XML、および TDS 「日時形式」プロパティーのデフォルト値は "--MM" です。バージョン 5.0 では、デフォルト値は "--MM--" です。これは、XML スキーマの正誤表に準拠するように訂正されています。
  • マイグレーション時に、メッセージ・ディクショナリーはブローカー・データベース内でmqsimigratecomponents コマンドによってバージョン 6.0 形式にアップグレードされるため、メッセージ・セットを再デプロイする必要はありません。 ただし、メッセージ・セットを再デプロイせずに、"チェックされたベクトル・エラー" または "アクセス違反" などの ParserException に気付いた場合、メッセージ・セットを使用するメッセージ・フローを最初に実行する時に、そのメッセージ・セットを再デプロイする必要があります。 これは、以前に未検出の誤ったデータがメッセージ・ディクショナリーに含まれる場合に生じることがあります。 バージョン 6.0 では、メッセージ・ディクショナリーは最初の使用時に検査されます。バージョン 2.1 およびバージョン 5.0 では、これは行なわれません。

MRM パーサーにおける動作の変更点

バージョン 2.1 からマイグレーションした場合でも、またはバージョン 5.0 からマイグレーションした場合でも、以下の情報を適用できます。
  • XML 物理形式。バージョン 6.0 は、XML 文書内の xsi:type 属性に影響を受けやすく、それに応じて動作を変更します。 xsi:type 属性はもはや自己定義属性として扱われないため、「@type」ではなく「type」という名前でメッセージ・ツリー内に表示されます。 メッセージ・フロー・ロジックはメッセージ・ツリー内の xsi:type 属性に影響を受けやすく、メッセージ・フローを新規の動作に従うように変更します。 バージョン 6.0 より前のロジックをメッセージ・フロー内に保存するには、環境変数 MQSI_IGNORE_XSI_TYPE を任意の値に設定します。これで、バージョン 6.0 より前の動作が採用されます。
  • XML 物理形式。XML 文書内の DOCTYPE 情報は、解析時には論理メッセージ・ツリーに表示されませんが、入力文書から出力文書に保存されます。これは、MRM が DOCTYPE のコピーを内部的に保持するためです。 バージョン 6.0 より前では、これはビット・ストリームの完全コピーでした。 バージョン 6.0 では、処理をコピーするとフォーマット中の空白文字の一部が失われます。 例えば、以下の入力 DOCTYPE のエレメント宣言の場合:
    <!ELEMENT e0 (e1|e2)+ >
    は、出力では以下のように表示されます。
    <!ELEMENT e0 (e1|e2)+>
    新規の動作は、XML 物理形式がその他のすべての XML 構成において空白文字を処理する方法と一貫性があります。
  • TDS 物理形式。論理プロパティー 「構成」「選択」に設定し、TDS プロパティー 「データとエレメントの分離」「固定長」に設定したグループの場合、パーサーは常に、選択データの長さがグループの中で最も長い子の長さであると見なし、その文字数を読み書きします。 メッセージがこれに準拠していることを確認してください。準拠していないと、パーサーは選択に続くデータを選択の一部として扱います。 バージョン 6.0 より前では、パーサーがこの規則を強制することはありませんでした。
  • TDS 物理形式。TDS エレメント・プロパティー「ヌルのエンコード方式」「NullPadFill」に設定した場合、これが使用されるのは、構文解析または書き込みの際に対応する「長さ」プロパティーがアクティブに使用されている場合のみです。 バージョン 6.0 より前では、「長さ」プロパティーがアクティブに使用されているかどうかにかかわりなく「NullPadFill」が使用されていました。
  • TDS 物理形式。TDS プロパティー「データとエレメントの分離」「全エレメントを区切る」または「可変長エレメントを区切る」に設定されています。 複合エレメントは常に、独自の「データとエレメントの分離」設定にかかわりなく可変長を持っていると見なされます。 これはつまり、メッセージ・ビット・ストリームでは、複合エレメントが固定長を持っている場合でも、「区切り文字」は複合エレメントと後続のエレメントとの間にあると予想され、「反復エレメント区切り文字」は複合エレメントのすべてのインスタンス間にあると予想される、ということです。 バージョン 6.0 より前では、パーサーはこの規則を強制することはありませんでした。また、「可変長エレメントを区切る」の場合、書き込みプログラムは、複合エレメントの長さが認識されている場合には区切り文字を出力しませんでした。
  • TDS 物理形式。TDS プロパティー「データとエレメントの分離」「データ・パターンを使用」に設定されています。データ・パターンに指定された正規表現がゼロ長の一致を戻すと、長さがゼロの値を持つエレメントが存在していると扱われます。 バージョン 6.0 より前では、ゼロ長の一致は省略されるエレメントとして扱われていました。
  • TDS 物理形式。TDS プロパティー「データとエレメントの分離」「タグ付き区切り」に設定されています。ビット・ストリーム内のグループの最後の子の後ろに現れる無関係の区切り文字は、もはや許容されず、構文解析例外の原因となります。 バージョン 6.0 より前では、パーサーがこの規則を強制することはありませんでした。 これが問題である場合、TDS 「グループ・ターミネーター」プロパティーを使用して、無関係の区切り文字をモデル化することを検討してください。
  • TDS 物理形式。TDS プロパティー「データとエレメントの分離」「タグ付き区切り」に設定されています。バージョン 6.0 では、「タグ付き区切り」グループの構文解析時に、パーサーは、グループの「構成」プロパティーが「シーケンス」または「OrderedSet」に設定されている場合でも、メッセージ・ビット・ストリーム内でメンバーが順序どおりに表示されていないグループを検知しようとします。ただし、そのグループに、ビット・ストリームからは識別できない組み込みメッセージまたは複合エレメントまたはグループが含まれている場合、グループのすべてのメンバーは、モデルで定義されるのと同じ順序でビット・ストリームに表示されなければなりません。それらのメンバーが順序どおりに表示されないと、グループは正しく構文解析されず、予測不能な結果になります。 この症状の 1 つに、モデルへのエレメントの突き合わせに失敗したことが原因で生じる、自己定義エレメントのメッセージ・ツリー内での外観があげられます。

    この具体的な例は、メッセージに組み込みメッセージが含まれており、メッセージ・キー手法またはメッセージ ID 手法のいずれかを使用して組み込みメッセージを識別する場合があります。 メッセージ・キーまたはメッセージ ID の値を指定するエレメントがモデルとの突き合わせに失敗した場合、パーサーは、その値をメッセージ・キーまたはメッセージ ID と解釈するべきかどうかを判断できません。

    バージョン 6.0 より前では、パーサーは、順序が正しくないすべての「タグ付き区切り」グループを検知しようとしました。その結果、パフォーマンスが低下しました。バージョン 6.0 では、これが問題である場合、「構成」「UnorderedSet」に設定されている組み込み子グループとして、グループの非順序の内容をモデル化することを検討してください。

    複合エレメントまたはグループは、それがまたはその子メンバーがグループ標識、タグ、またはデータ・パターンを指定している場合、ビット・ストリームから識別することができます。

    その名前にかかわらず、「タグ付き区切り」グループのメンバーがタグを指定する必要がない状況があります。特に、メンバーが組み込みメッセージであるか、複合エレメントまたはグループである場合がそうです。

  • TDS 物理形式。TDS 「データとエレメントの分離」プロパティーは「タグ付きエンコード長」に設定されています。書き込み時に、エンコード長は、構文解析の際に変換処理と一致するようにデータ内の文字の数として出力されます。 バージョン 6.0 より前では、エンコード長はデータ内のバイトの数として出力され、データが SBCS ではない場合、構文解析の際に変換処理と一致しませんでした。
  • TDS 物理形式。書き込み時に、エレメントまたはグループの繰り返し数がモデルで固定されていて、論理メッセージ・ツリーの実際の出現が繰り返し数を超えた場合で、かつ「データとエレメントの分離」プロパティーがいずれの「タグ付き」分離のものでない場合、余分の出現は廃棄されて出力には表示されません。バージョン 6.0 以前では、余分の出現は出力に表示されます。余分の繰り返しが出力に表示されるようにしたい場合、繰り返し数が無制限であることを示すため maxOccurs=-1 を指定します。
  • すべての物理形式。「形式」プロパティーに I を与えられた dateTime フィールドを書き込むとき、出力形式はストリング・データとしての DateTimeの説明のとおり、フィールドの論理タイプに依存します。バージョン 6.0 以前では、出力形式は不正確な完全な yyyy-MM-dd'T'HH:mm:ssZZZ 形式でした。
  • 入出力メッセージの妥当性検査は、無効メッセージを追加検出できるように改良されています。 このため、バージョン 6.0 では、以前のバージョンでは誤ってフラグが立てられなかった場合に、メッセージに無効であるとフラグを立てることができます。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ah20250_