7
votes

Moteur Ruby Rules

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.

Note Je ne cherche pas un analyseur de langues naturel , je veux que toutes les règles soient des procs rubis.

Je pouvais imaginer la syntaxe à regarder Quelque chose comme: xxx

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.

Merci!


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.


3 commentaires

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


5 Réponses :


1
votes

Par comparaison des autres moteurs de règles de rubis existants, RenteBy semble être le plus activement maintenu:


2 commentaires

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).



7
votes

@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: xxx


1 commentaires

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.



0
votes

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.

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).


0 commentaires


1
votes

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.

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).


0 commentaires