I’ve been developing a piece of software that takes rules of the form ‘A Disallows B’ or ‘X Requires Y’ to make an application that will allow you to configure a complex item.
To describe it more fully, imagine you’ve got a level of folders, which have some number of sub-folders, and each of those sub-folders has some number of items. The intent is to express relationships between the items in a way that helps the user create a valid collection of selections.
So the actual rules look more like ‘All(A, B, C) Disallows Any(X, Y, Z)’, which states that if the user selects A, B, and C, they can’t select any of X, Y, or Z. It’s basically just boolean logic.
There are additional types, like those that say if you select A then you must also select B, but it’s not worth getting into the specifics of all that.
It’s not business logic (at least not in the normal sense), and the rules can change any time (and they will) so they need to be read from a string and interpreted or hooked up through a convoluted database structure (which I’d prefer to stay away from).
The real point is: Is there some sort of system or framework out there that deals in this kind of runtime behavior? I know that Oracle has a thing called the “Oracle Configurator” that does exactly what I’m talking about, but it’s prohibitively expensive I think.
The project is almost over, and I’ve built a “working” system, but I’m trying to do a post-mortem to see if it could have been done better/faster/cheaper.
You might be interested in Prolog.