Ένα rule engine θα είναι ευκολότερο, όχι δυσκολότερο από ένα script engine, ειδικά αν το ζητούμενο είναι "κάποιος που ξέρει Excel" αντί για "κάποιος που ξέρει javascript". Εννοείται έτοιμο, γιατί αν πρέπει να το φτιάξεις από το μηδέν, έχει δουλίτσα. Αποκλείοντας καταρχήν το WF λόγω .... XMLίτιδας, υπάρχουν διάφορα Rule engines για .NET με αρκετά απλή γλώσσα. Έτσι κι αλλιώς, χρειάζεται ένα απλό rule engine, το οποίο απλά θα καταλαβαίνει το "Αν χ, ψ, ω τότε α, β, γ".
Όσον αφορά το καθαρό parsing, μπορείς να χρησιμοποιήσεις τη μέθοδο CodeDomProvider.Parse για να κάνεις parse ένα text stream και να δημιουργήσεις μετά από αυτό executable κώδικα. Το .NET έρχεται πακέτο με VB, C#, JScript compilers οπότε μπορείς να χρησιμοποιήσεις κάποια από αυτές τις γλώσσες. Και πάλι όμως, θα έπρεπε να χρησιμοποιήσεις διαφορετική γλώσσα για τον τελικό χρήστη, εκτός και αν θεωρείς ότι ξέρει ήδη κάποια από αυτές τις γλώσσες. Ακόμα και αν έχεις έτοιμο το σκελετό του κώδικα, και απλά προσθέτεις τους κανόνες που σου δίνει ο χρήστης, αυτός θα πρέπει να καταλαβαίνει τη σύνταξη της γλώσσας.
Μπορείς να χρησιμοποιήσεις και μία απλή μορφή Decision Table αντί για rule engine. Ουσιαστικά, έχεις ένα πίνακα όπου στις ν-1 στήλες έχεις διάφορες συνθήκες που πρέπει να ισχύουν και στην τελευταία το αποτέλεσμα που θα εκτελέσεις. Για το χρήστη είναι εύκολη η εισαγωγή των κανόνων, αλλά κάπως θα πρέπει να κάνεις .... parse τις συνθήκες του πίνακα και το αποτέλεσμα!
Αν όμως οι κανόνες αλλάζουν σπάνια, δεν σε εμποδίζει τίποτε να πάρεις τον πίνακα, να δημιουργήσεις με CodeDom ή string manipulation τον κώδικα με μορφή if - then , να κάνεις compile σε Dll με τον CodeDomProvider και να έχεις έτσι έτοιμο το rule dll που θέλεις.
Πάντα βέβαια με την προϋπόθεση ότι δεν θα βρεις κάτι έτοιμο, γιατί τότε, τα παραπάνω γίνονται σχεδόν αυτόματα.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos