I have an existing asp.net (c#) application. I need to provide users with a way to create flexibles rules to calculate an effective date given a hiredate and an enrollmentdate.
Some examples of rules that might be used:
- The later of hiredate or enrollmentdate
- HireDate + 90 Days
- The first of the Month after the enrollment date
- If the enrollment date is before the 15 of the month, then the effective date is the 1st of the next month. If it is on the 15 or after, it’s the 1st of the month after that.
I started out with a handful of offset fields (day offset, month offset, etc…), but as I come across new requirements, I’m coming to realize the current approach isn’t flexible enough.
What I would like to do is allow the end user to define a function that returns a date given two parameters (hiredate, enrollmentdate), and store that function in the database. When I need to calculate the effectivedate I’d pull this function out of the database execute it passing in the parameters to get my effectivedate.
What I would need (I think) is a Domain Specific Language (DSL) that would allow the creation of this function. It’s syntax would have to allow easy manipulation of dates.
I’m looking for recommendations on DSLs that fit my requirement. If my DSL strategy is off base, please recommend another path. Thank you.
I am currently implenting my solution using the flee expression parser. This allows me to use most of the methods and properties that the .NET DateTime struct affords me. I was pointed in this direction by re-posting my question as seen below:
https://stackoverflow.com/a/14730487/21155