システムは、データベース同期の一部として SysSetup インターフェイスを実装する X++ クラスを処理します。
SysSetupを実装するカスタム X++ クラスも、データベース同期の一部として実行されます。
属性は、メタデータまたは宣言型情報をアセンブリ、型、メソッド、プロパティなどのコードに関連付ける方法を提供します。 属性をプログラム エンティティに関連付けた後は、リフレクションを使用して実行時にクエリを実行できます。
この記事では、SysSetupConfigAttribute のプラットフォーム更新で、SysSetup インターフェイスを実装する X++ クラス向けに、 バージョン 10.0.23 のファイナンスおよびオペレーション アプリ 用として導入された新しい属性を使用する方法について説明します。
用途
SysSetupConfigAttribute インターフェイスを実装するすべての X++ クラスにSysSetup属性を追加します。 受け取るパラメーターは次の 2 種類です:
ContinueOnError – このパラメーターは
bool型です。 同期中に X++ クラスの実行が失敗した場合、データベースの同期は失敗するか、このパラメーターの値 (trueまたはfalse) に応じて次の手順に進みます。- true – データベース同期は次の手順で続行されます。
- false – データベースの同期操作全体が失敗し、基になる問題が修正されるまで再開できません。
Timeout – このパラメーターは
int型であり、値の範囲は 1 ~ 600 秒です。 データベース同期操作でSysSetupクラスを実行する時間範囲を定義します。
次のコード例では、ContinueOnError パラメーターを true に設定し、この Timeout パラメーターを 300 に設定します。
[SysSetupConfigAttribute(true, 300)]
class DemoClass implements SysSetup
{
// Class code here.
}
メモ
X++ クラスに SysSetupConfigAttribute 属性がない場合は、既定値が適用されます。
ContinueOnError は true で、Timeout は 120 秒です。
SysSetupScript: 非同期の実装
SysSetup スクリプトを非同期モードで実行するには、スクリプトをバッチ ジョブとして実行します。 この方法では、スクリプトが互いに並列かつ独立して実行されるようにすることで、パフォーマンスが向上し、不要な依存関係が削除されます。 この方法を実現するには、拡張して使用できる SysSetupWrapper クラスと SysSetupAsync クラスを使用します。 この方法では、必要に応じて DbSync を実行できます。
非同期モードを有効にする場合の考慮事項
非同期モードを有効にする場合は、次の点を考慮してください。
- このモードではタイムアウトは使用されません。 代わりに、優先度の高いジョブとしてスコープ指定されたバッチ ジョブの境界内で動作します。
- クラスが非同期モードを実装する場合、システムはすべての
SyssetupTable属性を考慮しません。 現在、すべてのスクリプトが個別に機能しています。 - 新しいスクリプトを非同期として記述する場合は、一時停止または障害の時点から復旧できる小規模なワークロードを使用します。これらのバッチ ジョブは将来保留および再開される可能性があるためです。
-
loaddata()メソッドは、ttsbegin; ...ttscommit;ブロック内では実行されないため、実装でこの動作を処理する必要があります。
class DemoClass extends SysSetupAsync implements SysSetup
{
// Class code here.
}
SysSetup クラスのバージョン管理
SysSetup クラスは、すべての DBSync 実行ではなく、1 回だけ実行するようにバージョンを設定できます。 たとえば、DBSync では、バージョンが変更されるたびに X++ クラスが実行されます。
バージョン 10.0.27 では、バージョン管理機能は SysSetup クラスで使用できます。
SysSetup クラスのバージョン管理はどのように行われますか?
システムは、_version 型の新しい パラメーターを SysSetupConfigAttribute 属性に追加します。
1.0、2.1、4.5、および 10.4 のような [メジャー].[マイナー], 形式の値を受け入れます。
DBSync は、 _version パラメーターの値を読み取り、バージョンに変更が加わるたびにスクリプトを実行します。 このパラメーターはオプションです。 既定値は 1.0 です。 したがって、SysSetup にオンボードする X++ クラスに _version パラメーターがない場合、X++ クラスの実行時の既定のバージョン値は 1.0 になります。
メモ
バージョン番号を更新しない限り、バージョン管理されたクラス (既定) は 1 回だけ正常に実行されます。 たとえば、バージョン値が 1.0 のスクリプトは、すべての DBSync 要求で再実行されるわけではありません。
バージョン値 0.0 は、各 DBSync の実行での X++ クラス の実行専用です。 そのため、すべての DBSync 操作で X++ クラスを実行するには、_version属性の SysSetupConfigAttribute パラメーターを 0.0 に設定します。
X++ クラスを SysSetup にオンボードする
SysSetup クラスでは、_version属性で SysSetupConfigAttribute パラメーターを使用する必要があります。 それ以外の場合は、X++ クラスの実行時に既定の動作が適用されます。 つまり、バージョン値は 1.0、クラスはバージョンごとに 1 回だけ実行されます。