€cdocutils.nodes document q)q}q(U nametypesq}q(X:use case 28 - derived product original change notificationqNXuc28qˆXhistoryqˆuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU8use-case-28-derived-product-original-change-notificationqhUuc28qhUhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC28:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/28_uc.txtqUtagnameqUtargetqU attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes section q*)q+}q,(hUhhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes title q6)q7}q8(hX:Use Case 28 - Derived Product Original Change Notificationq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 28Uindex-0qIUNtqJ(hHXUC28hIUNtqK(hHX notificationhIUNtqL(hHX object changehIUNtqM(hHXupdatehIUNtqN(hHXdeletehIUNtqOeUinlineqP‰uh(Kh)hh]ubh)qQ}qR(hUhh+hhhhh }qS(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qT)qU}qV(hUhh+hhh-}hUdefinition_listqWh }qX(h$]h%]h#]h"]qYhIah&]uh(Nh)hh3}qZhIhQsh]q[(cdocutils.nodes definition_list_item q\)q]}q^(hX+Revisions View document revision history_. hhUhhhUdefinition_list_itemq_h }q`(h$]h%]h#]h"]h&]uh(K h]qa(cdocutils.nodes term qb)qc}qd(hX Revisionsqehh]hhhUtermqfh }qg(h$]h%]h#]h"]h&]uh(K h]qhh=X Revisionsqi…qj}qk(hhehhcubaubcdocutils.nodes definition ql)qm}qn(hUh }qo(h$]h%]h#]h"]h&]uhh]h]qpcdocutils.nodes paragraph qq)qr}qs(hX View document revision history_.hhmhhhU paragraphqth }qu(h$]h%]h#]h"]h&]uh(K h]qv(h=XView document revision qw…qx}qy(hXView document revision hhrubcdocutils.nodes reference qz)q{}q|(hXhistory_Uresolvedq}KhhrhU referenceq~h }q(UnameXhistoryq€UrefuriqX”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/28_uc.txtq‚h"]h#]h$]h%]h&]uh]qƒh=Xhistoryq„…q…}q†(hUhh{ubaubh=X.…q‡}qˆ(hX.hhrubeubahU definitionq‰ubeubh\)qŠ}q‹(hX°Goal Relationships/Versioning - Derived products should be linked to source objects so that notifications can be made to users of derived products when source products change. hhUhhhh_h }qŒ(h$]h%]h#]h"]h&]uh(Kh)hh]q(hb)qŽ}q(hXGoalqhhŠhhhhfh }q‘(h$]h%]h#]h"]h&]uh(Kh]q’h=XGoalq“…q”}q•(hhhhŽubaubhl)q–}q—(hUh }q˜(h$]h%]h#]h"]h&]uhhŠh]q™hq)qš}q›(hXªRelationships/Versioning - Derived products should be linked to source objects so that notifications can be made to users of derived products when source products change.qœhh–hhhhth }q(h$]h%]h#]h"]h&]uh(K h]qžh=XªRelationships/Versioning - Derived products should be linked to source objects so that notifications can be made to users of derived products when source products change.qŸ…q }q¡(hhœhhšubaubahh‰ubeubh\)q¢}q£(hX?Summary Although content in DataONE is immutable, there are situations where the original content can be updated, and in these cases a new copy of the content is created for science metadata. The update process for data is currently not defined, though for practical reasons it is unlikely to be feasible to preserve *all* copies of data, especially for particularly large data sets. The premise is that owners of the derived products will be notified - for this to occur, the relationships between original and derived need to be recorded and discoverable. The mechanism for this requires further design. It would be possible to record such relationships in the system metadata, or perhaps it may be necessary for a different class of object to be created to specifically to support recordation of relationships between content. hhUhhhh_h }q¤(h$]h%]h#]h"]h&]uh(Kh)hh]q¥(hb)q¦}q§(hXSummaryq¨hh¢hhhhfh }q©(h$]h%]h#]h"]h&]uh(Kh]qªh=XSummaryq«…q¬}q­(hh¨hh¦ubaubhl)q®}q¯(hUh }q°(h$]h%]h#]h"]h&]uhh¢h]q±(hq)q²}q³(hXwAlthough content in DataONE is immutable, there are situations where the original content can be updated, and in these cases a new copy of the content is created for science metadata. The update process for data is currently not defined, though for practical reasons it is unlikely to be feasible to preserve *all* copies of data, especially for particularly large data sets.hh®hhhhth }q´(h$]h%]h#]h"]h&]uh(Kh]qµ(h=X5Although content in DataONE is immutable, there are situations where the original content can be updated, and in these cases a new copy of the content is created for science metadata. The update process for data is currently not defined, though for practical reasons it is unlikely to be feasible to preserve q¶…q·}q¸(hX5Although content in DataONE is immutable, there are situations where the original content can be updated, and in these cases a new copy of the content is created for science metadata. The update process for data is currently not defined, though for practical reasons it is unlikely to be feasible to preserve hh²ubcdocutils.nodes emphasis q¹)qº}q»(hX*all*h }q¼(h$]h%]h#]h"]h&]uhh²h]q½h=Xallq¾…q¿}qÀ(hUhhºubahUemphasisqÁubh=X= copies of data, especially for particularly large data sets.qÂ…qÃ}qÄ(hX= copies of data, especially for particularly large data sets.hh²ubeubhq)qÅ}qÆ(hX½The premise is that owners of the derived products will be notified - for this to occur, the relationships between original and derived need to be recorded and discoverable. The mechanism for this requires further design. It would be possible to record such relationships in the system metadata, or perhaps it may be necessary for a different class of object to be created to specifically to support recordation of relationships between content.qÇhh®hhhhth }qÈ(h$]h%]h#]h"]h&]uh(Kh]qÉh=X½The premise is that owners of the derived products will be notified - for this to occur, the relationships between original and derived need to be recorded and discoverable. The mechanism for this requires further design. It would be possible to record such relationships in the system metadata, or perhaps it may be necessary for a different class of object to be created to specifically to support recordation of relationships between content.qÊ…qË}qÌ(hhÇhhÅubaubehh‰ubeubh\)qÍ}qÎ(hXvActors - Data owners - Derived products - Original products - Member Nodes - Coordinating Nodes - Notification system hhUhhhh_h }qÏ(h$]h%]h#]h"]h&]uh(K%h)hh]qÐ(hb)qÑ}qÒ(hXActorsqÓhhÍhhhhfh }qÔ(h$]h%]h#]h"]h&]uh(K%h]qÕh=XActorsqÖ…q×}qØ(hhÓhhÑubaubhl)qÙ}qÚ(hUh }qÛ(h$]h%]h#]h"]h&]uhhÍh]qÜcdocutils.nodes bullet_list qÝ)qÞ}qß(hUh }qà(UbulletqáX-h"]h#]h$]h%]h&]uhhÙh]qâ(cdocutils.nodes list_item qã)qä}qå(hX Data ownersqæh }qç(h$]h%]h#]h"]h&]uhhÞh]qèhq)qé}qê(hhæhhähhhhth }që(h$]h%]h#]h"]h&]uh(K h]qìh=X Data ownersqí…qî}qï(hhæhhéubaubahU list_itemqðubhã)qñ}qò(hXDerived productsqóh }qô(h$]h%]h#]h"]h&]uhhÞh]qõhq)qö}q÷(hhóhhñhhhhth }qø(h$]h%]h#]h"]h&]uh(K!h]qùh=XDerived productsqú…qû}qü(hhóhhöubaubahhðubhã)qý}qþ(hXOriginal productsqÿh }r(h$]h%]h#]h"]h&]uhhÞh]rhq)r}r(hhÿhhýhhhhth }r(h$]h%]h#]h"]h&]uh(K"h]rh=XOriginal productsr…r}r(hhÿhjubaubahhðubhã)r }r (hX Member Nodesr h }r (h$]h%]h#]h"]h&]uhhÞh]r hq)r}r(hj hj hhhhth }r(h$]h%]h#]h"]h&]uh(K#h]rh=X Member Nodesr…r}r(hj hjubaubahhðubhã)r}r(hXCoordinating Nodesrh }r(h$]h%]h#]h"]h&]uhhÞh]rhq)r}r(hjhjhhhhth }r(h$]h%]h#]h"]h&]uh(K$h]rh=XCoordinating Nodesr…r}r (hjhjubaubahhðubhã)r!}r"(hXNotification system h }r#(h$]h%]h#]h"]h&]uhhÞh]r$hq)r%}r&(hXNotification systemr'hj!hhhhth }r((h$]h%]h#]h"]h&]uh(K%h]r)h=XNotification systemr*…r+}r,(hj'hj%ubaubahhðubehU bullet_listr-ubahh‰ubeubh\)r.}r/(hXˆPreconditions - Relationships between objects are recorded and discoverable - Derived products are stored in the DataONE infrastructure hhUhhhh_h }r0(h$]h%]h#]h"]h&]uh(K)h)hh]r1(hb)r2}r3(hX Preconditionsr4hj.hhhhfh }r5(h$]h%]h#]h"]h&]uh(K)h]r6h=X Preconditionsr7…r8}r9(hj4hj2ubaubhl)r:}r;(hUh }r<(h$]h%]h#]h"]h&]uhj.h]r=hÝ)r>}r?(hUh }r@(háX-h"]h#]h$]h%]h&]uhj:h]rA(hã)rB}rC(hX;Relationships between objects are recorded and discoverablerDh }rE(h$]h%]h#]h"]h&]uhj>h]rFhq)rG}rH(hjDhjBhhhhth }rI(h$]h%]h#]h"]h&]uh(K(h]rJh=X;Relationships between objects are recorded and discoverablerK…rL}rM(hjDhjGubaubahhðubhã)rN}rO(hX:Derived products are stored in the DataONE infrastructure h }rP(h$]h%]h#]h"]h&]uhj>h]rQhq)rR}rS(hX9Derived products are stored in the DataONE infrastructurerThjNhhhhth }rU(h$]h%]h#]h"]h&]uh(K)h]rVh=X9Derived products are stored in the DataONE infrastructurerW…rX}rY(hjThjRubaubahhðubehj-ubahh‰ubeubh\)rZ}r[(hX!Triggers - An object is updated. hhUhhhh_h }r\(h$]h%]h#]h"]h&]uh(K,h)hh]r](hb)r^}r_(hXTriggersr`hjZhhhhfh }ra(h$]h%]h#]h"]h&]uh(K,h]rbh=XTriggersrc…rd}re(hj`hj^ubaubhl)rf}rg(hUh }rh(h$]h%]h#]h"]h&]uhjZh]rihÝ)rj}rk(hUh }rl(háX-h"]h#]h$]h%]h&]uhjfh]rmhã)rn}ro(hXAn object is updated. h }rp(h$]h%]h#]h"]h&]uhjjh]rqhq)rr}rs(hXAn object is updated.rthjnhhhhth }ru(h$]h%]h#]h"]h&]uh(K,h]rvh=XAn object is updated.rw…rx}ry(hjthjrubaubahhðubahj-ubahh‰ubeubh\)rz}r{(hXEPost Conditions - Derived product owners are notified of the change. hhUhhhh_h }r|(h$]h%]h#]h"]h&]uh(K/h)hh]r}(hb)r~}r(hXPost Conditionsr€hjzhhhhfh }r(h$]h%]h#]h"]h&]uh(K/h]r‚h=XPost Conditionsrƒ…r„}r…(hj€hj~ubaubhl)r†}r‡(hUh }rˆ(h$]h%]h#]h"]h&]uhjzh]r‰hÝ)rŠ}r‹(hUh }rŒ(háX-h"]h#]h$]h%]h&]uhj†h]rhã)rŽ}r(hX3Derived product owners are notified of the change. h }r(h$]h%]h#]h"]h&]uhjŠh]r‘hq)r’}r“(hX2Derived product owners are notified of the change.r”hjŽhhhhth }r•(h$]h%]h#]h"]h&]uh(K/h]r–h=X2Derived product owners are notified of the change.r—…r˜}r™(hj”hj’ubaubahhðubahj-ubahh‰ubeubeubhq)rš}r›(hX **Notes**rœhh+hhhhth }r(h$]h%]h#]h"]h&]uh(K1h)hh]ržcdocutils.nodes strong rŸ)r }r¡(hjœh }r¢(h$]h%]h#]h"]h&]uhjšh]r£h=XNotesr¤…r¥}r¦(hUhj ubahUstrongr§ubaubhÝ)r¨}r©(hUhh+hhhj-h }rª(háX-h"]h#]h$]h%]h&]uh(K3h)hh]r«(hã)r¬}r­(hXIWho can assert these relationships? The relevant object owners? Anybody? hj¨hhhhðh }r®(h$]h%]h#]h"]h&]uh(Nh)hh]r¯hq)r°}r±(hXHWho can assert these relationships? The relevant object owners? Anybody?r²hj¬hhhhth }r³(h$]h%]h#]h"]h&]uh(K3h]r´h=XHWho can assert these relationships? The relevant object owners? Anybody?rµ…r¶}r·(hj²hj°ubaubaubhã)r¸}r¹(hXHow are relationships removed? hj¨hhhhðh }rº(h$]h%]h#]h"]h&]uh(Nh)hh]r»hq)r¼}r½(hXHow are relationships removed?r¾hj¸hhhhth }r¿(h$]h%]h#]h"]h&]uh(K5h]rÀh=XHow are relationships removed?rÁ…rÂ}rÃ(hj¾hj¼ubaubaubeubcdocutils.nodes comment rÄ)rÅ}rÆ(hXP@startuml images/28_seq.png actor User participant "Client" as app_client << Application >> User -> app_client participant "Authentication API" as c_authenticate << Coordinating Node >> app_client -> c_authenticate: login (user, pw) app_client <-- c_authenticate: token or failure participant "CRUD API" as c_crud << Coordinating Node >> app_client -> c_crud: assertRelation (token, IDofSubject, relationship, IDofObject) participant "Synchronization API" as c_sync << Coordinating Node >> c_sync <-- c_crud: synchronize () c_crud <-- c_sync: ack or fail app_client <-- c_crud: status @endumlhh+hhhUcommentrÇh }rÈ(U xml:spacerÉUpreserverÊh"]h#]h$]h%]h&]uh(KFh)hh]rËh=XP@startuml images/28_seq.png actor User participant "Client" as app_client << Application >> User -> app_client participant "Authentication API" as c_authenticate << Coordinating Node >> app_client -> c_authenticate: login (user, pw) app_client <-- c_authenticate: token or failure participant "CRUD API" as c_crud << Coordinating Node >> app_client -> c_crud: assertRelation (token, IDofSubject, relationship, IDofObject) participant "Synchronization API" as c_sync << Coordinating Node >> c_sync <-- c_crud: synchronize () c_crud <-- c_sync: ack or fail app_client <-- c_crud: status @endumlrÌ…rÍ}rÎ(hUhjÅubaubcdocutils.nodes image rÏ)rÐ}rÑ(hX.. image:: images/28_seq.png hh+hhhUimagerÒh }rÓ(UuriX!design/UseCases/images/28_seq.pngrÔh"]h#]h$]h%]U candidatesrÕ}rÖU*jÔsh&]uh(KHh)hh]ubhq)r×}rØ(hXÆ*Figure 1.* Interactions for use case 28. Versioning -- Derived products should be linked to source objects so that notifications can be made to users of derived products when source products changehh+hhhhth }rÙ(h$]h%]h#]h"]h&]uh(KIh)hh]rÚ(h¹)rÛ}rÜ(hX *Figure 1.*h }rÝ(h$]h%]h#]h"]h&]uhj×h]rÞh=X Figure 1.rß…rà}rá(hUhjÛubahhÁubh=X» Interactions for use case 28. Versioning -- Derived products should be linked to source objects so that notifications can be made to users of derived products when source products changerâ…rã}rä(hX» Interactions for use case 28. Versioning -- Derived products should be linked to source objects so that notifications can be made to users of derived products when source products changehj×ubeubh)rå}ræ(hX¡.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/28_uc.txtU referencedrçKhh+hhhhh }rè(hh‚h"]réhah#]h$]h%]h&]rêhauh(KMh)hh]ubeubehUU transformerrëNU footnote_refsrì}ríUrefnamesrî}rïh€]rðh{asUsymbol_footnotesrñ]ròUautofootnote_refsró]rôUsymbol_footnote_refsrõ]röU citationsr÷]røh)hU current_linerùNUtransform_messagesrú]rû(cdocutils.nodes system_message rü)rý}rþ(hUh }rÿ(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOruh]rhq)r}r(hUh }r(h$]h%]h#]h"]h&]uhjýh]rh=X*Hyperlink target "uc28" is not referenced.r…r}r(hUhjubahhtubahUsystem_messager ubjü)r }r (hUh }r (h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypejuh]r hq)r}r(hUh }r(h$]h%]h#]h"]h&]uhj h]rh=X-Hyperlink target "index-0" is not referenced.r…r}r(hUhjubahhtubahj ubeUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r (Ufootnote_backlinksr!KUrecord_dependenciesr"NU rfc_base_urlr#Uhttps://tools.ietf.org/html/r$U tracebackr%ˆUpep_referencesr&NUstrip_commentsr'NU toc_backlinksr(Uentryr)U language_coder*Uenr+U datestampr,NU report_levelr-KU _destinationr.NU halt_levelr/KU strip_classesr0Nh:NUerror_encoding_error_handlerr1Ubackslashreplacer2Udebugr3NUembed_stylesheetr4‰Uoutput_encoding_error_handlerr5Ustrictr6U sectnum_xformr7KUdump_transformsr8NU docinfo_xformr9KUwarning_streamr:NUpep_file_url_templater;Upep-%04dr<Uexit_status_levelr=KUconfigr>NUstrict_visitorr?NUcloak_email_addressesr@ˆUtrim_footnote_reference_spacerA‰UenvrBNUdump_pseudo_xmlrCNUexpose_internalsrDNUsectsubtitle_xformrE‰U source_linkrFNUrfc_referencesrGNUoutput_encodingrHUutf-8rIU source_urlrJNUinput_encodingrKU utf-8-sigrLU_disable_configrMNU id_prefixrNUU tab_widthrOKUerror_encodingrPUUTF-8rQU_sourcerRhUgettext_compactrSˆU generatorrTNUdump_internalsrUNU smart_quotesrV‰U pep_base_urlrWU https://www.python.org/dev/peps/rXUsyntax_highlightrYUlongrZUinput_encoding_error_handlerr[j6Uauto_id_prefixr\Uidr]Udoctitle_xformr^‰Ustrip_elements_with_classesr_NU _config_filesr`]raUfile_insertion_enabledrbˆU raw_enabledrcKU dump_settingsrdNubUsymbol_footnote_startreKUidsrf}rg(hh+hIhUhh+hjåuUsubstitution_namesrh}rihh)h }rj(h$]h"]h#]Usourcehh%]h&]uU footnotesrk]rlUrefidsrm}rn(hI]rohQah]rphauub.