Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion des erreurs sur application multi couches

2 réponses
Avatar
olivier.forumusenet
Bonjour,
Ce message pour vous demander vos éventuels retours d'expérience sur
ce sujet et votre avis sur ce que je voudrais implémenter.
Ma couche présentation fait appel à des services se trouvant sur ma
couche métier. Cette dernière analyse le résultat du service,
notamment dans le cas où celui ci renvoie des erreurs. Le problème,
c'est que pour chaque erreur, je voudrais mettre en évidence un ou des
champs saisis par l'utilisateur. Comment faire convenablement un lien
entre erreur de la couche métier et objet de la couche de
présentation? Est ce utopique?
Merci d'avance pour vos réponses et avis,
Olivier

2 réponses

Avatar
Valdo Tschantre
Olivier wrote:
Bonjour,
Ce message pour vous demander vos éventuels retours d'expérience sur
ce sujet et votre avis sur ce que je voudrais implémenter.
Ma couche présentation fait appel à des services se trouvant sur ma
couche métier. Cette dernière analyse le résultat du service,
notamment dans le cas où celui ci renvoie des erreurs. Le problème,
c'est que pour chaque erreur, je voudrais mettre en évidence un ou des
champs saisis par l'utilisateur. Comment faire convenablement un lien
entre erreur de la couche métier et objet de la couche de
présentation? Est ce utopique?
Merci d'avance pour vos réponses et avis,
Olivier



De façon général, il est préférable d'éviter les erreurs et autres
exceptions... n'est-il pas ;) ?


Ce faisant, je pense qu'il faut dans un premier temps se poser la
question autrement: comment faire en sorte que la couche présentation ne
provoquera pas d'erreur dans la couche application ? Dans le cas de
saisies de donnée on peut utiliser un parseur pour valider ces données
avant de faire appel à la couche application. Ce parseur pourrait faire
appel à des fonctionnalités de la couche application du type
objetApplication.isValide(uneDonnée)...

Exemple: Si je veux créer un nouvel utilisateur, je ne peut pas lui
donner un nom déjà existant. Avant donc de demander la création de ce
nouvel utilisateur à ma couche application, je lui demande si ce nouvel
utilisateur n'existe pas déjà. Si il n'existe pas, je fait appel au
service de création, si non, je retourne un message d'erreur sur la
saisie du nom.


Cependant, il est possible qu'une erreur indépendante de la demande de
la couche présentation soit malgrais tout levé dans la couche
application - pour exemple, si cette dernier avait besoin d'une
connexion réseaux inconnu de la couche présentation et que cette
connexion eu été perdu... Ce type d'erreur n'étant pas de la
responsabilité de la couche présentation, cette dernière n'est pas
habilité à en connaître les détailles - qu'en ferait-elle ? La seul
information pertinente à son niveau est de savoir que sa demande n'a pas
pu être honoré ("contacter votre administrateur" ;) ). Dans ces cas là,
la mise en place d'un log serait le bien venue.


Pour résumer:
- le client doit tout mettre en oeuvre pour éviter les erreurs... de sa
responsabilité.
- le service doit tout mettre en oeuvre pour permettre au client
d'éviter les erreurs.
- le service doit prévenir son client d'une erreur dans la mesure des
responsabilités de ce client.


Bonne chance ;)


Valdo.

Avatar
pierre
Il y a plusieurs manières de faire.
Le plus souple en terme de réutilisation semble la suivante.
Ta couche présentation est représentée par un objet (une forme sous struts).
A chaque forme TotoForm tu crés un objet de controle par exemple
TotoFormCtrl.
Cet objet fait appel champs par champs à des objets métiers de controle.
Il peut en effet y en avoir plusieurs (ctrl client, ctrl commande, ...)
dans une même forme. Tu peux ainsi ré-utiliser les controles métiers
dans plusieurs forms.
TotoFormCtrl connait à la fois la forme et les objets métiers. Il peut
gérer la levée d'exception du métier et l'associer à un champs.
La mécanique précise dépend de ta couche client (Swing, struts, ... ou
autre).
Cette technique est peu verbeuse, je dois l'admettre mais efficasse en
terme de réutilisation.
J'ai supposé ici que les controles sont des controles de saisies. Une
fois ceux-ci effectués, tu peux appliquer les actions métiers (Calcul de
la commande par exemple). Si jamais une exception est levée à ce momoent
là, c'est généralement qu'il y a un problème grave, ou une exception
générique ....

En espérant que cela peux t'aider ...
Pierre.


Olivier wrote:
Bonjour,
Ce message pour vous demander vos éventuels retours d'expérience sur
ce sujet et votre avis sur ce que je voudrais implémenter.
Ma couche présentation fait appel à des services se trouvant sur ma
couche métier. Cette dernière analyse le résultat du service,
notamment dans le cas où celui ci renvoie des erreurs. Le problème,
c'est que pour chaque erreur, je voudrais mettre en évidence un ou des
champs saisis par l'utilisateur. Comment faire convenablement un lien
entre erreur de la couche métier et objet de la couche de
présentation? Est ce utopique?
Merci d'avance pour vos réponses et avis,
Olivier