Phát triển CMS module cho hệ thống intranet cuả công ty TMAReadOnly primaryitem

42 138 0
Phát triển CMS module cho hệ thống intranet cuả công ty TMAReadOnly     primaryitem

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA ReadOnly PrimaryItem SameNameSibs (more ChildNodeDefs) PropertyDef Name Type ValueConstraint DefaultValue AutoCreate Mandatory OnParentVersion ReadOnly PrimaryItem Multiple (more PropertyDefs) … 8.2.4.1 Các kiểu node phụ định nghĩa sẵn Có kiểu node phụ định nghĩa sẵn mix:referenceable mix:versionable mix:versionable kiểu node mix:referenceable mix:referenceable | | mix:versionable Bùi Vĩnh Phú 76 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Một Node có kiểu mixin: referenceable sử dụng cho mục đích : • Nó đích thuộc tính có kiểu REFERENCE • Có nhiều Node cha Một Node có kiểu mix: versionable dùng cho Repository có hỗ trợ việc lưu phiên Node (versioning system) thuộc tính quy định kiểu node thuộc tính đọc 8.2.4.2 Các kiểu node định nghĩa sẵn Mọi kiểu node bắt nguồn từ kiểu nt:base Do đó, Node Reporitory phải có kiểu node nt:base Kiểu node nt:version nt:versionHistory cần thiết có sử dụng phiên Cây sau mô tả cấu trúc thừa kế kiểu node dược định nghĩa sẵn nt:base | | nt:default | | nt:hierarchyElement | | | | nt:file | | | | nt:folder | nt:nodeType | | nt:propertyDef | | nt:childNodeDef | | nt:versionHistory Bùi Vĩnh Phú 77 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA | | nt:version | | nt:query 8.3 Node tham chiếu (Referenceable Nodes) Nét đặc biệt Node tham chiếu sử dụng trường hợp repository có nhiều workspace việc tạo phiên node Một repository có thề có nhiều node tham chiếu, để làm điều này, phải hỗ trợ kiểu mix:refrenceable Node có kiểu mix:referenceable có property mang tên jcr:uuid, property tạo quản lý hệ thống, client đọc thay đối hay xóa property UUID node tham chiếu ấn định hệ thống lúc tạo Trong workspace xác định, không tồn nhiều node có chung UUID Bùi Vĩnh Phú 78 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Workspace Như ta biết, repository bao gồm hay nhiều workspace, workspace chứa node root Repository đơn giản, chứa workspace hay phức tạp, chứa số lượng lớn workspace Sau số mô hình repository 9.1 Repository có workspace Trong trường hợp repository gồm node property Hình 21: Repository có workspace Bùi Vĩnh Phú 79 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 9.2 Repository có nhiều Workspace tương ứng node Trong trường hợp này, node workspace có node tương ứng ( corresponding nodes ) workspace khác chúng chia sẻ UUID Các node tương ứng xem thể node nhiều workspace khác Tuy nhiên workspace, không tồn node có chung UUID Chỉ có node với kiểu mix:refereneable có node tương ứng workspace khác Các node tương ứng cần có chung UUID Do chúng có đường dẫn khác property node khác Khi node tham chiếu (referenceable node) tạo workspace hàm Node.addNode ấn định UUID hệ thống Muốn node có node tương ứng workspace khác, phải nhân ("cloned") từ workspace nguồn đến workspace đích cách sử dụng phương thức : Workspace.clone( String srcAbsPath, String destAbsPath, String destWorkspace, boolean shallow) Phương thức thực nhân từ đường dẫn srcAbsPath workspace nguồn đến đường dẫn destAbsPath workspace đích destWorkspace shallow = false, nhân node property shallow= rue Phương thức clone thực nhân node tham chiếu node không tham chiếu ( nonreferenceable node ), node tham chiếu trì mối quan hệ tương ứng workspace Bùi Vĩnh Phú 80 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Trong trường hợp root node workspace có kiểu mix:referenceable chúng phải có chung UUID Root node workspace tự động tạo workspace tạo Biểu đồ sau mô tả repository có workspace Hình 22: Repository có nhiều workspace Bùi Vĩnh Phú 81 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Trong biểu đồ trên, repository có workspace WS1 WS2 Đường đứt khúc node có mối quan hệ tương ứng Trong workspace có node không xuất workspace lại, node node tham chiếu không nhân hay node không tham chiếu 10 Tạo phiên ( Versioning ) Hệ thống tạo phiên xây dựng dựa node tham chiếu trình bày Trong repository hỗ trợ tạo phiên , workspace chứa versionable node nonversionable node Versionable node có kiểu mix:versionable Kiểu mix:versionable kiểu thừa kế từ kiểu mix:referenceable, node cho phép tạo phiên node tham chiếu có UUID Khả tạo phiên node có nghĩa thời điểm cho trước đó, trạng thái node lưu giữ để phục vụ cho việc phục hồi tương lai Trạng thái lưu lại gọi version hành động lưu lại gọi checking in Version phần version history Trong version history, version hình thành biểu đồ miêu tả mối quan hệ versionable node Các version history lưu version storage Có version storage repository, bên node /jcr:versionStorage lưu workspace Bùi Vĩnh Phú 82 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 10.1 Version History Version History lưu Repository Node có kiểu Node nt:versionHistory Node có kiểu nt:version thêm vào Version History thể Node Workspace thực thao tác lưu phiên (check-in) Khi phiên Node lưu thành phần hay nhiều phiên trước (successor) Do đó, Version History lưu đồ thị Hình 23: Đồ thị mô tả Version History Trong đồ thị dùng để lưu Version History Node VH có kiểu nt:versionHistory Vroot, Va, Vb Vc có kiểu nt:version VH Node cha Node Vroot, Va, Vb Vc; Va, Vb phiên Vroot, tương tự Vc phiên Va Vb Bùi Vĩnh Phú 83 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Trên Version History có Node đóng vai trò phiên ban đầu (Root Version Node) Node tạo tự động Version History tạo đóng vai trò điểm khởi đầu dùng để duyệt qua hết tất phiên khác nằm đồ thị biểu diễn Version History Trong ví dụ phiên ban đầu Version History VH Vroot 10.2 Mối quan hệ versionable node version history Mối quan hệ node version history xây dựng tương ứng thông qua UUID Các node có chung UUID có chung version history Trong workspace có versionable node version history Trong workspace có version history rỗng Và node khả tạo phiên ( nonversionable node ) hiển nhiên version history Khi versionable node tạo ra, version history cho node tự động tạo version storage Một versionable node nhân sang workspace khác, node nhân có chung UUID chung version history với node gốc 10.3 Đồ Thị Biểu Diễn Các Phiên Bản Trên Repository Đồ thị dùng để biểu diễn phiên khác đối tượng Node Repository có cấu trúc sau : • Đồ thị hay nhiều phiên • Đồ thị có phiên ban đầu (Root Version Node) Bùi Vĩnh Phú 84 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA • Phiên ban đầu phiên trước • Những phiên phiên ban đầu phải có nhiều phiên trước • Mỗi phiên có nhiều phiên sau • Mỗi phiên phiên trước 10.4 Phiên Bản Cơ Bản (Base Version) Các Node có UUID Workspace khác xem phiên khác đối tượng Node Repository thể có Version History Tuy nhiên, Version History có nhiều phiên khác thể đối tượng Node chọn cho riêng phiên khác Phiên thể dùng để làm phiên trước mặc định phiên thể tạo Version History 10.5 Khởi Tạo Một Version History Khi Node tạo phiên (Versionable Node) tạo Repository Version History tạo cho Node Lúc tạo Version History có Node có kiểu nt:versionHistory Node có kiểu nt:version đóng vai trò Root Version Ví dụ : xét trường hợp Node N tạo sau • Node M Node cha Node N tạo Node N cách gọi phương thức M.addNode(“N”) Bùi Vĩnh Phú 85 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Ngoài ra, kiện EventType.ITEM_VERSIONED xảy Node tự động tạo phiên Node tạo phiên 11.5.9 Khoá Item Khi Item bị khóa cách gọi phương thức Item.lock kiện sau xảy • Sự kiện LockEvent, ƒ getType() trả EventType.ITEM_LOCKED ƒ getItem() trả Item bị khoá ƒ getLock() trả đối tượng Lock Nếu Node bị khóa bắt buộc Item bị khóa theo kiện phát sinh Item 11.5.10 Mở khóa Item Khi Item mở khóa cách gọi phương thức Item.unlock thời hạn khóa hết hiệu lực kiện sau xảy • Sự kiện LockEvent, ƒ getType() trả EventType.ITEM_UNLOCKED ƒ getItem() trả Item mở khoá ƒ getLock() trả đối tượng Lock sử dụng Nếu Node mở khóa Item khóa theo kiện phát sinh Item Bùi Vĩnh Phú 103 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 12 Vấn đề bảo mật Repository JCR định nghĩa phương thức cho phép nhận biết quyền hạn cho phép phiên làm việc Node hay thuộc tính JCR định nghĩa phương thức cho phép hay từ chối quyền cấp phiên làm việc Các quyền hạn cho phép thao tác Item tương ứng với phiên làm việc định nghĩa số giao diện Permission bao gồm ADD_NODE, SET_PROPERTY, REMOVE_ITEM, READ_ITEM 13 Cơ chế khóa Repository Khi khoá đặt Item Repository người dùng người dùng gọi người sở hữu khoá Item gọi Item bị khoá 13.1 Mức độ khóa Mức độ khoá cho biết khoá mức độ Node thuộc tính hay khoá mức độ Node Nếu mức độ khoá Node điều có nghĩa thực khoá hay mở khoá Node đồng thời việc khoá hay mở khoá thực thuộc tính Node 13.2 Phạm vi khóa Có loại phạm vi khoá khoá độc quyền (Exclusive) khoá chia sẻ (Shared) Bùi Vĩnh Phú 104 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA • Khoá độc quyền có nghĩa người sử dụng thực khoá độc quyền Item người sử dụng khác không quyền thực khoá Item • Khoá chia sẻ có nghĩa người sử dụng thực khoá chia sẻ Item người sử dụng khác không quyền thực khoá độc quyền thực khoá chia sẻ Item 13.3 Loại khóa Loại khoá cho biết khoá ngăn không cho người sử dụng khác (ngoài người sở hữu khoá) thực thao tác Item bị khoá Chằng hạn loại khoá Write ngăn không cho người sử dụng khác ghi lên Item bị khoá Loại khoá Write loại khoá mà JCR định nghĩa sẵn Còn loại khoá khác, chảng hạn Read, Remove JCR không định nghĩa sẵn mà ứng dụng cụ thể phải định nghĩa loại khoá 14 Tìm kiếm nội dung Repository JCR hỗ trợ việc tìm kiếm Repository sử dụng hai ngôn ngữ truy vấn JCRQL XPath Các phương thức dùng để tạo thực thi câu truy vấn định nghĩa giao diện javax.jcr.QueryManager Ngôn ngữ truy vấn JCRQL tương tự ngôn ngữ truy vấn SQL thường sử dụng để tìm kiếm nội dung theo dạng chuỗi giống Search Engine Ngôn ngữ truy vấn XPath JCR tương tự XPath tài liệu XML, cần phải có khung nhìn XML (System View hay Document View, tốt sử dụng Document View) để XPath họat động Bùi Vĩnh Phú 105 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 14.1 Ngôn ngữ truy vấn JCRQL Câu truy vấn sử dụng ngôn ngữ JCRQL phải theo định dạng sau: (các từ khoá SELECT FROM phải viết hoa) query ::= selectclause fromclause [locationclause] [whereclause] [textsearchclause] [orderclause] 14.1.1 Mệnh đề SELECT Mệnh đề SELECT dùng để đưa danh sách tên Node cần truy vấn, sử dụng ký hiệu “*” Node truy vấn selectclause ::= SELECT (* | nodenamelist) nodenamelist ::= nodename {, nodename} nodename ::= /* Tên Node */ 14.1.2 Mệnh đề FROM Mệnh đề FROM dùng để xác định kiểu Node truy vấn Nếu muốn truy vấn kiểu Node sử dụng ký hiêu “*” fromclause ::= FROM (* | nodetypelist) nodetypelist ::= nodetype {, nodetype} nodetype ::= /* Tên kiểu Node*/ 14.1.3 Mệnh đề LOCATION Mệnh LOCATION dùng để giới hạn lại truy vấn phần phân cấp cách sử dụng pattern để đường dẫn Reporitory Bùi Vĩnh Phú 106 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA locationclause ::= LOCATION [depthclause] [followingclause] pathpattern pathpattern ::= plainpath[/] | plainpath[//[plainpath[/]]] plainpath ::= itempattern{/pattern} itempattern ::= * | [*]fragment{fragment} fragment ::= char | char* char ::= /* Bất kỳ ký tự tên Item */ Để hiểu rõ hơn, ta xét ví dụ sau pathpattern : Pattern Selection /press/release Chỉ Item /press/release /press/release/* Mọi Item /press/release /press/release/*/picture Mọit Item có tên picture Item /press/release /press/release// Item /press/release Item phân cấp /press/release /press/release//* Mọit Item phân cấp /press/release, không bao gồm Item /press/release /press/release//picture Mọi Item có tên picture có phân cấp bắt đầu tử /press/release /press/release/*//picture Mọi Item có tên picture có phân cấp bắt đầu tử Item /press/release Bùi Vĩnh Phú 107 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 14.1.3.1 Mệnh đề FOLLOWING followingclause ::= FOLLOWING [CHILDREN] softlinkprops softlinkprops ::= itempattern {, itempattern} Mệnh đề FOLLOWING dùng để thay đổi phạm vi truy vấn xác định pathpattern mệnh đề LOCATION Khi mệnh đề FOLLOWING sử dụng phép toán “//” pathpattern dùng để truy vấn đế Item bên dưói phân cấp Còn sử dụng FOLLOWING sử dụng phép toán “//”, trình truy vấn, gặp thuộc tính có kiểu PATH trình tìm kiếm chuyển hướng sang Item mà PATH tới, sau tiếp tục truy vấn Item theo chế Ví dụ: SELECT myapp:picture FROM * LOCATION FOLLOWING myapp:picturelink /press/releases// Trả Item có tên myapp:picture toàn Reporitory cho Item trỏ tới Property kiểu PATH có tên myapp:picturelink phía phân cấp /press/releases 14.1.3.2 Mệnh đề DEPTH Mệnh đề DEPTH dùng để giới hạn độ sâu truy vấn phân cấp tính từ Item xác định pathpattern mệnh đề LOCATION depthclause ::= DEPTH number number ::= /* Số nguyên kiểu integer */ Bùi Vĩnh Phú 108 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Nếu giá trị number có nghĩa không truy vấn Còn giá trị number < điều có nghĩa độ sâu truy vấn không bị giới hạn Ví dụ: SELECT * FROM * LOCATION DEPTH /press/releases//myapp:picture Sẽ trả Item có tên myapp:picture nhánh /press/releases sâu xuống cấp 14.1.4 Mệnh đề WHERE Mệnh đề WHERE cho phép giới hạn trả Node cho miền giá trị thuộc tính Node trả thoả điều kiện ràng buộc mệnh đề WHERE whereclause ::= WHERE expression expression ::= property op value | property LIKE pattern | expression AND expression | expression OR expression | NOT expression op ::= = | > | < | >= | [...]... fromclause ::= FROM (* | nodetypelist) nodetypelist ::= nodetype {, nodetype} nodetype ::= /* Tên của kiểu Node*/ 14.1.3 Mệnh đề LOCATION Mệnh đều LOCATION dùng để giới hạn lại chỉ truy vấn trên một phần của cây con trong cây phân cấp bằng cách sử dụng pattern để chỉ đường dẫn trên Reporitory Bùi Vĩnh Phú 106 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA locationclause ::=... Property mới được thêm vào Repository thì các sự kiện sau sẽ xảy ra: Bùi Vĩnh Phú 99 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA • Sự kiện ChangeEvent tương ứng với Item mới được thêm vào Trong đó ƒ getType() trả về EventType.ITEM_ADDED ƒ getItem() trả về Item vừa được thêm vào ƒ getOldItem() trả về giá trị null • Sự kiện ChangeEvent tương ứng với Node cha Trong đó ƒ getType()... được khóa theo thì sự kiện này cũng phát sinh đối với các Item con Bùi Vĩnh Phú 103 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 12 Vấn đề bảo mật trên Repository JCR định nghĩa các phương thức cho phép nhận biết các quyền hạn được cho phép của một phiên làm việc trên một Node hay một thuộc tính JCR cũng định nghĩa các phương thức cho phép hay từ chối các quyền được cấp... PropertyDef Name jcr:versionHistory Type REFERENCE ValueConstraint "nt:versionHistory" DefaultValue null AutoCreate true Mandatory true OnParentVersion COPY ReadOnly true PrimaryItem false Multiple false PropertyDef Name jcr:baseVersion Type REFERENCE ValueConstraint "nt:version" DefaultValue null Bùi Vĩnh Phú 89 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA AutoCreate true Mandatory... Bùi Vĩnh Phú 102 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Ngoài ra, sự kiện EventType.ITEM_VERSIONED cũng xảy ra đối với mỗi Node con tự động tạo phiên bản của Node tạo phiên bản 11.5.9 Khoá một Item Khi một Item bị khóa bằng cách gọi phương thức Item.lock thì sự kiện sau sẽ xảy ra • Sự kiện LockEvent, trong đó ƒ getType() trả về EventType.ITEM_LOCKED ƒ getItem() trả... Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 10.10 Các Node Có Thể Tạo Phiên Bản Trên Repository JCR quy định một Node có thể tạo ra phiên bản của nó trên Repository khi và chỉ khi nó sở hữu kiểu Node phụ mixin:versionable Những mô tả về kiểu Node phụ này được thể hiện dưới đây : NodeTypeName mix:versionable Supertypes mix:referenceable IsMixin true PropertyDef Name jcr:versionHistory... getType() trả về EventType.ITEM_ADDED ƒ getItem() trả về Item vừa thêm ƒ getOldItem() trả về giá trị null • Sự kiện ChangeEvent tương ứng với mỗi Node cha của mỗi Item thêm vào, trong đó: ƒ getType() trả về EventType.ITEM_CHANGED ƒ getItem() trả về Node cha ƒ getOldItem() trả về bản sao của Node cha trước khi thêm Item Bùi Vĩnh Phú 101 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công. .. 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 Bùi Vĩnh Phú 94 Đặng Đình Vương 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 Hình 24:... đến phương thức N.checkin, khi đó sẽ phát sinh một loạt các sự kiện sau • Một Node mới V có kiểu nt:version sẽ được tạo ra và thêm vào làm Node con của Node VH (Node đại diện cho Version History của N trên Repository và được tham chiếu đến bởi thuộc tính jcr:versionHistory của N) Bùi Vĩnh Phú 86 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA • Base Version B của N (Node... giá trị của Property, giá trị chuẩn có kiểu String */ pattern ::= "likepattern" | likepattern likepattern ::= (wildcard | [wildcard]likefragment{likefragment}) likefragment ::= likechar | likechar wildcard wildcard ::= * | ? | % | _ char ::= /* Bất kì ký tự nào trong chuỗi đại diện cho một value*/ Bùi Vĩnh Phú 109 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Ví dụ: Câu ... Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Ta ánh xạ qua database sử dụng bảng, bảng NODES bảng PROPERTIES Bùi Vĩnh Phú 114 Đặng Đình Vương Phát triển CMS module cho hệ thống. .. cho hệ thống Intranet cuả Công ty TMA Chương So sánh số giải pháp CMS mã nguồn mở phổ biến Bùi Vĩnh Phú 115 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Giới thiệu... Xu hướng phát triển hệ CMS 1.1.1 Xu hướng mặt thương mại Đa số công ty phần mềm phát triển hệ CMS để bán cho công ty có nhu cầu Do đó, lãnh vực có tiềm công ty chuyên cung cấp giải pháp CMS thu

Ngày đăng: 07/12/2015, 20:07

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan