I have read this before, and I understand rule processing on a technical level, but I still don’t have a good intuition for when to do what. I have gathered this much:
-
When defining the generic default behaviour for a new action, create
check,carry out, andreportrules. -
When defining special cases for specific actions on specific things:
- Create
afterrules to add behaviour that should happen “simultaneously” with the defaultcarry outbehaviour, and remember tocontinue the actionif you also want default reporting. - Create
insteadrules for things that should override the default behaviour entirely. - Create
beforerules for things that should happen before the default behaviour, e.g. if a prior action is needed to make surecheckprerequisites of the action attempted are met. - Don’t use
check,carry out, andreportsince these are meant to contain the generic default behaviour.
- Create
But I’m not sure this makes at all sense. For example, I see very little difference between adding a carry out rule and adding an after rule with a continue the action. I see very little difference between adding an instead rule and a before rule with stop the action.