flowchart TD
%% t1(["terminator (process start/end)"])
%% s1["(process) step"]
%% d1{decision}
%% b1[("(data)base")]
%% m1[\manual step/]
%% o1[/"(input/output) object"/]
%% p1[[predefined step]]
classDef literal fill:#dff;,stroke:#bbb
classDef user fill:#ffa;,stroke:#bbb
b_typecodes[(Typecodes)]-. member .->o_biosample[/Biosample/]
o_biosample-. name .->o_tcbiosample[/"#quot;bsm#quot;"/]:::literal
o_biosample-. schema_class .->o_nmdc_schema_biosample[/"nmdc:Biosample"/]
b_shoulders[(Shoulders)]-. member .->o_s11[/shoulder '11'/]
o_s11-. name .->o_11[/"#quot;11#quot;"/]:::literal
click o_nmdc_schema_biosample href "https://microbiomedata.github.io/nmdc-schema/Biosample"
o_request[/"(1) minting request"/]:::user-. service .->t_service(["Central Minting Service"])
o_request-. requester .->o_requester[/Alicia/]
o_request-. typecode .->o_biosample
o_request-. how_many .->o_howmany[/"1"/]:::literal
o_requester-. name_authority .->o_naa[/NMDC/]
o_naa-. prefix .->o_pfx[/"#quot;nmdc#quot;"/]:::literal
t_service-. name_authority .->o_naa
o_request-- starts -->s_minting[minting]
o_s11-. assigned_to .-> t_service
s_minting-- draft_identifier -->o_id_draft1[/draft 1 of ID/]
o_id_draft1-. name .->o_idname[/"#quot;nmdc:bsm-11-abc123#quot;"/]:::literal
o_id_draft1-. shoulder .->o_s11
o_id_draft1-. typecode .-> o_biosample
o_id_draft1-. name_authority .->o_naa
o_id_draft1-. status .-> draft
o_id_draft1-- starts -->s_persisting[persisting]
s_persisting-- database -->b_identifiers[(Identifiers)]
o_bindreq[/"(2) binding request\n(by same `requester`, to same `service`)"/]:::user
o_bindreq-. id_name .-> o_idname
o_bindreq-. metadata_record .->o_mybiosample[/ /]
o_mybiosample-. samp_name .->o_samp_name[/"#quot;my amazing sample#quot;"/]:::literal
%% o_bindreq-. requester .->o_requester
%% o_bindreq-. service .->t_service
o_bindreq-- starts ----->s_binding[binding]
s_binding-- draft_identifier -->o_id_draft2[/"draft 2 of ID\n(also persisted)"/]
o_id_draft2-. status .-> draft
o_delreq[/"(3) delete request\n(by same `requester`, to same `service`)"/]:::user
o_delreq-. id_name .-> o_idname
o_delreq-- starts ------>s_del[deleting]
s_del-- deleted_id_name --> o_deleted_id_name[/"#quot;nmdc:bsm-11-abc123#quot;\n(only allowed if draft)"/]:::literal
o_regreq[/"(4) registration request\n(by same `requester`, to same `service`)"/]:::user
o_regreq-. id_name .-> o_idname
o_regreq-- starts ------>s_reg[registering]
s_reg-->d_schema_valid{schema-valid?}
d_schema_valid--yes-->s_resume_registering[resume]
d_schema_valid--no-->t_fail([fail])
s_resume_registering-- registered_id --> o_registered_id[/"registered ID"/]
o_registered_id-. name .->o_idname
o_registered_id-. name .->o_registeredidname[/"#quot;nmdc:bsm-11-abc123.1#quot;"/]:::literal
o_registered_id-. status .-> registered
o_registered_id-. revision_info .-> o_registered_id_1[/original/]
o_registered_id_1-. revises .->o_registered_id_1
o_registered_id_1-. is_latest .-> true[/true/]:::literal
registered-. subset_of .-> draft
o_idxreq[/"(5) indexing request\n(by same `requester`, to same `service`)"/]:::user
o_idxreq-. id_name .-> o_idname
o_idxreq-- starts ------>s_idx[indexing]
s_idx-- indexed_id --> o_indexed_id[/"indexed ID\n(registered ID that is findable by search, i.e. not only accessible by direct link)"/]
o_indexed_id-. status .-> indexed
indexed-. subset_of .-> registered
o_revreq[/"(6) revision request\n(by same `requester`, to same `service`)"/]:::user
o_revreq-. id_name .-> o_idname
o_revreq-- starts ------>s_rev[revising]
s_rev-- revised_id --> o_revised_id[/"draft 1 of revision to registered ID"/]
o_revised_id-. name .->o_revisedidname[/"#quot;nmdc:bsm-11-abc123.2#quot;"/]:::literal
o_revised_id-. status .-> draft
o_revised_id-. revision_info .-> o_revision[/revision/]
o_revision[/revision/]-. revises .->o_registered_id
o_resreq[/"(7) resolution request\n(by same `requester`, to same `service`)"/]:::user
o_resreq-. id_name .-> o_idname
o_resreq-- starts ------> s_res[resolving]
s_res-- resolved_id --> o_resolved_id[/"resolved ID\n(if draft, then requester must be authorized)"/]
Created
December 15, 2022 19:19
-
-
Save dwinston/ce801302f02c00e3d680b088258fc718 to your computer and use it in GitHub Desktop.
NMDC Minting Service example flowchart
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment