I have the following problem:<p>I get a lot of documents that are filed throughout the day. The documents are submitted and can be modified and resubmitted. Documents that are submitted are part of a lineage (I file A then I file B (I then file an amended B[B.1] and another amendment [B.1.1] then I file C (where C ultimately references B.1.1 as the "final" prior step in the filing process). End workflow. There may also be file D, then E, then F or G. If F->F2, If G->G2).<p>Those documents are filed by users and reference other users. Those users also file stuff and can resubmit, etc.<p>The question I have is:<p>What are the software design patterns or concepts I should be using for this type of problem? Is this best suited to a graph problem? The document dependency flow seems to be suited to an airflow type solution, but I'm not sure.<p>Thank you for any guidance. I will happily engage and unpack the problem with anyone who has the time or interest to reply.