Distribution et validation des événements pré et post-action
Distribution et validation des événements pré et post-action
A chaque fois qu'une action de création, de mise à jour ou de suppression est lancée, l'objet de validateur pré-action (PTC.SCA.SCO.PreActionValidator) est appelé avant que la mise à jour de la base de données ne se produise. Si la validation réussit, la base de données est mise à jour et l'action se termine. Après une mise à jour réussie de la base de données, l'objet de gestionnaire post-action (PTC.SCA.SCO.PostActionHandler) est appelé dans un autre fil ; il n'affecte pas l'exécution de l'action. Le diagramme suivant illustre la séquence expéditeur du validateur pré-action et du gestionnaire post-action lorsque la validation pré-action réussit.
Si la validation échoue, l'action n'est pas réalisée et la base de données n'est pas mise à jour. Le diagramme suivant illustre la séquence expéditeur lorsque la validation pré-action échoue.
L'objet de validateur pré-action (PTC.SCA.SCO.PreActionValidator) hérite du modèle d'objet de validateur pré-action (PTC.SCA.SCO.PreActionValidatorThingTemplate). De même, l'objet de gestionnaire post-action (PTC.SCA.SCO.PostActionHandler) hérite du modèle d'objet de gestionnaire post-action (PTC.SCA.SCO.PostActionHandlerThingTemplate). Ces modèles d'objet implémentent les formes d'objet nécessaires pour déclencher la distribution des événements pré et post-action.
Lorsqu'une action de création, de mise à jour ou de suppression est lancée, le service pré-action approprié sur le validateur pré-action est déclenché (PreCreateAction, PreUpdateAction ou PreDeleteAction). Le service pré-action exécute à son tour le service CallServices, qui passe en revue les modifications de données et lit la configuration sur le validateur pré-action. S'il existe un service configuré pour cette action et cette forme de données, CallServices distribue les services de validation appropriés. Si une partie de la validation échoue, la totalité de l'action ne peut pas se terminer.
Lorsqu'une action de création, de mise à jour ou de suppression est terminée, le gestionnaire post action est déclenché (PostCreateAction, PostUpdateAction ou PostDeleteAction). Le service post-action exécute ensuite le service CallServices, qui lit la configuration sur le gestionnaire post-action par défaut. Si un service est configuré pour cette action et cette forme de données, ce service post-action est distribué.
Les services sont fournis sur le validateur pré-action et sur le gestionnaire post-action qui sont exécutés chaque fois qu'une définition de travail, une équipe ou un site est créé(e) ou mis(e) à jour. Ces implémentations peuvent servir de modèles pour l'implémentation de vos propres services pré et post-action.
Par exemple, les services pré-action et post-action de définition de travail fonctionnent comme suit :
Sur l'objet de validateur pré-action : WorkDefinitionPreCreate, WorkDefinitionPreUpdate, ValidateWorkDefinitionExecutionStatus et EnumerationValidation
Lorsqu'une définition de travail est créée ou mise à jour et qu'un état d'exécution est spécifié, ce dernier est validé avant d'autoriser la poursuite de l'action. Le service WorkDefinitionPreCreate ou WorkDefinitionPreUpdate est appelé en fonction de l'action en cours d'exécution. Cette action appelle à son tour le service ValidateWorkDefinitionExecutionStatus, qui appelle le service EnumerationValidation. Si plusieurs définitions de travail sont créées ou mises à jour dans une seule action, et que l'une d'elles comporte un état d'exécution spécifié comme non valide, la totalité de l'action n'est pas réalisée. Vous pouvez afficher les détails des services de validation et de toutes les erreurs dans Surveillance > ScriptLog, après que Niveau de journal a été défini sur Débogage. Reportez-vous au service EnumerationValidation pour un exemple de la manière de renvoyer une exception en cas d'échec de validation.
Sur l'objet de gestionnaire post-action par défaut : WorkDefinitionPostCreate, WorkDefinitionPostUpdate, LogWorkDefinitionExecutionStatusChange
Une fois qu'une définition de travail est créée ou mise à jour, le service WorkDefinitionPostCreate ou WorkDefinitionPostUpdate est appelé en fonction de l'action en cours d'exécution. Cette action appelle à son tour le service LogWorkDefinitionExecutionStatusChange qui consigne les détails suivants concernant l'action : l'agent responsable de l'action, l'UID de la définition de travail créée ou mise à jour, ainsi que l'UID de l'état d'exécution et la valeur. Ces détails peuvent être affichés dans Surveillance > ScriptLog, après que Niveau de journal a été défini sur Débogage.
Ajout de services pré-action et post-action
L'objet PTC.SCA.SCO.PreActionValidator et l'objet PTC.SCA.SCO.PostActionHandler ne sont pas modifiables. Pour ajouter de nouveaux services pré-action ou post-action, dupliquez l'objet approprié, ajoutez les nouveaux services sur l'objet dupliqué et mettez à jour la configuration de l'objet de base de données pour que votre système référence à l'objet dupliqué.
Pour ajouter d'autres services pré et post-action :
1. Pour ajouter des services pré-action supplémentaires, dupliquez l'objet PTC.SCA.SCO.PreActionValidator. Pour ajouter des services de gestionnaire post-action supplémentaires, dupliquez l'objet PTC.SCA.SCO.PostActionHandler. Dans cette procédure, ces objets dupliqués seront désignés PTC.SCA.SCO.PreActionValidator_Duplicate et PTC.SCA.SCO.PostActionHandler_Duplicate, respectivement.
2. Créez vos services pré-action sur l'objet PTC.SCA.SCO.PreActionValidator_Duplicate. Créez vos services post-action sur l'objet PTC.SCA.SCO.PostActionHandler_Duplicate.
3. Ajoutez une nouvelle entrée à la table de configuration ActionConfigurationSettings sur la page Configuration de l'objet PTC.SCA.SCO.PreActionValidator_Duplicate ou de l'objet PTC.SCA.SCO.PostActionHandler_Duplicate l'action, selon le cas :
DataShapeName : recherchez et sélectionnez le nom de la forme de données pour laquelle ce service pré ou post-action s'applique.
Action : entrez l'action : Create, Update, ou Delete. La valeur est sensible à la casse et doit être entrée exactement comme indiqué ici.
ThingName : recherchez et sélectionnez le nom de l'objet sur lequel se trouve votre service, par exemple PTC.SCA.SCO.PreActionValidator_Duplicate ou PTC.SCA.SCO.PostActionHandler_Duplicate.
ServiceName : entrez le nom du service devant être distribué par CallServices. Si votre implémentation comporte plusieurs services, entrez le service initial qui appelle les autres. La valeur est sensible à la casse et doit correspondre exactement au nom du service.
* 
Même si votre implémentation peut inclure une série de services, le service qui est spécifié dans la table de configuration ActionConfigurationSettings et distribué par CallServices doit inclure un paramètre d'entrée nommé DataChanges, qui est une table d'informations de la forme de données PTC.SCA.SCO.DataChange.
4. Cliquez sur Ajouter, puis cliquez sur Enregistrer pour enregistrer vos modifications de configuration.
5. Accédez à l'objet de base de données configuré pour votre système, tel que PTC.SCA.SCO.PostgresDatabase ou PTC.SCA.SCO.MSSQLDatabase.
* 
L'objet de base de données configuré pour votre système est disponible sur la page Configuration de l'objet de configuration du point de lancement (PTC.Factory.C_LaunchPointConfigurationThing_[ReleaseVersion]).
6. Sur la page Configuration de l'objet de base de données, sous DatabaseValidationConfigurationTable, mettez à jour les champs PreActionValidator et PostActionHandler pour les faire pointer vers les objets dupliqués créés à l'étape 1.
7. Cliquez sur Enregistrer pour enregistrer les modifications de configuration de l'objet de base de données.