I have a love/hate relationship with these models, sometimes they save my day, but some others are really, but really hard to deal with.
In software development you will find such scenarios, where you have something to do, and that thing will require another thing... and so on.
I mapped this model about a generic rule-dependency model:
- Action: Component doing some kind of work. All the dependencies are one-side oriente, and each dependency can have many other dependencies.
- ActionsRepository: A collection of sorted actions by any kind of criteria. Normally not allowing duplicated actions.
- ActionsExecutor: Component in charge of iterate and execute the actions.