Le client possède plusieurs requêtes incrémentielles qui ne fonctionnent pas comme prévu. Au lieu de récupérer de nouveaux enregistrements uniquement depuis leur dernière exécution, ils récupèrent tous les enregistrements à chaque fois, comme une Requête activité.
Le coupable est le Nettoyage workflow.
Le Requête incrémentale le workflow fonctionne de cette manière :
Ainsi, ce nom de table de travail de l’historique est de la notation suivante :
wkfhistoworkflowid activityName_
Désormais, pour les ID de workflow 0 (pour les clients où la variable xtknewid
autorise des séquences négatives), nous voyons qu’il s’agit en fait de :
wkfhisto(uint)workflows activityName_
Bien que cela soit correct pour l’exécution des workflows.
Par exemple, l’activité incrémentale incremental1
de workflow ID=-1 crée un tableau wkfhisto4294967295_incremental1
.
Ce qui manque c'est la Nettoyage workflow.
Ici, nous avons un code qui tente de supprimer des tables de travail des workflows supprimés.
Ici, un code dédié répertorie toutes les tables wkfhisto*, extrait le workflowId de leurs noms (à partir de la convention ci-dessus) et les supprime, à l’exception de celles dont les worklowID se trouvent dans la table xtkworkflow.
Cependant, il manque la variable uint
partie
Il tente donc de rechercher un workflow avec l’ID 4294967295 au lieu de retransmettre cette information à l’entier. Ce workflow étant introuvable, cette table est supprimée. La prochaine fois que ce workflow s’exécute, la variable Requête incrémentale activité ne trouve pas de table d’historique existante et la crée en la considérant comme la toute première exécution.
Correction:
Le correctif pour ce problème est disponible dans la version Adobe Campaign Classic 20.1.1 (version 9122 et ultérieure).
Solutions que les clients peuvent utiliser :
Solution 1 : Arrêtez le workflow de nettoyage et exécutez-le par intermittence pour nettoyer la base de données et le disque dur jusqu’à ce que le correctif soit pris et disponible. Non recommandé si vous n’avez pas prévu de mise à niveau.
Solution 2 : Supposons que la variable Requête incrémentale L’activité est affectée et contournée en procédant de la même manière que la fonction Requête incrémentale en créant un schéma persistant destiné à contenir le contenu de la table d’historique. Utilisez une combinaison de Requête et Mise à jour de données pour imiter le comportement. Cela doit être effectué pour tous les workflows nécessitant la requête incrémentale.
Solution 3 : Supposons que la variable Requête incrémentale L’activité est impactée et contournée en ajoutant un champ d’audit (tsCreated/tsLastModified) au schéma en question. Votre requête incrémentale sera alors convertie en activité de requête normale avec une clause où comme tscreated GetDate()
.
Solution 4 :
pkSequence
xtknewId
pour la création du workflow (afin d'éviter les surprises indésirables).