Campaign Classic 18.4 以降、ID の生成メカニズムが拡張され、大量のオブジェクトを含む Campaign インスタンスの寿命が延びました。

この記事では以下について説明します。

  1. シーケンスの自動生成 機能
  2. 新しい API GenCreateOrUpdateSchemaSequenceDDL
  3. ビルトインスキーマに利用するシーケンスの変更

概要

Campaign Classic では、ルート要素に autopk = "true"を設定することでスキーマ ID 値を自動的に生成できます。

この属性がない場合(または値がfalseに設定されている場合)、ID 値はJavascript またはワークフローを使用して手動で入力されます。

autopk = "true" の場合、ID は属性 pkSequence で渡されたシーケンス名を使用します。pkSequence がない場合、Campaign Classic はデフォルトでビルトイン XtkNewId シーケンスを使用します。

属性 ID 生成モード pkSequence が利用可能 pkSequenceが見つからない
autopk="true" 自動 指定したシーケンスを使用 XtkNewIdシーケンスの使用
autopk="false" または属性なし 手動 該当なし 該当なし

この機能の主な目的は、特にカスタムスキーマやいくつかのビルトインスキーマ(XtkWorkflowLogなど)に対して XtkNewId シーケンスをできるだけ使用しないようにすることです。代わりに、専用のシーケンスを生成します。

シーケンスの自動生成

カスタム autopk スキーマは、pkSequence ではなくautopk = "true" で指定された 組み込み名前空間(つまり、nl、nms、xtk、crm、または ncm)を持たないスキーマです。

制限事項:

  • サポートされているデータベースエンジン:PostgreSQL、Oracle、およびMSSQL。
  • 拡張スキーマは、引き続きその親スキーマのシーケンスを使用します(FDA)。
  • 拡張スキーマは、引き続き親スキーマのシーケンスを使用します。

この機能には、次の機能が含まれています。

  1. アップグレード後、日付/時刻オプション(アップグレード後の日付/時刻) XtkSequence_AutoGeneration を作成します。

  2. XtkSequence_AutoGeneration(スキーマの作成日を確認する) の値より前にカスタム autopk スキーマが作成された場合、デフォルトでは Campaign は変更を加えません。

  3. XtkSequence_AutoGeneration の値よりも前にカスタム autopk スキーマが 後に作成された場合、スキーマの生成中に専用シーケンスが自動生成されます。

    このシーケンスは auto_ <nameSpace> <schemaName> _seq という名前になります。

    注意:

    自動生成されたシーケンス名が 30 文字を超える場合は、CRC32 を使用して <nameSpace><schemaName> の部分をモデレートします。

  4. XtkSequence_AutoGeneration オプションを将来の日付(例えば、2999/01/01)に設定することで、この機能が無効にできます。

新しい API

この機能は、新しい API GenCreateOrUpdateSchemaSequenceDDL を導入することで実装されます。この API は、autopk スキーマのシーケンスを作成または更新するために使用する SQL スクリプトを生成します。

GenCreateOrUpdateSchemaSequenceDDL(schemaID, newSequenceName, oldSequenceName)
 
  schemaID (mandatory): "<nameSpace>:<schemaName>"
  newSequenceName (mandatory): new sequence name
  oldSequenceName (optional): old sequence name
  • 一般的に、この API は autopk スキーマシーケンスを作成するために使用されます。この場合、oldSequenceName は空です。たとえば、カスタム autopk スキーマを作成するときは、schemaID と自動生成されたシーケンス名を使用してこの API を内部的に呼び出し、データベース構造を更新して、データベースにシーケンスを作成します。
  • この新しい API は、 oldSequenceName を指定することによって、autopk スキーマシーケンスを更新するためにも使用できます。たとえば、XtkNewId をシーケンスとして使用するカスタム autopk スキーマ cus:mySchema を考える場合、新しいシーケンス mySequence を使用します。これは、Javascript で次のように呼び出して、データベース内の出力 DDL ステートメントを実行することによって実行できます。
GenCreateOrUpdateSchemaSequenceDDL("cus:mySchema", "mySequence", "XtkNewId")

この場合、新しいシーケンスはスキーマの最大 ID から開始されます。

専用シーケンスへの切り替え

XtkWorkflowLog スキーマは XtkNewID シーケンスを使いすぎている可能性があります。Campaign Classic 18.4 以降、スキーマ XtkWorkflowLog は、XtkNewIdの代わりに新しい専用シーケンス XtkWorkflowLogId を使用します。

既存のインスタンスの Campaign Classic 18.4 へのアップグレード時に、切り替えは自動的に行われます。新しい 18.4 インスタンスでは、XtkWorkflowLogId シーケンスがデフォルトで使用されます。

注意:

ID を過剰に消費する可能性がある他のスキーマは、今後の Campaign Classic リリースで専用のシーケンスに切り替えられます。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー