Question

J'ai un produit avec deux applications distinctes. Le cœur du produit vit dans la base de données (Oracle) et fonctionne selon un calendrier. L'autre est une application client (actuellement ASP.NET MVC3) utilisée pour gérer l'application de base de données. Il y a trois niveaux de validation en cours; Client, côté serveur et base de données avant que les données du client ne soient enregistrées dans la base de données.

Cependant, il existe des cas où des éléments de l'ensemble de données sont actuellement valides mais pourraient devenir invalides à un moment donné dans le futur. Dans ces cas plutôt que d'interrompre l'intégralité du processus d'entrée de données (long), nous plaçons simplement le processus pour l'ensemble de données en attente jusqu'à ce que les données deviennent valides ou sont mises à jour à une valeur valide. L'erreur peut être quelque chose comme: "Hé, vous avez planifié le processus de copie de Data Foo à l'emplacement x, puis accordez l'accès à l'utilisateur Bob. Le compte d'utilisateur Bob que vous avez sélectionné à l'origine n'est plus valide, que souhaitez-vous faire?" Annuler la demande de copie '' Modifier l'utilisateur 'ou' attendre '".

Existe-t-il une meilleure pratique pour stocker et signaler les conditions d'erreur (réparables par l'utilisateur) et des exceptions (non fatales et non réparables par l'utilisateur) au client de la base de données?

Par exemple:
- La base de données commence à traiter un
- La base de données sélectionne le jeu de données FOO
- Pendant le processus, une erreur ou une exception est rencontrée
- La base de données stocke l'erreur ou l'exception
- La base de données gère l'avort pour le processus A avec l'ensemble de données FOO
- La base de données continue le processus A avec un ensemble de données suivant jusqu'à ce que tous les ensembles de données soient traités
- La base de données termine le processus A

Puis un temps plus tard:
- L'utilisateur se connecte à l'application client ultérieurement (après le week-end?)
- L'utilisateur reçoit une notification qu'une erreur ou une exception s'est produite

Ma première pensée est une sorte de table DB stockant divers champs (event_ time_stamp, processus, événement, object_type, object_pk, event_code, supplémentaire_details, statut, last_updated). Ensuite, la configuration des modèles côté client (c'est-à-dire codé en dur avec des paramètres) pour chaque code d'erreur et les présenter à l'utilisateur ... mais il doit y avoir une meilleure façon?

Idéalement, je recherche une solution qui permettra au client de fournir des options d'interface utilisateur utiles qui aideront l'utilisateur à résoudre éventuellement les erreurs.

Quelles solutions avez-vous trouvées à ce problème? Quelque chose comme NServiceBus ou MassTransit fonctionnerait-il?

Edit: il y a deux exigences différentes ici. Les premiers à stocker les exceptions, et le second pour signaler (et éventuellement prendre des mesures).

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top