Thuộc Tính OnParentVersion

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)

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

10.11Thuộc 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

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. (adsbygoogle = window.adsbygoogle || []).push({});

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ị

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA

10.12 Ví d v mt Repository có h tr to phiên bn

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.

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)