Can anyone suggest a robust way of enforcing a rule to be evaluated during a model update?
Using onCreate works fine for the initial Part creation, but doesn't get fired for any subsequent updates (changes to parameters etc) Fiddling with renderself sort of works but is there a better way?
There really isn't such a thing as "update" in the pure sense. What update means is usually evaluation of Root.RenderSelf. All other things that happen are based on whether rule values are demanded and have already been cached or not.
Thus, it is possible that "update" does "nothing", because nothing demanded by Root.Renderself, or anything it depends on, has changed. But, as a corollary, if you want to do something every time Root.Renderself is called, you can create an Uncached rule that Root.Renderself depends on.
If this doesn't answer your question, by all means reply with some more detail.
It sounds like the "modify" Dynamic Rule Reactors might be what you are looking for. See the ETO Help Wiki pages for Dynamic Rule Reactors (formerly "Intent events") to see if they can do what you are seeking.
Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.