1

Je suis relativement nouveau dans le développement d'applications Web.Choix de l'architecture pour exposer le système expert CLIPS en tant qu'application Web

J'aimerais avoir vos commentaires et suggestions d'amélioration pour les considérations architecturales suivantes.

J'ai développé un système expert ES en utilisant CLIPS. Maintenant, je prévois de fournir cela à une variété d'utilisateurs de notre société en tant qu'application web. Avant de commencer à entrer dans plus de détails, je réfléchis actuellement aux technologies qui devraient être impliquées.

Le but est que l'utilisateur de l'application Web soit confronté à une animation de type "chat" qui le guide vers le résultat final pendant qu'il fournit de plus en plus de données à l'ES.

Après avoir effectué des recherches sur la mienne, je suis venu avec l'idée suivante

Dans le backend j'utilise PyCLIPS comme une interface entre Python et CLIPS

Puis-je utiliser DJANGO pour intégrer mon code python dans le page Web modifiant dynamiquement le chat entre l'utilisateur et ES.

Il y a une chose qui me trouble particulièrement beaucoup: comment gérer plusieurs utilisateurs simultanés? Dois-je utiliser un ES avec chaque utilisateur ayant un ensemble de faits individuels ou est-ce que chaque utilisateur a sa propre instance de l'ES?

Avez-vous d'autres approches de haut niveau pour ce problème qui pourraient être supérieures à celle-ci? Je me réjouis de votre expérience et de vos commentaires à ce sujet.

Meilleur

Répondre

0

Il est généralement une bonne idée de diviser votre système expert en « tessons » séparés.

Il conserve la base de règles plus simple (car vous n'avez pas besoin de distinguer à quel utilisateur fait référence) et vous permet d'évoluer horizontalement lorsque d'autres utilisateurs seront ajoutés.

Si l'exécution d'un ES par utilisateur semble trop lourde, vous pouvez réduire la granularité en effectuant un sharding basé, par exemple, sur la première lettre du nom d'utilisateur ou de l'ID.

Lors de la conception de solutions similaires, j'ai tendance à découpler l'application frontend avec l'ES en utilisant un système de mise en file d'attente. Cela vous permet de modifier la disposition du cluster sans avoir à modifier les API publiques.

| Flacon | ----> | RabbitMQ | ----> | ES Travailleur |

Si vous souhaitez modifier votre stratégie de partitionnement, vous pouvez simplement reconfigurer la disposition des files d'attente de courtier sans affecter le client/l'utilisateur final.

0

Je suggère d'exécuter le système expert en mode sans état. Chaque fois que l'utilisateur apporte des modifications, vous soumettez toutes les données de la page Web au système expert, puis récupérez les résultats à afficher sur la page Web. Le faire de cette façon évolue mieux si vous avez plusieurs utilisateurs et facilite l'implémentation de la logique d'annulation si l'utilisateur veut changer une réponse. Il y a un exemple montrant comment faire cela avec une application CGI au http://www.clipsrules.net/?q=Downloads/CLIPSCGI.