Cette note décrit dans ACC :

  1. Comment fonctionne la fonctionnalité "auto-génération de séquence" ?
  2. Comment fonctionne la nouvelle API GenCreateOrUpdateSchemaSequenceDDL
  3. Le changement de séquence utilisé pour certains schémas hors bande

Arrière-plan

En fait, dans l’ACC, les valeurs d’ID de schéma peuvent être automatiquement générées en définissant autopk="true" dans l’élément racine.

Sans cet attribut (ou sa valeur définie sur false), les valeurs de l’ID seront alimentées manuellement en utilisant JavaScript ou flux de travail.

En cas d’autopk="true", l’ID utilisera le nom de séquence passé dans l’attribut pkSequence. En cas d’absence de pkSequence, par défaut, l’ACC utilise la séquence OOB XtkNewId.

Pour résumer :

screen_shot_2018-04-18at111737

L’objectif principal de cette fonctionnalité est d’éviter, dans la mesure du possible, d’utiliser la séquence XtkNewId, en particulier pour les schémas personnalisés et pour certains schémas hors bande (XtkWorkflowLog, etc.). Au lieu de cela, nous allons générer des séquences dédiées pour eux.

Description

Génération automatique de séquences pour une séquence d’autopk personnalisée*

Cette fonction contient les fonctionnalités suivantes :

  1. Pendant PostUpgrade, créez une option XtkSequence_AutoGeneration de type date / heure (date / heure de PostUpgrade)

  2. Si un schéma autopk personnalisé est créé AVANT la valeur de XtkSequence_AutoGeneration (en vérifiant la structure créée par le schéma), par défaut, nous n’apportons aucune modification.

  3. Si un schéma autopk personnalisé est créé APRÈS la valeur de XtkSequence_AutoGeneration, une séquence dédiée sera automatiquement générée lors de la génération du schéma. Cette séquence aura, en général**, un nom comme auto_<espace domaine><nom du schéma>_seq

  4. Il est possible de désactiver cette fonctionnalité en définissant l’option XtkSequence_AutoGeneration sur une date ultérieure (par exemple, 01/01/2999)

  5. Bases de données supportées : PostgreSQL, Oracle et MSSQL

  6. Cette fonction n’est pas pour les schémas FDA

  7. Les schémas étendus continueront à utiliser les séquences de leurs schémas parents.

Remarque :

*schéma d’autopk personnalisé : schéma n’ayant pas d’espace de nom OOB (c’est-à-dire nl, nms, xtk, crm ou ncm), avec autopk="true" et sans pkSequence spécifié

**Si le nom de séquence généré automatiquement comporte plus de 30 caractères, nous modérerons la partie <espace domaine><nom du schéma> à l’aide de CRC32

Nouvelle API "GenCreateOrUpdateSchemaSequenceDDL"

Cette fonctionnalité est implémentée grâce à l’introduction d’une nouvelle API, qui génère le script SQL utilisé pour créer ou mettre à jour la séquence de schéma autopk :

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

Généralement, nous appelons cette API pour créer une séquence de schéma autopk, auquel cas "oldSequenceName" est vide. Par exemple, lors de la création d’un schéma autopk personnalisé, nous appelons en interne cette API avec son schéma et le nom de séquence généré automatiquement, puis mettons à jour la structure de la base de données pour créer la séquence dans la base de données.

Cette nouvelle API peut également être utilisée pour mettre à jour une séquence de schéma autopk, en fournissant "oldSequenceName". Par exemple : il y avait un schéma autopk personnalisé "cus:mySchema" utilisant la séquence "XtkNewId". Et maintenant, nous aimerions utiliser une nouvelle séquence "mySequence". Cela peut être fait en appelant le suivi en javascript et en exécutant les instructions DDL en sortie dans la base de données. 

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

Dans ce cas, la nouvelle séquence commencera à partir du plus grand identifiant du schéma.

Schéma XtkWorkflowLog - Basculer vers une séquence dédiée (à partir de XtkNewId one).

Le schéma XtkWorkflowLog pourrait utiliser la séquence XtkNewID. A partir de la version ACC 18.4, le schéma XtkWorkflowLog utilisera une nouvelle séquence dédiée XtkWorkflowLogId au lieu de XtkNewId. Le commutateur se fera automatiquement lors de la mise à niveau de la version vers ACC18.4 pour les instances déjà existantes. Pour les nouvelles instances 18.4, la séquence XtkWorkflowLogId sera utilisée par défaut.

Remarque :

Certains autres schémas qui pourraient consommer plus d’ID seront basculés vers une séquence dédiée dans les prochaines versions.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne