Je me sens comme si je suis sur le point de réinventer la roue ici, alors avant de le faire ...
J'ai un grand ensemble de données que je dois traiter et que les «règles» qui traitent les données Évoluer au fil du temps, j'ai donc pensé que la mise en œuvre d'un simple moteur de règles serait en ordre. P>
Note Je pouvais imaginer la syntaxe à regarder Quelque chose comme: p> Je me demandais s'il y avait des schémas existants ou des gemmes là-bas qui aideraient cela avec cela. Celui qui semble le plus proche est Rente By , mais ne semble pas être entretenu activement et semble trop complexe de une solution pour mon problème. P> Merci! P> Notez que c'est une question similaire à: Les moteurs de rubis et de règles , mais différents dans cela, je ne me soucie pas du traitement des langues naturelles et du stockage de règles. p> p>
5 Réponses :
Par comparaison des autres moteurs de règles de rubis existants, RenteBy semble être le plus activement maintenu: p>
Cependant, la
Peu importe beaucoup de règles de rubis par le look.
BTW LE CODE RUBY-RESUMENTS J'ai déplacé ici Github.com/michaelneale/Ruby-rules comme codehaus n'est plus (je ne l'ai pas touché depuis des années et sa base comparée aux autres).
@davenewton a parlé de l'amour en moi et il est clair que, fondamentalement, je cherchais un simple DSL pour mon application, c'est ce que j'ai fini par utiliser - c'est très simple, mais en cas d'incitation est utile pour quelqu'un d'autre:
Cool; Merci de suivre le suivi. J'espère que ça marche bien - j'ai fait quelques "moteurs de règles" vraiment simples comme celui-ci, et pour beaucoup de choses, ils sont parfaitement adéquats.
ive joué avec des règles et éteint pendant quelques semaines et que ce n'est pas trop compliqué à utiliser, bien que j'ai ajouté des complications, utilise une déclaration de cas massif pour charger des règles de charge par programme dans le moteur. P>
Une fois que vous comprenez que des faits comme des faits sont persistants dans le moteur et que chaque exécution ultérieure n'évalue pas simplement les faits que vous venez de mettre mais les faits que vous avez affirmés auparavant, il est assez simple. Pas un fan de la BlackBox Certains d'entre eux sont quand je reçois une erreur d'exécution sa douleur absolue pour résoudre (comme je suis actuellement une partie). P>
N'oubliez pas le gemme du moteur WONGI ( https://github.com/ulfurinn/wongi -engine ). Il est basé sur l'algorithme à rééquipier ( http://en.wikipedia.org/wiki/rete_algorithm/ A>) et a une syntaxe similaire à ce que vous recherchez. P>
Regardez peut-être WONGI, comme Stratus3D suggéra. D'un premier coup d'œil, il a l'air bien et a une bonne intro. Je vais le tester sur une témoignage plus complexe les prochaines semaines. P>
Les rools d'autre part semble être hométacé (la page Rubyforge est morte, toutes les fourches que j'ai trouvées semblent être mortes aussi bien). P>
Sans plus de détails, il est difficile d'aider; Jusqu'à présent, il semble que vous ayez une «règle de feu», et une bloc de «action de règle». Semble comme une DSL directe au plus, et un ruby raisonnablement clair, même si vous ignorez une mince emballage DSL.
Vous voudrez peut-être consulter GEM State_Machine
@Davenewton, je pense que vous avez exactement raison. Vous trouverez ci-dessous la solution que j'ai proposée. Merci de me pousser dans la bonne direction