Blocs de construction communs > Bloc de construction de connexion de base de données > Distribution et validation des événements pré, en et post-action
Distribution et validation des événements pré, en et post-action
Chaque fois qu'une action de création, de mise à jour ou de suppression est lancée, l'objet de validateur pré-action (PTC.DBConnection.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'objet de processeur en action (PTC.DBConnection.OnActionProcessor) est appelé. Après une mise à jour réussie de la base de données, l'objet de gestionnaire post-action (PTC.DBConnection.PostActionHandler) est appelé dans un autre thread, sans affecter l'exécution de l'action.
Le diagramme suivant illustre la conception avancée du validateur pré-action, du processeur en action et du gestionnaire post-action :
Diagramme de la conception avancée du validateur pré-action et du gestionnaire post-action.
Le diagramme suivant illustre la séquence expéditeur du validateur pré-action, du processeur en action et du gestionnaire post-action lorsque la validation pré-action réussit.
Diagramme illustrant 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 ne se termine pas 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.
Diagramme illustrant la séquence expéditeur lorsque la validation pré-action échoue.
L'objet de validateur pré-action (PTC.DBConnection.PreActionValidator) hérite du modèle d'objet de validateur pré-action (PTC.DBConnection.PreActionValidator_TT). L'objet de processeur en action (PTC.DBConnection.OnActionProcessor) hérite du modèle d'objet de processeur en action (PTC.DBConnection.OnActionProcessor_TT). De même, l'objet de gestionnaire post-action (PTC.DBConnection.PostActionHandler) hérite du modèle d'objet de gestionnaire post-action (PTC.DBConnection.PostActionHandler_TT). Ces modèles d'objet implémentent les formes d'objet nécessaires pour déclencher la distribution des événements pré, en 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 quelconque de la validation échoue, l'action entière ne réussit pas.
Si la validation pré-action aboutit, la base de données est mise à jour et les services en action sont déclenchés (OnCreateAction, OnDeleteAction, OnUpdateAction). Le service en action exécute ensuite le service CallServices, qui lit la configuration sur le processeur en action. Si un service est configuré pour cette forme de données et cette action, ce service en action est distribué.
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.
Exemple de services pré-action
Cette section décrit le fonctionnement des services pré-action, en prenant pour exemple les actions de l'ordre de travail.
Les services suivants se trouvent sur l'objet PTC.JobOrderImpl.Manager : JobOrderPreCreate, JobOrderPreUpdate, ValidateDispatchStatus et ValidateJobOrderSite.
Lorsqu'un ordre de travail est créé ou mis à 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 JobOrderPreCreate ou JobOrderPreUpdate est appelé en fonction de l'action en cours d'exécution. Cette action appelle ensuite les services ValidateDispatchStatus et ValidateJobOrderSite. Si plusieurs ordres de travail sont créés ou mis à jour dans une seule action, et que l'un d'eux comporte un état d'exécution spécifié comme non valide, la totalité de l'action ne réussit pas. Définissez le Niveau de journal sur Débogage pour afficher les détails des services de validation et les erreurs dans Surveillance > ScriptLog. Reportez-vous au service ValidateJobOrderSite pour voir un exemple de renvoi d'une exception en cas d'échec de validation.
Exemple de services en action
Les services suivants se trouvent sur l'objet PTC.JobOrderImpl.Manager : OnCreateJobOrder, OnUpdateJobOrder et UpdateJobOrderExecutionResponsesForJobOrders.
Une fois qu'un ordre de travail est créé ou mis à jour, le service OnCreateJobOrder ou OnUpdateJobOrder est appelé, en fonction de l'action en cours d'exécution. Cette action appelle ensuite le service UpdateJobOrderExecutionResponsesForJobOrders.
Exemple de services post-action
Les services suivants se trouvent sur l'objet PTC.SCA.SCO.DefaultProductionOrderManager : WorkDefinitionPostCreate, WorkDefinitionPostUpdate et LogWorkDefinitionExecutionStatusChange.
Une fois qu'une définition de travail est créée ou mise à jour avec succès, 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, en action et post-action
L'objet PTC.DBConnection.PreActionValidator, l'objet PTC.DBConnection.OnActionProcessor et l'objet PTC.DBConnection.PostActionHandler ne sont pas modifiables.
Pour ajouter d'autres services pré, en et post-action :
1. Pour ajouter des services pré-action supplémentaires, dupliquez l'objet PTC.DBConnection.PreActionValidator. Pour ajouter des services en action supplémentaires, dupliquez l'objet PTC.DBConnection.OnActionProcessor. Pour ajouter des services de gestionnaire post-action supplémentaires, dupliquez l'objet PTC.DBConnection.PostActionHandler. Dans cette procédure, ces objets dupliqués seront désignés PTC.DBConnection.PreActionValidator_Duplicate, PTC.DBConnection.OnActionProcessor_Duplicate et PTC.DBConnection.PostActionHandler_Duplicate, respectivement. Pour plus d'informations, consultez la rubrique Duplication d'entités de bloc de construction.
2. Créez vos services pré-action, en action et post-action sur l'objet de gestionnaire pour le bloc de construction auquel appartient la forme de données. Par exemple, créez des services pré-action, en action et post-action pour les ordres de travail sur l'objet PTC.JobOrderImpl.Manager.
3. Ajoutez une nouvelle entrée à la table de configuration ActionConfigurationSettings sur la page Configuration de l'objet PTC.DBConnection.PreActionValidator_Duplicate, PTC.DBConnection.OnActionProcessor_Duplicate ou PTC.DBConnection.PostActionHandler_Duplicate, selon le cas :
DataShapeName : recherchez et sélectionnez le nom de la forme de données pour laquelle ce service pré, en 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 d'objet de l'objet de gestionnaire sur lequel réside votre service, tel que PTC.JobOrderImpl.Manager.
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.
* 
Bien que votre implémentation puisse inclure une série de services, le service spécifié sur la table de configuration ActionConfigurationSettings et envoyé par CallServices doit inclure un paramètre d'entrée nommé DataChanges. Ce paramètre d'entrée est une table d'informations de la forme de données PTC.DBConnection.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, par exemple PTC.DBConnection.MSSQLDatabase.
* 
Vous trouverez l'objet de base de données configuré pour votre système dans la table de configuration DefaultDatabaseConfiguration sur la page Configuration de l'objet PTC.DBConnection.Manager.
6. Sur la page Configuration de l'objet de base de données, sous DatabaseValidationConfigurationTable, mettez à jour les champs PreActionValidator, PostActionHandler et OnActionProcessor 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.
Est-ce que cela a été utile ?