EDIT: more direct situation
I need to design a program that will create particular objects and run computationally intensive procedures using its fields in order to update other fields. When a procedure completes, other procedures can now be launched using the new fields.
These objects are saved to disk and used in later stages of the software.
The problem is that some further procedures need to wait for multiple prior procedures before executing, so none of those "knows" when to trigger the next steps. These procedures are applied to various objects at various stages of their lifetime, so it would be awkward for all procedures to check for all possible consequences upon completion (at least, in the way I am imagining it at the moment).
Since the procedures and the objects are decoupled, event-driven design seemed like a natural fit. However, the delayed conditions of some events make this less obvious to design. It seems like some events would need to "accumulate" before triggering a response.
Is there a clean way to do this with event-driven design? If not, what would be the suitable design for this type of problem?