2008-11-02 13 views
0

Notre application expose les requêtes par le biais de services Web, et ce que nous avons constaté est que nos clients veulent souvent des requêtes personnalisées, soit en limitant davantage les résultats renvoyés en spécifiant des critères supplémentaires, soit en demandant des choses. t déjà exposer.Qu'est-ce qu'un bon design pour une interface de requête extensible?

Maintenant, nous pouvons prendre l'approche de créer de nouvelles méthodes pour chacune de ces nouvelles méthodes, mais c'est quelque peu incommode; le déploiement de notre application sur un site client nécessite généralement des semaines de tests d'intégration par étapes. Nous avons proposé un mécanisme de requête nommé, dans lequel l'administrateur de l'application doit définir les requêtes par nom qui sont paramétrées et un service Web correspondant qui appelle simplement ces paramètres. Cependant, je ne peux pas m'empêcher de penser que quelqu'un a déjà résolu ce problème, alors j'aimerais avoir des commentaires de la communauté SO sur les conceptions possibles.

Merci!

Mises à jour

Le modèle de spécification est un bon, mais nos offres d'application avec suffisamment de données que nous voulons pousser autant de travail d'interrogation vers le bas dans un SGBDR, qui peut faire un meilleur travail d'optimisation le plan de requête que nous voudrions jamais. De plus, nous soutenons trois back-backs RDBMS, donc nous sommes bloqués en utilisant une approche de plus grand dénominateur commun: nous utilisons autant de capacités que la base de données la moins fonctionnelle peut fournir.

Répondre

1
  • Jetez un oeil à Hibernates Criteria API et de l'utiliser ou de construire des fonctionnalités similaires pour vos utilisateurs.
  • Si cela en vaut la peine, fournissez une interface arborescente pour les critères de regroupement. ("Tous les critères d'un groupe doivent correspondre"/"un critère doivent correspondre à"/"nier")

Avantages:

  • Facile à construire.
  • Les paramètres utilisateur sont possibles.
  • Des requêtes puissantes sont possibles.
  • Vous pouvez appliquer des restrictions telles que SELECT ... FROM table WHERE someRestriction ET (critères fournis par l'utilisateur)
0

Puisque nous ne savons pas vraiment qui comment vos utilisateurs utilisent votre interface, il semble un peu prématuré de donner un avis technique sur quelque chose cela ressemble beaucoup plus au problème "Inmates are running the Asylum". Il existe de très bons conseils et des moyens communs pour résoudre ces problèmes techniques, mais fonctionnent-ils pour vos utilisateurs? Peut-être que le vraiment ne pas donner une merde au sujet de votre problème, mais plutôt une bonne solution de travail à un bouton? (Ou plus comme google?)

+0

C'est une observation valide - et précise -; ils aiment l'approche du bouton-poussoir. J'aimerais quand même avoir quelques idées, cependant.Nous ne pouvons pas les utiliser, en partie pour les raisons que vous citez, mais cela pourrait nous aider à trouver une meilleure solution à la fin. –