適用ステップ

適用ステップは、ターゲット環境のレコードが追加または更新されるステップです。比較ステップと同様、適用ステップは実際には複数のステップであり、高ボリュームおよびレコード間の依存関係をできるかぎり円滑かつ最適に処理します。

注意: プロセス内の様々なステップを簡素化する方法の詳細は、「バッチ・ジョブの実行」を参照してください。

適用ステップについて詳細に説明する前に、特定のデータ・セットに含まれている可能性があるデータのタイプを次に示します。

  1. 外部キーを持たないため、他のレコードに依存しないレコード。例: メッセージ、表示プロファイル。

  2. 外部キーを持ち、そのキーがターゲットにすでに存在する場合があるレコード。例: 既存のアルゴリズム・タイプのアルゴリズム、既存の作業予定タイプの作業予定役割。

  3. 外部キーを持ち、そのキーが新規レコードであるが移行の一部でもあるレコード。コンテンツ移行アシスタントによって、エクスポート時に関係が検出され、オブジェクトが同じトランザクションにグループ化されています。例: スクリプトも移行に含まれているスクリプトベースのアルゴリズム・タイプ。

  4. 外部キーを持ち、そのキーが新規レコードであるが移行の一部でもあるレコード。コンテンツ移行アシスタントによって、関係が検出されませんでした。これは、参照される外部キーがXMLまたはパラメータ列内にあり、関係を明示的に定義するための指示が移行計画に含まれていなかった場合に発生することがあります。例: 表示スクリプトを参照するゾーン。

  5. 両方のレコードが新規であり移行の一部である循環参照を持つレコード。コンテンツ移行アシスタントによって、エクスポート時に関係が検出され、オブジェクトが同じトランザクションにグループ化されています。例: ビジネス・オブジェクト・プラグイン・スポットのプラグイン・スクリプト。スクリプトによってビジネス・オブジェクトが参照され、ビジネス・オブジェクトによってスクリプトのアルゴリズム・タイプのアルゴリズムが参照されます。もう1つの例は、同じレコードが複数のメンテナンス・オブジェクトによって保守されるため、複数の移行オブジェクトに存在する場合です。

高ボリューム・データを処理するために、適用プロセスの最初のステップとして、マルチスレッドのバッチ・ジョブを介して、移行オブジェクト・レベルで適用ロジックが実行されます。これにより、前述のカテゴリ1および2のすべてのレコードは正常に適用されます。

前述のカテゴリ3および4のレコードの場合、外部キーを持つレコードがその関連レコードよりも前に追加または更新されると、検証は失敗します。ただし、関連レコードが先に追加されてから、それを参照するレコードが追加された場合は、検証に合格します。このツールは、これらの依存関係を次のように処理します。
  • 通常、マスター・エンティティとトランザクション・エンティティの間の依存関係は階層型であり、ほとんどの場合、単純です。このツールは、その知識を活用して、可能なかぎり依存関係の順序に従った最適な方法でオブジェクトの処理を編成します。エンティティ間の関係は複雑である可能性があり、このアプローチでは、処理順序に関連するエラーがすべて解消されるのではなく、それらが大幅に削減されるということに注意してください。

  • 構成エンティティ間の依存関係はより複雑で、絡み合っているため、移行オブジェクトには順序がありません。つまり、マルチスレッドのバッチ・プロセスによって、レコードが適切な順序で処理されない場合があります。

  • 順序に関連するエラーの処理の潜在的な問題に対処するために、適用ステップには特別な機能があり、これについては後で詳細に説明します。

前述のカテゴリ5のレコードの場合、循環参照のために、オブジェクト・レベルでの適用プロセスによって、これらのレコードは正常に追加または更新されません。これらのレコードは、トランザクション・レベルの適用プロセスによって処理されます。詳細は、次に説明します。

オブジェクトの適用

データ・セットが「オブジェクトの適用」の状態になると、「移行オブジェクト・モニター - 適用」プロセス(F1-MGOAP)が実行され、オブジェクトを適用しようとします。

