I am working on an application for awarding organizations by the CEO based on a somewhat complex criteria of multiple dimensions. The process consists of 3 nested workflows:
Award workflow (opened → closed → endorsed → approved → published)
Nomination workflow (submitted → reviewed)
Nomination Review workflow (started → finalized → approved/rejected)
The CEO award committee starts the process by opening new awards at the beginning of the year each with its own criteria.
At this point, organizations can start submitting their nominations against these awards which contain all supporting information for why they should win. They can do so until the published award deadline where the award becomes closed.
Each nomination is assigned to a specific reviewer from the committee (one at a time) until they finalize their review and get it approved by the committee chair or otherwise goes for a second or maximum third iteration (i.e. new child workflow usually with another reviewer) of review to verify and score the claimed information in the nomination against the criteria.
When a nomination review workflow is deemed approved, the respective parent nomination workflow is advanced to be reviewed.
And when all nomination workflows are reviewed, the committee can then endorse the award workflow resulting in the semi-final ranking of winners. If approved by the CEO, the workflow becomes approved and ready for publishing the final winners online. If not, the workflow is sent back for further scoring calibrations by the committee.
Now my question is: what options are there for modeling such nested/related workflows? what are the tradeoffs as well?
Do you for example use 1 big saga with one consistent record for each workflow tree?
Or would you use a separate saga for each workflow? How?
Different approach? Different trade-offs?