Repository có nhiều Workspace và sự tương ứng các node

Một phần của tài liệu Xây dựng CMS MODULE cho hệ thống INTRANET của công ty TMa (Trang 100 - 105)

5. Sự sắp xếp các Item con

9.2 Repository có nhiều Workspace và sự tương ứng các node

Trong trườnghợp này,mộtnode trongmộtworkspacecóthểcócácnodetương ứng ( corresponding nodes ) trong các workspace khác và chúng cùng chia sẻ một

UUID. Các node tương ứng này có thể được xem như là thể hiện của cùng một node trênnhiềuworkspacekhácnhau.Tuy nhiêntrongmộtworkspace,khôngtồntại2 node cócùngchungmộtUUID.

Chỉ có các node với kiểu mix:refereneable mới có thể có các node tương ứng trêncácworkspacekhácnhau.

Các node tương ứng này chỉ cần có chung một UUID. Do đó chúng có thể có cácđườngdẫnkhácnhaucũngnhưcácpropertyvàcácnodeconkhácnhau.

Khimộtnodethamchiếumới(referenceablenode)đượctạoratrongworkspace bởi hàmNode.addNode thìnósẽđượcấnđịnhmộtUUIDmớibởihệthống. Muốnmột node có một node tương ứng trong một workspace khác, nó phải được nhân bản ("cloned")từworkspacenguồnđếnworkspaceđíchbằngcáchsửdụngphươngthức:

Workspace.clone(StringsrcAbsPath,StringdestAbsPath,

StringdestWorkspace,booleanshallow) Phương thức này thực hiện nhân bản cây con từ đường dẫn srcAbsPath trong workspace nguồn đến đường dẫn destAbsPath trong workspace đích destWorkspace nếushallow=false,hoặcchỉnhânbảnmộtnodevàpropertycủanónếushallow=rue.

Phương thức clone thực nhân bản cả những node tham chiếu và những node không tham chiếu ( nonreferenceable node ), nhưng chỉ những node tham chiếu mới duytrìmốiquanhệtươngứngcủanógiữacácworkspace.

Bùi Vĩnh Phú 80 Đặng Đình

Vương

PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA

Trong trường hợp các root node trong các workspace có kiểu là mix:referenceable thì chúng phải có chung một UUID. Root node của một workspace sẽtựđộngđượctạorakhiworkspaceđóđượctạo.

Biểuđồsaumôtảmộtrepositorycó2workspace

Hình 22: Repository có nhiều workspace

BùiVĩnhPhú 81 ĐặngĐình

Vương

PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA

Trongbiểuđồtrên,repositorycó2workspacelàWS1vàWS2.Đườngđứtkhúc chỉ ra các node có mối quan hệ tương ứng. Trong mỗi workspace có các node không xuất hiện trên workspace còn lại, các node này có thể là các node tham chiếu nhưng

khôngđượcnhânbảnhaycácnodekhôngthamchiếu.

10. Tạo phiên bản ( Versioning )

Hệ thốngtạophiên bảnđược xâydựngdựa trênnodetham chiếuđã trìnhbàyở trên.

Trong một repository hỗ trợ tạo phiên bản , workspace có thể chứa cả versionable node và nonversionable node. Versionable node có kiểu

mix:versionable. Kiểu mix:versionable là kiểu con thừa kế từ kiểu mix:referenceable, dođómộtnodechophéptạophiênbảnthìnólànodethamchiếuvàcómộtUUID.

Khảnăngcóthểtạophiênbảncủanodecónghĩalàtạibấtkỳmộtthờiđiểmcho trước nào đó, trạng thái của node có thể được lưu giữ để phục vụ cho việc phục hồi trong tương lai. Trạng thái lưu lại này được gọi là một version và hành động lưu lại đượcgọilàcheckingin.

Versionlà mộtphầncủaversion history.Trong mộtversionhistory, cácversion hìnhthànhmộtbiểuđồmiêutảmốiquanhệgiữacácversionablenode.

Cácversion historylưutrongversion storage.Có mộtversionstoragetrongmột repository, nólàmột câyconbên dướinode/jcr:versionStorage vàđượclưu trongmỗi workspace.

BùiVĩnhPhú 82 ĐặngĐình

Vương

PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA

Version History được lưu trong Repository như là một Node có kiểu Node là nt:versionHistory vàmộtNodecókiểu lànt:versionsẽđược thêmvàoVersionHistory khi một trong những thể hiện của Node trên các Workspace thực hiện thao tác lưu phiên bản (check-in). Khi đó phiên bản mới của Node sẽ được lưunhư là thành phần tiếp theocủamột haynhiều phiênbảntrước đó(successor). Do đó,Version Historysẽ đượclưunhưlàmộtđồthị.

Hình23: ĐồthịmôtảmộtVersionHistory

Trong đồ thị dùng để lưu Version History trên thì Node VH có kiểu là nt:versionHistory và Vroot, Va, Vb và Vc có kiểu là nt:version. VH là Node cha của cácNodeVroot, Va,VbvàVc;trong khiVa,VblàphiênbảnkếtiếpcủaVroot, tương tựVclàphiênbảnkếtiếpcủaVavàVb.

Bùi Vĩnh Phú 83 Đặng Đình

Vương

PháttriểnCMSmodulechohệthốngIntranetcuảCôngtyTMA

Trên Version History luôn có một Node đóng vai trò như làphiên bản ban đầu (RootVersion Node). Nodenàyđược tạoratựđộng khiVersionHistorymớiđược tạo

ra và đóng vai trò là điểm khởiđầu dùng để duyệt qua hết tất cả các phiên bản khác nằm trên đồ thịbiểu diễn VersionHistory. Trong ví dụ trên thìphiên bản ban đầu của VersionHistoryVHlàVroot.

Một phần của tài liệu Xây dựng CMS MODULE cho hệ thống INTRANET của công ty TMa (Trang 100 - 105)