Contrôleur (type)
Contrôleur
Le type de données « Contrôleur » est un type de donnée permettant de contrôler le déroulement d’une transaction entre un fournisseur de service et un client du service.
La transaction est identifiée par un identifiant client et un identifiant serveur qui sont stockés dans la base de données. La transaction est démarré soit par l’affectation d’un identifiant client soit par l’appel explicite à la méthode « Execute »
Opérations de contrôle
Le contrôle de la transaction est effectuée à l’aide de cinq opérations :
Function OpValidate(const idc :string) :string ;
Cette méthode détermine si les conditions nécessaires pour déclencher une transaction sont remplies.
Idc | Identifiant de transaction client courant. |
Retour | Nouvel identifiant de transaction |
- Si la valeur de retour est égale au paramètre Idc le contrôleur ne démarre pas de transaction
- Si la valeur de retour est vide le contrôleur annule la transaction précédente mais ne démarre pas de nouvelle transaction
- Si la valeur de retour est non vide et différente de la valeur précédente le contrôleur annule la transaction précédente et démarre une nouvelle transaction.
Function OpRequest(const oldidf, newidc:string; var aMsg:string) :Integer ;
Cette méthode démarre une transaction auprès du fournisseur
oldIdf | Identifiant de transaction du fournisseur si cette demande est une reprise |
newIdc | Identifiant de transaction du client. |
aMsg | Message de réponse du fournisseur |
Retour | Code de retour du fournisseur. |
- Si Retour égal zéro la transaction est supposée correctement démarrée et le message contient l’identifiant de transaction du fournisseur.
- Si Retour est différent de zéro le démarrage de la transaction à échoue et le message contient un message d’erreur à destination de l’utilisateur.
- En cas d’erreur une exception est déclenchée.
Procedure OpCancel(const idf :string) ;
Cette méthode annule une opération précédemment démarrée.
Idf | Identifiant de transaction du fournisseur |
Function OpCanComit(const oldidf, newidf:string; var aMsg:string) :Integer ;
Cette méthode prépare la validation d’une transaction précédemment démarrée.
oldIdf | Identifiant de transaction du fournisseur si cette validation est une reprise |
newIdf | Identifiant de transaction du fournisseur |
aMsg | Message de réponse du fournisseur |
Retour | Code de retour du fournisseur. |
Le fournisseur doit préparer la validation de la transaction, oldidf correspond à l’identifiant de la transaction de reprise si elle existe, newidf à l’identifiant de la nouvelle transaction.
- Si retour égal zéro la validation de la transaction est considéré possible et le processus de validation se poursuit.
- Si retour est différent de zéro la validation de la transaction n’est pas possible et aMsg contient un message d’erreur. Le contrôleur déclenche alors une exception et la validation est interrompue. Le fournisseur doit se trouver dans l’état précédant l’appel à OpCanCommit et accepter un opCancel sur cette transaction.
Procedure OpCommit(const oldidf, newidf :string) ;
Cette méthode valide une transaction précédemment démarrée.
oldIdf | Identifiant de transaction du fournisseur si cette validation est une reprise |
newIdf | Identifiant de transaction du fournisseur |
Cette opération ne doit pas échouer, le fournisseur doit effectuer la validation lors de l’opération opCanCommit.
Convention de nom
Les opérations associées à un attribut contrôleur doivent être portées par la classe qui détient l’attribut et doivent respecter la convention de nom suivante :
OpValidate | « nom_attribut_contrôleur »_Validate |
OpRequest | « nom_attribut_contrôleur »_Request |
OpCancel | « nom_attribut_contrôleur »_Cancel |
OpCanCommit | « nom_attribut_contrôleur »_CanCommit |
OpCommit | « nom_attribut_contrôleur »_Commit |
Voir un exemple d’utilisation de contrôleur dans la classe TdetailOperationLogistique de la Gestion Commerciale.