この TechNote は、ACC で説明します。

  1. 「シーケンスの自動生成」がどのように機能するか
  2. 新しい API GenCreateOrUpdateSchemaSequenceDDL がどのように機能するか
  3. 一部の OOB スキーマのシーケンス使用の変更

背景

実際、ACC では、ルート要素で autopk="true" を設定すると、スキーマ ID 値が自動的に生成される場合があります。

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

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

合計するには:

screen_shot_2018-04-18at111737

この機能の主な目的は、特にカスタムスキーマや OOB スキーマ(XtkWorkflowLog など)に対して、可能な限り XtkNewId シーケンスを使用しないようにすることです。代わりに、それらに対して専用のシーケンスを生成します。

説明

カスタム autopk シーケンス * のシーケンスの自動生成

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

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

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

  3. XtkSequence_AutoGeneration の値よりも後にカスタム autopk スキーマを作成すると、スキーマの生成中に専用のシーケンスが自動生成されます。このシーケンスは、一般的に **、auto_<名前空間><スキーマ名>_seq のような名前を持ちます。

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

  5. サポートされているデータベース:PostgreSQL、Oracle、MS SQL

  6. この機能は、FDA スキーマ用ではありません。

  7. 拡張スキーマは、引き続き親スキーマのシーケンスを使用します。

注意:

* カスタム autopk スキーマ:autopk="true" で、指定された pkSequence を持たない OOB 名前空間(例:nl、nms、xtk、crm、または ncm)を持たないスキーマ

** 自動生成シーケンス名が 30 文字を超える場合、CRC32 を使用して <名前空間><スキーマ名> 部分をモデレートします。

新しい「GenCreateOrUpdateSchemaSequenceDDL」API

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

GenCreateOrUpdateSchemaSequenceDDL(schemaID, newSequenceName, oldSequenceName)
 
  schemaID (mandatory): "<nameSpace>:<schemaName>"
  newSequenceName (mandatory): new sequence name
  oldSequenceName (optional): old sequence name

一般に、autopk スキーマのシーケンスを作成するためにこの API を呼び出します。この場合、「oldSequenceName」は空です。例えば、カスタム autopk スキーマを作成する場合、この API をスキーマ ID と自動生成されたシーケンス名で内部的に呼び出し、データベースにシーケンスを作成するためにデータベース構造を更新します。

この新しい API は、「oldSequenceName」を提供することで、autopk スキーマのシーケンスを更新することにも使用できます。例えば、シーケンスとして「XtkNewId」を使用するカスタム autopk スキーマ「cus:mySchema」があります。新しいシーケンス「mySequence」を使用したいと思います。これは、javascript で次のように呼び出し、データベースで出力 DDL ステートメントを実行することでおこなうことができます。

GenCreateOrUpdateSchemaSequenceDDL("cus:mySchema", "mySequence", "XtkNewId")

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

XtkWorkflowLog スキーマー(XtkNewId 1 から)専用シーケンスに切り替える

XtkWorkflowLog は、XtkNewID シーケンスを過度に使いすぎる可能性があります。ACC 18.4 のリリースから、スキーマ XtkWorkflowLog は、XtkNewId の代わりに、新しい専用のシーケンス XtkWorkflowLogId を使用します。 切り替えは、既存のインスタンスの ACC 18.4 へのビルド、アップグレード時に自動的におこなわれます。新しい 18.4 インスタンスの場合、XtkWorkflowLogId シーケンスがデフォルトで使用されます。

注意:

ID を過剰に使用する可能性のある他のスキーマは、次のリリースでは専用シーケンスに切り替えられます。

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

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