注意:

ビジネス・データの別個のバッチ・プロセスを使用する場合、「移行オブジェクト・モニター(ビジネス) - 適用」プロセス(F1-MGOAB)は、ビジネス移行オブジェクトを適用するのと同じ方法で機能します。

適用アルゴリズムと連携するバックグラウンド・プロセスには、カテゴリ3および4 (前述)のレコードがこのステップで正常に適用されるようにする特別な機能があります。

  • 「移行オブジェクト・モニター - 適用」プロセスは、処理に適格なレコードがなくなるまで「承認済」状態のレコードを継続して再選択する特別なプロセスです。

  • 「オブジェクトの適用」アルゴリズムでエラーが受信された場合は、アルゴリズムによって移行オブジェクト・レコードの反復回数が増分されます。反復回数が最大数(アルゴリズムで指定)を超えていない場合、オブジェクトは「承認済」状態のままであり、処理対象として再度選択することに適格です。反復回数がアルゴリズムで定義された最大を超えている場合、レコードは「適用中エラー」状態に遷移します。

注意: この適用バッチ・ジョブを発行するとき、スレッド・プール・ワーカーでサポートされるスレッド数以下のスレッド数を設定してください。超過する数を指定すると、超過したスレッドは、サポートされる数のスレッドが終了するのを待機します。

次の図は、適用ステップに関連する移行オブジェクト・ライフサイクルの一部です。

移行オブジェクト適用ライフサイクル

適用モニター・プロセスが完了すると、通常、オブジェクトは「適用済」状態または「適用中エラー」状態になります。レコードが「適用中エラー」状態になる理由は2つあります。

  • 前述のカテゴリ5であり、レコードに別のレコードとの循環参照があります。このシナリオの場合、次に説明する「トランザクションの適用」ステップによって、レコードは正常に適用されます。

  • 現在の移行のレコードに関係のない他のエラーがあります。この場合は、手動での介入が必要になる場合があります。詳細は、次の「エラーの解決」の項を参照してください。

図に示したように、「オブジェクトの適用」アルゴリズムによって、オブジェクトを適用できなかった理由が検出される場合もあります。これは、ターゲット環境内のオブジェクトが比較ステップ以降に更新されたため、その時点で取得されたSQLが適用できなくなっている場合に発生することがあります。これが発生した場合、現在の移行が完全に適用された後で、元のファイルを再度インポートし、新しい比較を生成して適用できます。

トランザクションの適用

理論上、「オブジェクトの適用」ステップの後、すべてのオブジェクトは「適用済」か、または循環参照の状況により「適用中エラー」になります。一般的な次のステップは、役割をトランザクションに引き渡すことです。移行トランザクションでは、そのオブジェクトを一括で適用しようとすることができます。

複数のバックグラウンド・プロセスで移行オブジェクトを選択して適用ステップを実行しないように、データ・セットが「トランザクションの適用」状態の場合、自分のオブジェクトを適用する際にのみトランザクションが適格となります。

移行データ・セット適用ライフサイクル

「オブジェクトの適用」状態のモニター・アルゴリズム(データ・セットのモニター・バッチ・プロセスで実行)では、すべての移行オブジェクトが「承認済」ではなくなったこと、または「適用中エラー」のレコードの件数が構成済の制限を超えていないことがチェックされます。これに該当する場合、レコードは自動的に「トランザクションの適用」状態に遷移します。

「適用中エラー」のオブジェクトの数が構成済の制限を超えた場合、レコードはモニター・アルゴリズムによって自動的には遷移されません。この場合、ユーザーは、大量のエラーを解決するか、または手動で「トランザクションの適用」に遷移するか(大量のエラーにかかわらず)を判断する必要があります。次の「エラーの解決」の項では、エラーがある場合にユーザーが実行できる代替手順を説明します。

データ・セットが「トランザクションの適用」の状態になると、「移行トランザクション・モニター - 適用」プロセス(F1-MGTAP)が実行されます。トランザクションのオブジェクトの適用が試行されます。エラーの移行オブジェクトがない場合、移行トランザクションは単に「適用済」に移行します。移行オブジェクトのいずれかが「適用中エラー」である場合、バックグラウンド・プロセスおよび適用アルゴリズムには、移行されるオブジェクトの依存関係への対処を試みる特別な機能があります。

  • 適用アルゴリズムによって、エラーの移行オブジェクトがすべて選択され、それらのSQLがすべて実行されて、すべてのレコードが検証されます。トランザクション内に循環参照を持つオブジェクトがある場合、それらはこの時点では検証に合格します。

  • トランザクション間にまだ依存関係がある場合があるため、「オブジェクトの適用」ステップで説明した処理と同様のエラー処理がここで行われます。トランザクション内のオブジェクトのいずれかについて、「トランザクションの適用」のオブジェクト・アルゴリズムでエラーが受信された場合は、アルゴリズムによって移行トランザクション・レコードの反復回数が増分されます。反復回数が最大数(アルゴリズムで指定)を超えていない場合、トランザクションは「適用準備完了」状態のままであり、処理対象として再度選択することに適格です。反復回数が最大を超えている場合、レコードは「適用中エラー」状態に遷移します。トランザクション内のオブジェクトのいずれかがエラーである場合は、すべてのオブジェクトが適用されないことに注意してください。すべてエラーのままです。

  • 「移行トランザクション・モニター - 適用」プロセスは、処理に適格なレコードがなくなるまで「適用準備完了」状態のレコードを継続して再選択する特別なプロセスです。

注意: この適用バッチ・ジョブを発行するとき、スレッド・プール・ワーカーでサポートされるスレッド数以下のスレッド数を設定してください。超過する数を指定すると、超過したスレッドは、サポートされる数のスレッドが終了するのを待機し、反復処理の利点が損なわれます。

次の図は、適用ステップに関連する移行トランザクション・ライフサイクルの一部であり、前述した点を示しています。

移行トランザクション適用ライフサイクル

トランザクション・レベルの適用プロセスの最後で、エラーのトランザクションがある(したがって、エラーのオブジェクトもまだある)場合、ユーザーはエラーを確認して修正方法を決定する必要があります。詳細は、次の「エラーの解決」の項を参照してください。

エラーの解決

前の項で説明したように、「オブジェクトの適用」プロセスの実行後にエラーを受信する場合があります。エラーのレコード数が制限を下回る場合(データ・セットのモニター・バッチ・ジョブが発行されてモニター・アルゴリズムが実行される)、データ・セットは自動的に「トランザクションの適用」に遷移します。モニター・バッチ・ジョブが実行されない場合、またはエラーのオブジェクトの数が制限を超える場合、ユーザーは、「移行データ・セット・インポート」ポータルのエラーのオブジェクト・ゾーンにエラーを表示した後、意思決定をする必要があります。

  • エラーが依存関連と思われる場合、前述のように、ユーザーはトランザクションによってオブジェクトが適用されるように決定し、データ・セットを「トランザクションの適用」に遷移できます。

  • エラーが手動で解決できる外部の問題に関連していると思われる場合、ユーザーはエラー修正して「オブジェクトの適用」ステップを再実行することを選択できます。

  • ユーザーは、1つ以上のオブジェクトを拒否して、それらを移行から削除することを決定することもできます。

「トランザクションの適用」ステップの後、まだエラーがある場合、ユーザーはレコードを確認して続行方法を決定する必要があります。エラーは、「移行データ・セット・インポート」ポータルのエラーのトランザクション・ゾーンに表示されます。

  • ユーザーは、1つ以上のオブジェクトを拒否して、それらを移行から削除することを決定できます。

  • ユーザーは、移行の外部の問題を手動で解決し、次のいずれかを行うことができます。

    • 「オブジェクトの適用」ステップを再実行します。これは、まだエラーのオブジェクトが多数あり、想定される依存関係が多くない場合にお薦めします。「オブジェクトの適用」をマルチスレッドで実行できることにより、プロセスが効率的に実行されます。

    • 「トランザクションの適用」ステップを再実行します。

オブジェクトおよびトランザクションは「適用中エラー」の状態であるため、エラーを手動で修正した後で適用ステップを再試行するには、システムがレコードを該当の適用プロセスで選択可能な状態に戻す必要があります。移行オブジェクトの場合は、レコードを「承認済」に戻す必要があります。移行トランザクションの場合は、レコードを「適用準備完了」に戻す必要があります。次に、移行オブジェクトの再試行ロジックを説明します。

  • ユーザーが「オブジェクトの再試行」を決定した場合(「移行データ・セット・インポート」ページで処理ボタンを使用)、データ・セットは「オブジェクトの再試行」状態に遷移します。この時点で、移行オブジェクト・モニターが実行される必要があります。

  • オブジェクトの「適用中エラー」状態のモニターによって、データ・セットが「オブジェクトの再試行」の状態であることが検出され、それにより「承認済」に戻る遷移がトリガーされます。

  • 次のステップでは、データ・セットを「オブジェクトの再試行」から「オブジェクトの適用」に遷移します。これを行うには、手動で実行するか、または「移行データ・セット・インポート」モニター・プロセスを実行します。

  • これで、オブジェクトは、オブジェクト・レベルの適用プロセスによる選択対象として適格になります。

移行トランザクションに関する類似のロジックがあります。

  • ユーザーが「トランザクションの再試行」を決定した場合(「移行データ・セット・インポート」ページで処理ボタンを使用)、データ・セットは「トランザクションの再試行」状態に遷移します。この時点で、移行トランザクション・モニターが実行される必要があります。

  • トランザクションの「適用中エラー」状態のモニターによって、データ・セットが「トランザクションの再試行」の状態であることが検出され、それにより「適用準備完了」に戻る遷移がトリガーされます。

  • 次のステップでは、データ・セットを「トランザクションの再試行」から「トランザクションの適用」に遷移します。これを行うには、手動で実行するか、または「移行データ・セット・インポート」モニター・プロセスを実行します。

  • これで、トランザクションは、トランザクション・レベルの適用プロセスによる選択対象として適格になります。

エラーがあるかどうかに応じて、「オブジェクトの適用」と「トランザクションの適用」の間で遷移するときに再試行ロジックも発生する場合があります。次のシナリオでこの点を説明します。

  • 「オブジェクトの適用」ステップ後に、「適用中エラー」のオブジェクトがあります。データ・セットは「トランザクションの適用」に遷移し、適用ステップはトランザクション・レベルで完了します。

  • 「トランザクションの適用」ステップ後に、「適用中エラー」のトランザクションがあります。

  • ユーザーは、オブジェクトを再度適用しようとします(「オブジェクトの再試行」をクリックして)。この時点では、オブジェクトを再試行する前述のステップに従います。

  • オブジェクトを適用した後、ユーザーはオプションを再試行できます(エラーを修正した後(該当する場合))。

  • ある時点で、ユーザーは再度「トランザクションの適用」に遷移します。「適用中エラー」のトランザクションがある場合、データ・セットは自動的に「トランザクションの再試行」に遷移され、トランザクションを再試行する前述のステップに従います。

適用ステップの最終処理

移行トランザクションのすべての移行オブジェクトが最終状態(「適用済」「拒否済」または「適用不可」)になると、移行トランザクションは「適用済」状態に遷移します。すべての移行トランザクションが「適用済」状態になると、移行データ・セット・レコードは「完了」に移行し、インポートは完了します。

注意: 各レコードのライフサイクル全体を確認するには、基本ビジネス・オブジェクト「移行データ・セット・インポート」(F1-MigrObjectImport)、「移行トランザクション」(F1-MigrTransactionImport)および「移行オブジェクト」(F1-MigrObjectImport)のアプリケーション・メタデータで「ビジネス・オブジェクト要約」タブを参照してください。