10. To phiê nb n( Versionin g)
10.11 Th uc Tính OnParentVersion
M i thành ph n (bao g m Node và các thu c tính) c a m t Node có m t tr ng thái cho bi t hành đ ng t ng ng x y ra đ i v i Node con hay thu c tính khi Node cha c a nó th c hi n vi c t o ra phiên b n trên Repository. Tr ng thái này đ c xác đnh b i thu c tính OnParentVersion trong PropertyDef hay trong ChildNodeDef đ c quy đnh b i lo i Node c a Node cha.
Xét ví d trong đó có Node N là m t Node có th t o ra phiên b n đ c (Versionable Node) trên m t Workspace W c a Repository R. Node N này có lo i Node T v i T là lo i Node con c a lo i Node nt:versionable và T cho phép N có thu c tính có tên P và Node con C.
các hành đ ng x y đ n cho P và C khi N t o ra phiên b n trên Repository tùy thu c vào thu c tính OnParentVersion trong PropertyDef c a P và trong ChildNodeDef c a C đ c quy đnh b i T.
Các giá tr có th có c a thu c tính OnParentVersion là
• COPY • VERSION
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
• INITIALIZE • COMPUTE • IGNORE • ABORT
Các giá tr c a thu c tính OnParentVersion này đ c quy đnh nh các h ng s trong l p OnParentVersionAction. javax.jcr.version. OnParentVersionAction int COPY int VERSION int INITIALIZE int COMPUTE int IGNORE int ABORT
B ng 2: Các h ng s trong giao di n javax.jcr.version.OnParentVersionAction
10.11.1 COPY
Khi g i ph ng th c chekin() c a N, C và toàn b các thành ph n con c a nó (bao g m Node con và các thu c tính con) s đ c sao chép vào vùng l u phiên b n nh là cây con c a VN. C và các thành ph n trong cây con c a nó s khơng có Version History c a riêng nó, do đó, C khơng c n ph i là Node có th t o phiên b n đ c (Versionable Node)
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Khi g i ph ng th c restore c a N đ ph c h i l i tr ng thái VN, nh ng b n sao chép c a C và cây con c a nó đã đ c l u tr c đó (khi g i ph ng th c checkin) c ng s đ c ph c h i đ thay th C và cây con c a nó trên Workspace
10.11.2 VERSION
Khi g i ph ng th c chekin() c a N, VN s thêm vào m t tham chi u đ n Version History c a C. Do đó, đi u này c ng yêu c u C là m t Node có th t o ra phiên b n. N u C là Node không th t o ra phiên b n thì cách x lý c ng gi ng nh tr ng h p IGNORE.
Khi g i ph ng th c restore c a N đ ph c h i l i tr ng thái VN, n u trên Workspace hi n th i có s n m t Node t ng ng v i Version History c a C thì khi đó th hi n c a C này s tr thành Node con c a N. N u trên Workspace hi n th i khơng có Node nào (hay nói chính xác là th hi n nào) t ng ng v i Version History c a C thì m t phiên b n trên Version History c a C s đ c ph c h i l i nh là m t Node con c a N. Workspace trên đó N đ c ph c h i s quy t đnh xem phiên b n nào s đ c ph c h i và s quy t đnh này là do c u hình c a Workspace quy đnh.
10.11.3 INITIALIZE
Khi g i ph ng th c chekin() c a N, m t Node m i c a C s đ c t o ra và thêm vào vùng l u phiên b n c a Repository nh là Node con c a VN. Khi Node m i c a C đ c t o ra thì s kh i t o này c ng gi ng nh vi c kh i t o khi C đ c t o ra trên Workspace b ng cách thông th ng. Node m i c a C khơng có Version History, do đó C c ng khơng c n ph i là m t Node có th t o phiên b n.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Khi g i ph ng th c restore c a N đ ph c h i l i tr ng thái VN, Node con C c a VN s không đ c quan tâm, đi u đó có ngh a là Node C hi n t i có trên Workspace s gi nguyên tr ng thái, không b thay th b i Node con C c a VN.
10.11.4 COMPUTE
Khi g i ph ng th c chekin() c a N, m t Node m i c a C s đ c t o ra và thêm vào vùng l u phiên b n c a Repository nh là Node con c a VN. Khi Node m i c a C đ c t o ra thì s kh i t o này đ c quy đ nh b i các hàm kh i t o đ c đnh ngh a b i lo i Node c a C. Node m i c a C khơng có Version History, do đó C c ng khơng c n ph i là m t Node có th t o phiên b n.
Khi g i ph ng th c restore c a N đ ph c h i l i tr ng thái VN, Node con C c a VN s không đ c quan tâm, đi u đó có ngh a là Node C hi n t i có trên Workspace s gi nguyên tr ng thái, không b thay th b i Node con C c a VN.
10.11.5 IGNORE
Khi g i ph ng th c chekin() c a N, khơng có thơng tin nào c a C đ c l u trong VN.
Khi g i ph ng th c restore c a N đ ph c h i l i tr ng thái VN, Node con C
c a N s v n gi nguyên tr ng thái hi n t i.
10.11.6 ABORT
Khi g i ph ng th c chek-in c a N thì s phát sinh l i (ngo i l ). i u này cho th y khi m t Node cha có Node con có thu c tính OnParentVersion có giá tr FORBIDDEN / ABORT thì Node cha đó s khơng đ c quy n check-in.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
10.12 Ví d v m t Repository có h tr t o phiên b n
Phát tri n CMS module cho h th ng Intranet cu Cơng ty TMA
Hình trên mơ t m t repository có h tr versioning và g m 2 workspace là WS1 và WS2. WS2 ch a node x khơng có m t version history nào trong version storage, do đó nó là nonversionable node
Version storage mô t các version history, m i verion history ch a 3 version c a các node 01, 02, và 03.