Đề tài Xây dựng CMS module cho hệ thống intranet của công ty TMA

Đểthực hiện theo cách tiếp cận thứ2 vừa nêu trên, chúng ta cần phải thực hiện các bước chính sau : • Tạo ra một dựán J2EE dựa trên mã nguồn của Magnolia CMS • Chuẩn hoá dựán J2EE này theo chuẩn JSR 168 • Tích hợp hệthống bảo mật của Magnolia vào hệthống bảo mật của portal hiện tại của TMA : nguyên nhân là Magnolia CMS được xây dựng đểhoạt động nhưmột ứng dụng độc lập, do đó, hệCMS này có hệthống bảo mật riêng của nó. Ngoài ra, portal của TMA cũng có hệthống bảo mật riêng của portal. Do đó, khi người sửdụng muốn sửdụng hệCMS này thì họcần phải đăng nhập đến 2 lần : 1 lần để được phép vào portal và 1 lần nữa để được phép vào hệCMS. Mà trong portal thì phải hỗtrợ cơchế single sign-on, cơchếcho phép người sửdụng chỉphải đăng nhập 1 lần vào portal đểcó thểsửdụng mọi chức năng của portal.

pdf167 trang | Chia sẻ: haianh_nguyen | Lượt xem: 1122 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng CMS module cho hệ thống intranet của công ty TMA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ao chép và xoá bỏ Item. 11.5.8 Tạo Phiên Bản Của Item Khi một phiên bản của Item được tạo thì sự kiện sau sẽ xảy ra • Sự kiện VersionControlEvent tương ứng với phiên bản mới, trong đó: ? getType() trả về EventType.ITEM_VERSIONED ? getItem() trả về Node tạo phiên bản ? getVersionHistory() trả về Version History của Node tạo phiên bản ? getVersion() trả về phiên bản mới vừa được tạo Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 103 Đặng Đình Vương 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ả về Item bị khoá. ? getLock() trả về đối tượng Lock. Nếu một Node bị khóa và bắt buộc các Item con cũng bị khóa theo thì sự kiện này cũng phát sinh đối với các Item con. 11.5.10 Mở khóa một Item Khi một Item được mở khóa bằng cách gọi phương thức Item.unlock hoặc thời hạn khóa hết hiệu lực thì sự kiện sau sẽ xảy ra • Sự kiện LockEvent, trong đó ? getType() trả về EventType.ITEM_UNLOCKED. ? getItem() trả về Item được mở khoá. ? getLock() trả về đối tượng Lock đã sử dụng. Nếu một Node được mở khóa và các Item con cũng được khóa theo thì sự kiện này cũng phát sinh đối với các Item con. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 104 Đặng Đình Vương 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 trên phiên làm việc. Các quyền hạn cho phép thao tác trên Item tương ứng với một phiên làm việc được định nghĩa bằng các hằng số trong giao diện Permission bao gồm ADD_NODE, SET_PROPERTY, REMOVE_ITEM, READ_ITEM. 13. Cơ chế khóa trên Repository Khi một khoá được đặt trên một Item của Repository bởi một người dùng thì người dùng này gọi là người sở hữu khoá và Item này gọi là Item bị khoá. 13.1 Mức độ khóa Mức độ khoá cho biết có thể khoá trên mức độ Node và thuộc tính hay chỉ có thể khoá trên mức độ Node thôi. Nếu mức độ khoá là chỉ trên Node thì điều này cũng có nghĩa là khi thực hiện khoá hay mở khoá trên Node thì đồng thời việc khoá hay mở khoá này cũng được thực hiện trên những thuộc tính của Node đó. 13.2 Phạm vi khóa Có 2 loại phạm vi khoá là khoá độc quyền (Exclusive) và khoá chia sẻ (Shared). Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 105 Đặng Đình Vương • Khoá độc quyền có nghĩa là khi một người sử dụng đã thực hiện khoá độc quyền trên Item rồi thì những người sử dụng khác không được quyền thực hiện bất kỳ khoá nào trên Item đó nữa. • Khoá chia sẻ có nghĩa là khi một người sử dụng đã thực hiện khoá chia sẻ trên Item rồi thì những người sử dụng khác không được quyền thực hiện khoá độc quyền nhưng có thể thực hiện khoá chia sẻ trên Item đó. 13.3 Loại khóa Loại khoá cho biết khoá đó ngăn không cho những người sử dụng khác (ngoài người sở hữu khoá) thực hiện thao tác nào trên Item bị khoá. Chằng hạn khi loại khoá là Write thì sẽ ngăn không cho những người sử dụng khác ghi lên Item bị khoá. Loại khoá Write này cũng chính là loại khoá duy nhất mà JCR định nghĩa sẵn. Còn các loại khoá khác, chảng hạn Read, Remove...thì JCR không định nghĩa sẵn mà từng ứng dụng cụ thể phải định nghĩa các loại khoá này. 14. Tìm kiếm nội dung trên Repository JCR hỗ trợ việc tìm kiếm trên Repository sử dụng hai ngôn ngữ truy vấn là JCRQL và XPath. Các phương thức dùng để tạo và thực thi câu truy vấn được định nghĩa trong giao diện javax.jcr.QueryManager. Ngôn ngữ truy vấn JCRQL tương tự như ngôn ngữ truy vấn SQL và thường được sử dụng để tìm kiếm nội dung theo dạng chuỗi giống như các Search Engine. Ngôn ngữ truy vấn XPath trên JCR tương tự như XPath trên tài liệu XML, do đó cần phải có khung nhìn XML (System View hay Document View, tốt nhất là sử dụng Document View) để XPath họat động. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 106 Đặng Đình Vương 14.1 Ngôn ngữ truy vấn JCRQL Câu truy vấn sử dụng ngôn ngữ JCRQL phải theo đúng định dạng sau: (các từ khoá như SELECT và 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 ra danh sách tên các Node cần truy vấn, hoặc nếu sử dụng ký hiệu “*” thì mọi Node đều được truy vấn. selectclause ::= SELECT (* | nodenamelist) nodenamelist ::= nodename {, nodename} nodename ::= /* Tên của một Node */ 14.1.2 Mệnh đề FROM Mệnh đề FROM dùng để xác định chỉ các kiểu Node nào được truy vấn. Nếu muốn truy vấn mọi kiểu của Node thì sử dụng ký hiêu “*”. 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. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 107 Đặng Đình Vương locationclause ::= LOCATION [depthclause] [followingclause] pathpattern pathpattern ::= plainpath[/] | plainpath[//[plainpath[/]]] plainpath ::= itempattern{/pattern} itempattern ::= * | [*]fragment{fragment} fragment ::= char | char* char ::= /* Bất kỳ ký tự nào đúng trong một tên của Item */ Để hiểu rõ hơn, ta xét ví dụ sau về pathpattern : Pattern Selection /press/release Chỉ Item /press/release /press/release/* Mọi Item con của /press/release /press/release/*/picture Mọit Item có tên picture là con của các Item con của /press/release /press/release// Item /press/release và mọi Item trong cây phân cấp bắt đầu từ /press/release /press/release//* Mọit Item trong cây phân cấp bắt đầu từ /press/release, không bao gồm Item /press/release /press/release//picture Mọi Item có tên picture có trong cây phân cấp bắt đầu tử /press/release /press/release/*//picture Mọi Item có tên picture có trong cây phân cấp bắt đầu tử các Item con của /press/release Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 108 Đặng Đình Vương 14.1.3.1 Mệnh đề FOLLOWING followingclause ::= FOLLOWING [CHILDREN] softlinkprops softlinkprops ::= itempattern {, itempattern} Mệnh đề con FOLLOWING dùng để thay đổi phạm vi truy vấn được xác định bởi pathpattern trong mệnh đề LOCATION. Khi không có mệnh đề con FOLLOWING thì sử dụng phép toán “//” trong pathpattern dùng để truy vấn đế mọi Item con bên dưói trong cây phân cấp. Còn khi sử dụng FOLLOWING thì khi sử dụng phép toán “//”, trong quá trình truy vấn, khi gặp thuộc tính có kiểu PATH thì quá trình tìm kiếm sẽ được chuyển hướng sang Item mà PATH đó chỉ tới, sau đó tiếp tục truy vấn bắt đầu từ Item đó theo cơ chế trên. Ví dụ: SELECT myapp:picture FROM * LOCATION FOLLOWING myapp:picturelink /press/releases// Trả về các Item có tên là myapp:picture trên toàn bộ Reporitory sao cho các Item này được trỏ tới bởi các Property kiểu PATH có tên myapp:picturelink ở phía dưới cây phân cấp bắt đầu từ /press/releases. 14.1.3.2 Mệnh đề DEPTH Mệnh đề con DEPTH dùng để giới hạn độ sâu truy vấn trong cây phân cấp tính từ Item được xác định bởi pathpattern trong mệnh đề LOCATION. depthclause ::= DEPTH number number ::= /* Số nguyên kiểu integer */ Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 109 Đặng Đình Vương Nếu giá trị của number là 0 thì có nghĩa là không truy vấn gì cả. Còn nếu giá trị của number < 0 thì điều đó có nghĩa là độ sâu truy vấn không bị giới hạn. Ví dụ: SELECT * FROM * LOCATION DEPTH 2 /press/releases//myapp:picture Sẽ trả về mọi Item có tên myapp:picture trong nhánh cây con của /press/releases và đi sâu xuống dưới 2 cấp. 14.1.4 Mệnh đề WHERE Mệnh đề WHERE cho phép giới hạn chỉ trả về các Node sao cho miền giá trị của các thuộc tính trong các Node trả về này thoả điều kiện ràng buộc trong mệnh đề WHERE. whereclause ::= WHERE expression expression ::= property op value | property LIKE pattern | expression AND expression | expression OR expression | NOT expression op ::= = | > | = | <= property := /* Tên của Property */ value := /* Một 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*/ Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 110 Đặng Đình Vương Ví dụ: Câu truy vấn sau : SELECT myapp:image FROM * WHERE height < 100 AND keyword LIKE "*apple*" Sẽ trả về tất cả các Node tên là myapp:image sao cho thuộc tính height của nó có giá trị <100 và thuộc tính keyword của nó có chứa chuỗi “apple”. 14.1.5 Mệnh đề SEARCH Mệnh đề SEARCH cho phép đưa vào câu truy vấn ngôn ngữ tìm kiếm đầy đủ theo từ. Cú pháp cuả mệnh đề SEARCH được mô tả dưói đây: textsearchclause ::= TEXTSEARCH searchexp searchexp ::= simplesearchexp | customsearchexp | "simplesearchexp" | "customsearchexp" simplesearchexp ::= [-]term {[OR][-]term} term ::= word | 'word {word}' word ::= /* Một chuỗi không có khoảng trắng)*/ customsearchexp ::= /* Một phần mở rộng được định nghĩa bởi các chuẩn khác */ Mọi ứng dụng được xây dựng theo chuẩn JSR-170 đều phải hỗ trợ ít nhất simple-search engine. Đây là kiểu tìm kiếm theo chuỗi thường sử dụng trong các Search Engine như Google hay Yahoo như được định nghĩa trong simplesearchexp như trên. Cú pháp của simplesearchexp này có thể được mô tả như sau: Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 111 Đặng Đình Vương • Khoảng trắng giữa các từ khoá tìm kiếm (Term) được hiểu như toán tử AND. • Các từ khoá bị loại trừ trong kết quả tìm kiếm được thêm vào dấu “-” phía trước từ khoá đó. Nghĩa là kết quả tìm kiếm không được chứa những từ khoá bị loại trừ này. • Mỗi từ khoá tìm kiếm có thể chỉ bao gồm một từ hay là một nhóm các từ và được giới hạn bởi dấu nháy đơn “ ' ”. • Toàn bộ simplesearchexp có thể được giới hạn bở dấu nháy đôi “ “ ” để có thể chứa ký tự trắng (khoảng trắng). • Trong simplesearchexp, nếu muốn sử dụng ký hiệu “ ' ”, “ “ ”, “\” hay “-” theo ý nghĩa thông thường thì phải sử dụng thêm ký hiệu “\” theo dạng “ \' ”, “ \“ ”, “\\” hay “\-”. • Phạm vi của mệnh đề SEARCH là giao của 2 tập hợp: • Tập giá trị của những thuộc tính con của các Node được xác định bởi các mệnh đề khác trong câu truy vấn JCRQL (chẳng hạn mệnh đề SELECT, FROM, LOCATION, WHERE ...). 14.1.6 Mệnh đề ORDER BY orderclause ::= ORDER BY propname {, propname} propname ::= /* Tên của một Property */ Mệnh đề ORDER BY dùng để sắp xếp kết quả câu truy vấn theo giá trị của một hay nhiều thuộc tính. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 112 Đặng Đình Vương 15. Một số ví dụ về việc cài đặt JCR 15.1 JCR cài đặt bên trên File System Giả sử ta có cấu trúc file như sau : Một JCR được ánh xạ từ hệ thống file trên như sau : Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 113 Đặng Đình Vương 15.2 JCR cài đặt bên trên một Database Giả sử từ một cấu trúc repository như sau Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 114 Đặng Đình Vương Ta có thể ánh xạ qua database sử dụng 2 bảng, bảng NODES và bảng PROPERTIES Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 115 Đặng Đình Vương Chương 7 So sánh một số giải pháp CMS mã nguồn mở phổ biến Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 116 Đặng Đình Vương 1. Giới thiệu các giải pháp hiện tại 1.1 Xu hướng phát triển của các hệ CMS 1.1.1 Xu hướng về mặt thương mại Đa số các công ty phần mềm đều phát triển các hệ CMS để bán cho các công ty có nhu cầu. Do đó, lãnh vực này rất có tiềm năng và các công ty chuyên cung cấp các giải pháp CMS thu được rất nhiều lợi nhuận. Các hệ CMS được tạo ra ngày càng dễ sử dụng. Xu hướng này nhằm lôi kéo nhiều hơn nữa các công ty mua các giải pháp CMS để sử dụng cho các web site của họ. Mọi thao tác xử lý trên hệ CMS cần phải thân thiện với người sử dụng, ngay cả với các nhân viên của các doanh nghiệp hay các toà soạn báo là những người không rành rẽ lắm về tin học. Việc cấu hình các hệ CMS để đưa vào một hệ thống có sẵn cũng được tối ưu hoá nhằm giảm thời gian và công sức trong giai đoạn triển khai hệ thống đến người sử dụng cuối. Khi một công ty tin học ký một hợp đồng để phát triển một hệ CMS, họ có khuynh hướng sử dụng một mã nguồn mở và miễn phí cho công việc của họ, thay vì phải mua một giải pháp và sửa đổi mã nguồn của giải pháp để đáp ứng nhu cầu khách hàng. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 117 Đặng Đình Vương 1.1.2 Xu hướng về công nghệ, kỹ thuật Bên cạnh các công ty phát triển các hệ CMS với mục tiêu thương mại, vẫn có các tổ chức, các lập trình viên thích thú với việc phát triển các hệ CMS với mục đích phi thương mại. Do đó, chúng ta có thể nhận thấy một số xu hướng sau: • Phát triển các hệ CMS mã nguồn mở và miễn phí. • Sử dụng ngày càng nhiều các thành phần miễn phí vào các hệ CMS, ví dụ: JBoss (application server miễn phí), MySQL (hệ quản trị cơ sở dữ liệu miễn phí), Linux (hệ điều hành miễn phí), Java (ngôn ngữ lập trình miễn phí)… • Các hệ CMS có thể hoạt động trên nhiều platform khác nhau: xu hướng này giúp cho các hệ CMS có thể tương thích với nhiều hệ điều hành khác nhau. • Cung cấp ngày càng nhiều sự hỗ trợ cho người sử dụng cuối. ? Do internet phát triển ngày càng nhanh nên số lượng người sử dụng trong hệ CMS ngày càng nhiều. ? Cho phép cung cấp nhiều chức năng hơn cho các tổ chức có nhiều nhân viên. • Ngày càng tiện dụng: ? Hỗ trợ cơ chế drag ‘n’ drop. ? Hỗ trợ cơ chế WYSIWYG. • Dễ tích hợp các modules khác vào hệ CMS: giúp cho việc mở rộng dễ dàng hệ CMS khi có nhu cầu. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 118 Đặng Đình Vương 1.2 So sánh các giải pháp CMS thông dụng 1.2.1 Tiêu chí lựa chọn các giải pháp CMS để so sánh Do đây là một CMS module được xây dựng cho công ty TMA nên chúng tôi chỉ chọn so sánh một số giải pháp CMS đáp ứng được yêu cầu của công ty. Nghĩa là các hệ CMS này phải có ít nhất các đặc điểm sau: • Mã nguồn mở: đặc điểm này cho phép sửa đổi mã nguồn không bị ràng buộc để đáp ứng tốt nhất yêu cầu đề ra. • Mã nguồn miễn phí. • Mã nguồn phải được lập trình bằng Java và sử dụng các công nghệ của Java: nguyên nhân do portal hiện tại của công ty được lập trình bằng Java và yêu cầu đặt ra là phải xây dựng hệ CMS dưới dạng portlet để tích hợp vào portal hiện tại. Do đó, giải pháp CMS phải được viết bằng Java. 1.2.2 Các tiêu chí so sánh Chúng tôi so sánh các giải pháp CMS mã nguồn mở và lập trình bằng Java dựa trên các khía cạnh sau: • Yêu cầu hệ thống • Bảo mật • Tiện dụng • Hiệu suất • Tính khả chuyển • Khả năng quản lý • Các hỗ trợ khác Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 119 Đặng Đình Vương 1.2.2.1 Yêu cầu hệ thống Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Application Server TomCat (Built-in) J2EE TomCat Hệ quản trị cơ sở dữ liệu MySQL MySQL Postgres JCR MySQL Oracle MSSQL Hệ điều hành Mọi Mọi Mọi Mọi Ngôn ngữ lập trình Java Java Java Java 1.3+ Web server Mọi Mọi Mọi TomCat Apache IIS Bảng 4: So sánh yêu cầu hệ thống của một số CMS 1.2.2.2 Bảo mật Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Quản lý quyền truy cập Có Có Có Có Lưu thông tin đăng nhập Không Không Không Không Quản lý phiên làm việc Không Không Có Không Tương thích với SSL Không Có Có Không Xác nhận bằng email Không Có Không Không Bảng 5: So sánh tính bảo mật của một số CMS Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 120 Đặng Đình Vương 1.2.2.3 Tiện dụng Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Hỗ trợ cơ chế drag’n’drop Không Không Có Không Thay đổi kích cỡ ảnh Không Không Có Không Phục hồi lại thao tác trước đó Không Có Có Không Hỗ trợ WYSIWYG Có Có Có Có Bảng 6: So sánh tính tiện dụng của một số CMS 1.2.2.4 Hiệu suất Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Hỗ trợ lưu trữ dữ liệu tạm thời (cache) cho toàn bộ hệ thống Không Có Có Không Hỗ trợ lưu trữ dữ liệu tạm thời cho trang web Có Có Có Không Bảng 7: So sánh hiệu suất hoạt động của một số CMS Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 121 Đặng Đình Vương 1.2.2.5 Tính khả chuyển Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Cho phép thêm thông tin của người sử dụng Có Không Không Không Hỗ trợ đa ngôn ngữ Không Có Có Không Cho phép cơ sở dữ liệu phân tán Không Có Có Không Bảng 8: So sánh tính khả chuyển của một số CMS 1.2.2.6 Khả năng quản lý Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Lập lịch cho nội dung Có Không Không Không Quản lý trực tiếp từng phần trang web Không Có Có Không Phân loại nội dung Không Có Có Không Hỗ trợ theme Không Có Giới hạn Không Quản lý template Không Không Có Giới hạn Bảng 9: So sánh khả năng quản lý của một số CMS Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 122 Đặng Đình Vương 1.2.2.7 Các hỗ trợ khác Cofax 2.0 Daisy 1.1 Magnolia 2.1 OpenCMS 5.0 Xuất dữ liệu dạng RSS Có Không Giới hạn Không Hỗ trợ upload dữ liệu thông qua FTP Giới hạn Không Không Không Hỗ trợ UTF-8 Không Có Có Không Tuân theo XHTML Không Không Có Không Bảng 10: So sánh các khả năng hỗ trợ khác của một số CMS Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 123 Đặng Đình Vương 2. Mô tả các giải pháp đã so sánh 2.1 Giải pháp Cofax 2.0 Hình 25: Giao diện Cofax Cofax là một CMS hỗ trợ mạnh về văn bản và đa phương tiện. Giải pháp này được phát triển ban đầu bởi Knight Ridder để đơn giản hoá việc thể hiện và đẩy nhanh tốc độ xuất bản các thông tin, sự kiện trên tờ báo điện tử của họ. Giải pháp này đã được sử dụng bởi nhiều tờ báo điện tử lớn như : Philadelphia Inquirer News, Philadelphia Daily News... Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 124 Đặng Đình Vương Hiện nay, Cofax được sử dụng bởi rất nhiều tổ chức trên thế giới dưới dạng một CMS mã nguồn mở. Giải pháp này sử dụng Java, cơ sở dữ liệu MySQL và XML để phát triển. Đây là một giải pháp được thiết kế theo hướng đối tượng. Trong đó, mỗi module độc lập với module khác. Điều này cho phép thay đổi một module không phù hợp bằng một module khác thích hợp hơn. Ngoài ra, điều này còn giúp cho việc cấu hình một cách độc lập các module với nhau. Kiến trúc hệ thống của Cofax bao gồm 4 tầng chính như sau : • Hệ thống quản lý giao tác. ? Cofax sử dụng các lớp của Java để nhập dữ liệu dưới dạng XML, sau đó lưu dữ liệu này vào trong Repository của Cofax. ? Hệ thống này xử lý các giao tác bằng cách trao đổi các gói. • Repository của Cofax ? Repository của Cofax được đặt trên một tầng riêng rẽ và cung cấp các APIs cho các tầng khác có thể sử dụng các chức năng của nó. ? Theo thiết kế, tầng này chịu trách nhiệm giao tiếp với cơ sở dữ liệu, như : Oracle, Sybase, Object Store, XML... • Hệ thống CMS : tầng này có thể hỗ trợ ASP, JSP hay Servlet • Hệ thống trình diễn nội dung : tầng này có thể hỗ trợ nhiều ngôn ngữ thể hiện cho các template Trong các tầng vừa nêu trên, người ta sử dụng thư viện các lớp chia sẻ của Java cho các chức năng của chúng. Do đó, khi lập trình viên triển khai hay sửa đổi một chức năng, họ có thể thao tác chỉ trên thư viện đó mà không cần thay đổi nhiều mã nguồn. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 125 Đặng Đình Vương 2.2 Giải pháp Daisy 1.1 Hình 26: Giao diện Daisy Hệ thống CMS này bao gồm một Repository server có thể truy cập được bằng cách sử dụng giao thức HTTP. Daisy được phát triển đầu tiên bởi Schaubroeck, sau đó giải pháp này được phát triển bởi Outerthought, trung tâm hỗ trợ mã nguồn mở dưới dạng Java và XML. Trung tâm Outerthought có nhiều kinh nghiệm trong việc phát triển các công cụ mã nguồn mở, và các công cụ này được sử dụng để phát triển các ứng dụng có tính chất thương mại. Vì lý do này, các lập trình viên không những sử dụng mã nguồn của Cofax trong ứng dụng của mình mà họ còn ra sức chia sẻ kinh nghịêm để cùng nhau phát triển giải pháp này. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 126 Đặng Đình Vương Giải pháp này bao gồm 2 thành phần chính như sau : • Repository chứa nội dung. • Giao diện web. 2.2.1 Repository chứa nội dung Thành phần này của Daisy bao gồm những đặc điểm sau : • Lưu trữ và phục hồi dữ liệu. • Mỗi trang web cho phép chứa nhiều phần và nhiều paragraph. Loại trang web sẽ định nghĩa các phần và các paragraph mà nó cần có. • Trang web có thể chứa hình ảnh, tài liệu PDF hay XML. • Mọi trang và mọi tài liệu đều được lưu trong một vùng lưu dữ liệu duy nhất và vùng lưu dữ liệu này không có cấu trúc cây thư mục. Mỗi trang và tài liệu được xác định bởi một định danh duy nhất. • Dữ liệu được lưu trữ trong hệ quản trị cơ sở dữ liệu MySQL. Hiện nay, Daisy đã hỗ trợ hệ quản trị cơ sở dữ liệu PostgreSQL. 2.2.2 Giao diện web Thành phần này của Daisy bao gồm những đặc điểm sau : • Môi trường biên soạn nội dung trang web WYSIWYG. ? Hỗ trợ trình duyệt Internet Explorer và Mozilla/Firefox ? Sử dụng các hình ảnh trong Repository của Daisy hay tải các hình ảnh lên và sử dụng • Nội dung các trang web được trình bày dưới dạng cây để duyệt dễ dàng. • Hỗ trợ sửa đổi nội dung ngay trên cây hiển thị các trang web. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 127 Đặng Đình Vương • Cung cấp cơ chế tìm kiếm. ? Sử dụng Search Engine giống như của Yahoo và Google. ? Hỗ trợ tìm kiếm theo ngôn ngữ định nghĩa của riêng Daisy. ? Các trang web sử dụng template dựa trên XSLT. ? Cho phép thêm các ghi chú vào tài liệu. 2.3 Giải pháp Magnolia 2.1 Hình 27: Giao diện Magnolia Magnolia là hệ CMS mã nguồn mở có hõ trợ chuẩn JSR 170, chuẩn bao gồm những API hỗ trợ cho các thao tác trên Repository chứa dữ liệu của Java. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 128 Đặng Đình Vương Giải pháp này có thể hoạt động trên mọi hệ điều hành mà chỉ cần cài đặt JDK 1.4.1 trở lên. Sở dĩ làm được điều này do giải pháp này được phát triển dựa trên Java và công nghệ XML Các template của Magnolia được xây dựng dựa trên các tập tin JSP và các thẻ quy định. Magnolia hoạt động trên một server J2EE. Giải pháp này được phát triển đầu tiên bởi công ty Obinary và sau đó được phát triển bởi Magnolia International. Magnolia hỗ trợ rất nhiều ngôn ngữ như : Anh, Pháp, Trung Quốc, Đức, Ý, Nhật, Tây Ban Nha, Nga, Bồ Đào Nha... Trong giải pháp này, người ta chia mã nguồn thành 3 modules chính sau : • Module quản lý nội dung. ? Module này bao gòm các tập tin JSP, JavaScript và Servlet để thực hiện chức năng. ? Môi trường chỉnh sửa nội dung WYSIWYG. ? Cho phép sửa đổi nội dung tại nơi nội dung đó xuất hiện trên trang web. ? Hỗ trợ các trình duyệt Internet Explorer và Mozilla/Firefox. ? Cung cấp cơ chế phân loại nội dung dựa trên cấu trúc cây. ? Dữ liệu được lưu trữ trong hệ thống tập tin của hệ điều hành dựa trên chuẩn JSR 170. Do đó, giải pháp này không cần phải có hệ quản trị cơ sở dữ liệu. • Module Repository. ? Hỗ trợ việc truy cập vào Repository chứa nội dung. ? Sử dụng các gói và các APIs được quy định bởi JSR 170. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 129 Đặng Đình Vương ? Hỗ trợ việc chuyển đổi dễ dàng Repository chứa nội dung : do module này được xây dựng dựa trên chuẩn JSR 170, do đó nhà phát triển có thể chuyển đổi qua lại việc sử dụng các Repository chứa nội dung, như : các tập tin XML, hệ thống tập tin của hệ điều hành, hệ quản trị cơ sở dữ liệu...cho giải pháp của họ. • Module bảo mật. ? Cung cấp những chức năng để phân chia vai trò và người sử dụng trên hệ thống CMS này. 2.4 Giải pháp OpenCMS 5.0 Hình 28: Giao diện OpenCMS Giải pháp này hỗ trợ những nguời sử dụng tạo ra các trang web mà không cần phải biết về HTML. Môi trường biên soạn nội dung WYSIWYG với giao diện giống như giao diện của Microsoft Office tạo sự thân thiện hơn với người sử dụng. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 130 Đặng Đình Vương Giải pháp này là một giải pháp mã nguồn mở và hoàn toàn miễn phí. Nó được xây dựng chủ yếu bởi công ty Alkacon Software. Ngoài ra còn có một số công ty khác tham gia phát triển như : Advent Consulting, Agora Telematica, Aliacom. OpenCMS phát triển dựa trên Java, JSP, Servlet và XML. Ngoài ra, giải pháp này có thể hoạt động dựa trên các thành phần mã nguồn mở như : Linux, Apache, Tomcat, MySQL, cũng nhữ các thành phần cần đến bản quyền như : Windows NT, IIS, BEA Weblogic, Oracle DB. Nội dung các trang web trong OpenCMS được lưu trong các tập tin XML va các template của các trong web được xây dựng bằng cách sử dụng các trang JSP và Java. Giải pháp này hỗ trợ chuẩn UTF-8, do đó nó cho phép hiển thị nhiều ngôn ngữ khác nhau. Ngoài môi trường biên soạn WYSIWYG, OpenCMS còn cung cấp cơ chế command line để tăng tốc độ truy cập vào các tài nguyên hệ thống. 3. Kết luận Sau khi so sánh các điểm mạnh và các mặt hạn chế của giải pháp : Cofax 2.0, Daisy 1.1, Magnolia 2.1 và OpenCMS 5.0, chúng tôi chọn giải pháp Magnolia 2.1 để phát triển thành module CMS của công ty TMA. Sự lựa chọn này dựa trên những lý do sau : • Giải pháp này tuân thủ chuẩn JSR 170, chuẩn dùng để xây dựng các hệ CMS, do đó trong tương lai nếu yêu cầu thay đổi hệ thống này thì sẽ giảm tối đa việc chỉnh sửa mã nguồn. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 131 Đặng Đình Vương • Giải pháp này cho phép chỉnh sửa mã nguồn không giới hạn và là mã nguồn mở • Magnolia có thể hoạt động trên Linux và JBoss, môi trường mà portal hiện tại của TMA đang hoạt động. Do đó, giải pháp này có khả năng sẽ tích hợp được vào portal hiện tại của công ty. • Có nhiều lập trình viên hiện đang phát triển giải pháp này, do đó, trong trường hợp xảy ra các vấn đề về kỹ thuật, chúng tôi có thể nhận được nhiều sự hỗ trợ từ phía họ. • Chúng tôi có thể chuyển đổi giải pháp này để nó tuân thủ theo chuẩn JSR 168 nhằm tích hợp vào portal hiện tại của công ty. Nguyên nhân là giải pháp này sử dụng ngôn ngữ lập trình Java và JSP, Servlet, JavaScript và theo dạng dự án J2EE. • Giải pháp này hỗ trợ nhiều ngôn ngữ nên người sử dụng có thể chọn ngôn ngữ thân quen nhất với họ. • Giải pháp này hỗ trợ tốt việc phân loại nội dung các trang web. • Magnolia cung cấp môi trường biên soạn nội dung WYSIWYG tiện dụng cho người sử dụng.. • Giải pháp này hỗ trợ mạnh và linh động việc phân quyền người sử dụng trên hệ thống . • Giải pháp này cho phép thay đổi dễ dàng các thông số cấu hình mà không cần phải sửa đổi mã nguồn. • Magnolia cung cấp chức năng drag’n’drop tạo tính tiện dụng cho người dùng. • Magnolia hỗ trợ việc quản lý nội dung tại vị trí hiển thị của nội dung trên trang web. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 132 Đặng Đình Vương ỨNG DỤNG Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 133 Đặng Đình Vương Chương 8 Các chức năng của TMA CMS Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 134 Đặng Đình Vương 1. Mô hình Use case Bien soan trang web Phan loai noi dung Toi uu hoa cac thong tin cau hinh Su dung cac template Nguoi bien soan noi dung Nguoi quan ly cau hinh Truy nhap vao he CMS Nguoi su dung trong portal Quan ly nguoi su dungGan vai tro cho nguoi su dung Lua chon ngon ngu ua thich Nguoi quan ly nguoi su dung Quan ly vai tro Tim kiem thong tin Phan quyen cho vai tro Nguoi quan ly vai tro Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 135 Đặng Đình Vương 2. Mô tả các chức năng 2.1 Quản lý vai trò Một vai trò bao gồm các thuộc tính sau: • Tên tắt vai trò. • Tên đầy đủ của vai trò. • Mô tả về vai trò. • Quyền hạn của vai trò. Một người quản lý vai trò có quyền thực hiện các thao tác sau: • Thêm vai trò: khi người quản lý vai trò thêm một vai trò vào trong hệ thống, cần phải xác định những thuộc tính của vai trò được nêu ở trên. • Xoá vai trò. • Sửa đổi vai trò. Ngoài ra, người quản lý vai trò có quyền cho kích hoạt vai trò hoặc ngăn cấm sự truy cập của vai trò vào hệ thống. Khi vai trò được kích hoạt, người sử dụng có vai trò tương ứng có thể truy cập vào hệ CMS. Ngược lại, khi vai trò đã bị ngăn cấm thì người sử dụng không được phép truy cập vào hệ thống. 2.2 Quản lý người sử dụng Một người sử dụng trên hệ CMS bao gồm các thông tin như sau: • Tên tắt người sử dụng. • Tên đầy đủ người sử dụng. • Mật mã người sử dụng. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 136 Đặng Đình Vương • Ngôn ngữ yêu thích của người sử dụng. • Các vai trò của người sử dụng trong hệ thống. Một người quản lý người sử dụng có quyền thực hiện các thao tác sau: • Thêm người sử dụng: khi một người quản lý người sử dụng thêm một người sử dụng vào hệ thống, cần phải xác định các thông tin vừa nêu ở trên. • Xoá người sử dụng. • Sửa đổi thông tin người sử dụng Ngoài ra, người quản lý người sử dụng có quyền cho kích hoạt người sử dụng hoặc ngăn cấm sự truy cập của người sử dụng vào hệ thống. Khi người sử dụng được kích hoạt, người sử dụng có thể truy cập vào hệ CMS. Ngược lại, khi người sử dụng đã bị ngăn cấm thì họ không được phép truy cập vào hệ thống. 2.3 Phân quyền sử dụng cho vai trò Mỗi quyền sử dụng trên hệ thống chỉ có một phạm vi sử dụng trong một vùng nhất định của hệ thống mà thôi. Trong hệ CMS của TMA, phạm vi sử dụng này bao gồm các loại sau: • Phạm vi trên web site: quyền sử dụng được thực hiện các thao tác trên toàn bộ cấu trúc web site hoặc chỉ một phần của web site. • Phạm vi người sử dụng: quyền sử dụng được thực hiện các thao tác trên toàn bộ các người sử dụng của hệ thống hoặc chỉ một số người sử dụng nhất định do hệ thống quy định. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 137 Đặng Đình Vương • Phạm vi vai trò: quyền sử dụng được thực hiện các thao tác trên toàn bộ các vai trò của hệ thống hoặc chỉ một số vai trò nhất định do hệ thống quy định. • Phạm vi cấu hình: quyền sử dụng được thực hiện các thao tác trên toàn bộ các thông tin cấu hình của hệ thống hoặc chỉ một số thông tin cấu hình nhất định do hệ thống quy định. Các thao tác được thực hiện trên một phạm vi được mô tả như sau: • Chỉ đọc: quyền sử dụng được gán thao tác này chỉ được cho phép đọc trên các thông tin của hệ thống. • Đọc và ghi: quyền sử dụng được gán thao tác này được cho phép đọc và ghi trên các thông tin của hệ thống. • Từ chối truy cập: người sử dụng được gán thao tác này sẽ không được phép truy cập vào hệ thống. Từ các loại phạm vi thao tác và các thao tác được phép trên phạm vi trình bày phía trên, khi người quản lý cho phép hay thay đổi một vai trò, họ cần phải xác định các thông tin tương ứng của vai trò. 2.4 Phân phối vai trò đến người sử dụng Mỗi người sử dụng có thể sở hữu một hoặc nhiều vai trò trong hệ CMS. Khi thêm người sử dụng mới vào hệ thống, người quản lý người sử dụng có thể gán nhiều vai trò cho người sử dụng. Sau đó, người quản lý này có thể sửa đổi các vai trò đã được gán trước đó hay thêm vào các vai trò mới cho người sử dụng. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 138 Đặng Đình Vương 2.5 Tối ưu hoá các thông tin cấu hình hệ thống Hệ CMS này hỗ trợ tốt việc tối ưu hoá các thông tin cấu hình của hệ thống. Các thông tin cấu hình chính có thể chỉnh sửa được trình bày dưới đây: • Kiểu dữ liệu MIME. Ví dụ: phần mở rộng .html được áp dụng kiểu dữ liệu MIME text/html. Các tập tin .js được áp dụng kiểu dữ liệu MIME text/javascript và các tập tin .pdf được áp dụng kiểu dữ liệu MIME application/pdf. • Ngôn ngữ hiển thị. • Thêm, xoá hay sửa đổi các tiêu đề trên menu. • Vị trí của các tham số khởi tạo trang của người quản lý. • Các giá trị mặc định khi trang web được tạo ra. • Các template được hỗ trợ bởi hệ thống. • Giao thức được sử dụng cho kết nối đến web site. 2.6 Biên soạn nội dung trang web Sử dụng chức năng này của hệ CMS, người sử dụng có thể tạo ra các trang web. Trong quá trình tạo ra các trang web này, người sử dụng có thể chọn các template cho trang vừa tạo ra. Trong quá trình biên soạn nội dung tran web, CMS cung cấp một môi trường biên soạn tiện dụng WYSIWYG. Ngoài ra, trong quá trình này, họ có thể thêm vào các hình ảnh cũng như là các đọan video để minh họa cho đoạn văn bản trên trang web. Thêm vào đó, việc tạo ra các liên kết đến một tài liệu để download cũng được hỗ trợ. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 139 Đặng Đình Vương Sau cùng, chức năng này cung cấp cơ chế cho phép xem lại và sửa đổi nội dung vừa biên tập xong. 2.7 Áp dụng template vào trang web Hệ CMS này cho phép tạo ra dễ dàng các template để áp dụng cho các trang web. Người quản lý cấu hình hệ thống có thể tạo ra các template để những người biên soạn nội dung có thể áp dụng các template này vào trang web họ vừa tạo ra. 2.8 Phân loại nội dung Hệ thống CMS của TMA được xây dựng dựa trên chuẩn JSR 170, do đó hệ thống này hỗ trợ rất tốt việc phân lọai nội dung. Người sử dụng có thể sắp xếp các trang web tùy theo lọai của nó. Các trang web được tổ chức trong một cấu trúc cây mà trong đó toàn bộ web site là gốc của cây và mỗi loại là một node con của gốc đó. 2.9 Truy nhập vào hệ CMS Do mã nguồn ban đầu của Magnolia được phát triển để hoạt động như một ứng dụng độc lập, khi chúng ta muốn tích hợp mã nguồn này dưới dạng một portlet vào portal hiện tại của công ty TMA, chúng ta cần phải bỏ qua cơ chế đăng nhập riêng của Magnolia. Để làm được điều này, khi người sử dụng đăng nhập vào hệ CMS, hệ thống này sẽ lấy các thông tin người sử dụng được lưu trên portal, sau đó hệ thống này sẽ dựa trên các thông tin vừa thu nhận được để cấp quyền tương ứng cho người sử dụng trong hệ thống CMS. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 140 Đặng Đình Vương 2.10 Tìm kiếm nội dung Hệ thống CMS này cung cấp cơ chế tìm kiếm thông tin giúp người sử dụng tìm nội dung mình cần trên trang web. Kết quả tìm kiếm được trình bày cùng với các liên kết đến các trang chứa nội dung tìm được. 2.11 Lựa chọn ngôn ngữ Chức năng này cho phép lựa chọn các ngôn ngữ khác nhau tùy thuộc vào từng người sử dụng. Trong hệ thống CMS của TMA, các ngôn ngữ sau đây được hỗ trợ: Pháp, Anh, Trung Quốc, Đức, Ý, Nhật, Tây Ban Nha, Nga… Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 141 Đặng Đình Vương Chương 9 Tích hợp hệ thống CMS vào TMA portal Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 142 Đặng Đình Vương 1. System Architecture của Magnolia CMS 1.1 Mô hình một số package quan trọng của Magnolia CMS Hình 29: Các gói chính của Magnolia CMS 1.2 Mô tả các package 1.2.1 Package info.magnolia.cms Package này chịu trách nhiệm xác nhận các yêu cầu từ phía người sử dụng và thu thập các nội dung cần thiết để phản hồi yêu cầu. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 143 Đặng Đình Vương Package này gọi đến các trang JSP hay servlet tương ứng để hồi đáp yêu cầu. 1.2.2 Package info.magnolia.cms. security Quản lý các vấn đề về bảo mật trên Repository. Cho phép khóa một thành phần tránh sự truy cập của người sử dụng. Định nghĩa các phương thức dùng thao tác trên Repository, vai trò, người sử dụng trong mỗi phiên làm việc. 1.2.3 Package info.magnolia.cms.servlets Khởi tạo và đọc các thông tin cấu hình của ứng dụng từ Repository. Chịu trách nhiệm xử lý và phản hồi các yêu cầu được gởi tới. 1.2.4 Package info.magnolia.cms.core Thiết lập các thông số cấu hình cho Repository. Thực hiện chức năng Cache khi có một yêu cầu được gởi đến. Có nghĩa là nếu những thông tin dùng phản hồi yêu cầu đã được lưu trong Cache thì phản hồi ngay. Nếu không thì lưu những thông tin của yêu cầu đó vào trong Cache. Thực hiện chức năng tìm kiếm trên Repository. Thêm, xoá, di chuyển nội dung các Page, Paragraphs hay các Properties. Định nghĩa các phương thức hỗ trợ quản lý phiên bản. 1.2.5 Package info.magnolia.module.adminInterface Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 144 Đặng Đình Vương Cung cấp các lớp thể hiện Page, Paragraph, Dialog, Tree… Định nghĩa các hằng số hỗ trợ đa ngôn ngữ. 1.2.6 Package info.magnolia.module.templating Xác định và lưu lại các thông số về template của Paragraph, Page. 1.2.7 Package info.magnolia.repository Package này cung cấp các phương thức cho các thao tác trên Repository 1.2.8 Package info.magnolia.exchange Quản lý việc xuất bản nội dung từ bản author (dành cho người quản trị) san bản public (trang web đã xuất bản). Bao gồm : • Quản lý kết nối để truyền dữ liệu đến một URL cụ thể. • Tạo nội dung để gởi đi. • Activate, DeActivate nội dung. 2. Hướng tiếp cận để tích hợp Để tích hợp Magnolia CMS dưới dạng một portlet vào portal hiện tại của TMA, chúng ta có 2 cách tiếp cận như sau 2.1 Hướng tiếp cận thứ 1 Trong cách tiếp cận này, trước tiên chúng ta sử dụng mã nguồn của Liferay portal để tạo ra một dự án J2EE. Sau đó, chúng ta đưa mã nguồn của Magnolia vào Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 145 Đặng Đình Vương trong dự án này. Các thành phần của Magnolia được đưa vào các thư mục tương ứng của dự án J2EE này. Tiếp theo, chúng ta sửa đổi dự án J2EE để đáp ứng được nhu cầu đề ra ban đầu. Cuối cùng. Chúng ta biên dịch toàn bộ dự án này để tạo ra một gói ext.ear duy nhất. Và chúng ta sẽ đưa gói vừa biên dịch xong vào thư mục JBOSS_HOME/server/default/deploy của application server JBoss ( để chạy portal và portlet vừa được biên dịch. Tuy nhiên, cách làm này tồn tại rất nhiều giới hạn mà trong đó, việc quản lý mã nguồn là khó khăn lớn nhất. Thật vậy, nếu tiếp cận theo hướng này, khi muốn tích hợp một portlet mới vào portal, chúng ta cần phải đưa toàn bộ các thành phần của portlet vào từng thư mục tương ứng của dự án J2EE. Do đó, trong quá trình phát triển dự án, chúng ta cần phải nhớ các package nào tương ứng với portlet và các package nào thì không phải. Ngoài ra, khi xảy ra lỗi, chúng ta rất khó sửa chữa các lỗi này do mã nguồn trong dự án J2EE này khá nhiều. Khó khăn này càng gia tăng khi chúng ta muốn mở rộng các chức năng của portal và phát triển nhiều portlet hơn cho portal. Trong thực tế, các lập trình viên của nhóm TIS trong công ty TMA đã từng tiếp cận theo cách này và họ đã gặp phải vấn đề tương tự. Hiện nay, họ đã chuyển sang hướng tiếp cận thứ 2 được trình bày dưới đây. 2.2 Hướng tiếp cận thứ 2 Trong hướng tiếp cận này, chúng ta cũng tạo ra một dự án J2EE. Tuy nhiên, chúng ta chỉ đưa và mã nguồn của Magnolia CMS vào trong dự án mà thôi. Tiếp theo, chúng ta sửa đổi mã nguồn của Magnolia CMS và mã nguồn của portal để đáp ứng yêu cầu đặt ra ban đầu. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 146 Đặng Đình Vương Sau đó, gói ext.ear của Liferay portal vào trong thư mục JBOSS_HOME/server/default/deploy của application server JBoss. Cuối cùng, chúng ta biên dịch dự án J2EE để nhận được một gói magnolia.war và đưa package này vào thư mục JBOSS_HOME/server/default/deploy của application server JBoss để chạy. Trong thực tế, cách tiếp cận này có thể tránh được những khó khăn mà cách tiếp cận thứ 1 gặp phải. Do đó, chúng tôi sẽ tích hợp hệ CMS vào portal hiện tại của công ty TMA theo cách này. 3. Cách thức thực hiện Để thực hiện theo cách tiếp cận thứ 2 vừa nêu trên, chúng ta cần phải thực hiện các bước chính sau : • Tạo ra một dự án J2EE dựa trên mã nguồn của Magnolia CMS • Chuẩn hoá dự án J2EE này theo chuẩn JSR 168 • Tích hợp hệ thống bảo mật của Magnolia vào hệ thống bảo mật của portal hiện tại của TMA : nguyên nhân là Magnolia CMS được xây dựng để hoạt động như một ứng dụng độc lập, do đó, hệ CMS này có hệ thống bảo mật riêng của nó. Ngoài ra, portal của TMA cũng có hệ thống bảo mật riêng của portal. Do đó, khi người sử dụng muốn sử dụng hệ CMS này thì họ cần phải đăng nhập đến 2 lần : 1 lần để được phép vào portal và 1 lần nữa để được phép vào hệ CMS. Mà trong portal thì phải hỗ trợ cơ chế single sign-on, cơ chế cho phép người sử dụng chỉ phải đăng nhập 1 lần vào portal để có thể sử dụng mọi chức năng của portal. Do đó, để Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 147 Đặng Đình Vương tích hợp Magnolia CMS vào portal hiện tại, chúng ta cần phải kết hợp 2 hệ thống bảo mật này để chỉ phải đăng nhập 1 lần duy nhất mà thôi. 3.1 Tạo dự án J2EE dựa trên mã nguồn của Magnolia Trước tiên, chúng ta sử dụng Eclipse để tạo một dự án J2EE (trong báo cáo này, chúng tôi xin phép không trình bày các bước để tạo một dự án J2EE trong Eclipse). Sau đó, chúng ta đưa toàn bộ mã nguồn của Magnolia vào trong dự án này. Sau cùng, chúng ta cần phải đưa các thư viện (các tập tin .jar và .class) cần thiết vào trong dự án. 3.2 Chuẩn hoá dự án J2EE theo chuẩn JSR 168 Sau quá trình tìm hiểu chuẩn JSR 168, chúng ta nhận thấy cần phải sửa đổi dự án J2EE này để tuân thủ theo chuẩn JSR 168. Có nghĩa là ngoài các thư mục và tập tin của dự án J2EE, chúng ta cần phải sắp xếp lại các thành phần của dự án và sửa đổi tập tin build.xml (tập tin sử dụng ngôn ngữ kịch bản ant ( để hỗ trợ Eclipse trong việc biên dịch dự án) để tạo ra gói magnolia.war có cấu trúc như sau : magnolia.war |------- html (thư mục chứa các tập tin JSP) |------- WEB-INF |------- tld (thư mục chứa thư viện các thẻ) |------- classes |------- config |------- portlet.xml Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 148 Đặng Đình Vương |------- liferay-portlet.xml |------- liferay-display.xml |------- web.xml Hình vẽ sau sẽ minh hoạ cấu trúc tổ chức này trong dự án được tạo ra trên Eclipse Hình 30: Cấu trúc dự án J2EE của hệ CMS Trong cấu trúc này, tập tin portlet.xml có nội dung như sau : Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 149 Đặng Đình Vương magnolia_id magnolia com.liferay.portlet.JSPPortlet view-jsp /index.jsp 0 text/html magnolia magnolia magnolia Guest Power User User Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 150 Đặng Đình Vương Tập tin liferay-portlet.xml có nội dung như sau : <portlet id=“magnolia_id” struts-path=“magnolia” use-default- template=“true” /> Ngoài ra, nội dung của tập tin liferay-display.xml như sau : Sau cùng, nội dung của tập tin web.xml như sau: company_id liferay.com com.liferay.portal.servlet.PortletContextListener Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 151 Đặng Đình Vương ....... /WEB-INF/tld/liferay-portlet.tld 3.3 Tích hợp hệ thống bảo mật Sau khi tìm hiểu kiến trúc hệ thống của portal hiện tại và kiến trúc hệ thống của Magnolia CMS, chúng ta nhận thấy rằng để tích hợp hệ thống bảo mật của Magnolia vào hệ thống bảo mật của portal, chúng ta cần phải thực hiện các sửa đổi chủ yếu trên package info.magnolia.cms.security của Magnolia CMS. các package khác của Magnolia CMS cũng cần được sửa đổi, như : info.magnolia.logging, info.magnolia.module.adminInterface, info.magnolia.cms.servlets… Ngoài ra, chúng ta cũng cần phải sửa đổi các tập tin JSP sử dụng các chức năng của các package vừa nêu và chuẩn hóa các trang JSP theo chuẩn JSR 168. Tiếp theo, chúng ta sử dụng các APIs được cung cấp bởi các lớp của portal, như : CompanyLocalManagerUtil, UserManagerUtil, PrincipalBean, …để lấy các thông tin người sử dụng được cung cấp bởi họ khi đăng nhập vào portal. Các thông tin này được sử dụng để đăng nhập vào CMS thay vì sử dụng các thông tin đăng nhập được lấy lên từ Repository của Magnolia CMS. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 152 Đặng Đình Vương KẾT LUẬN Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 153 Đặng Đình Vương Qua đề tài này, chúng tôi có thêm nhiều kiến thức và kinh nghiệm trong việc phát triển một hệ CMS và tích hợp một thành phần vào một hệ thống thông tin có sẵn. Ngoài ra, chúng tôi còn có thêm kinh nghiệm trong việc xây dựng các hệ CMS dưới dạng một thành phần hay một ứng dụng độc lập. Các hệ thống này có thể ứng dụng vào các doanh nghiệp hay các tổ chức có nhu cầu, đặc biệt là các toà soạn báo điện tử. Sau 6 tháng thực tập tại công ty TMA, chúng tôi học hỏi thêm nhiều kinh nghiệm thực tế trong một môi trường làm việc chuyên nghiệp và đầy năng động. Thêm vào đó, chúng tôi có cơ hội nâng cao khả năng nghiên cứu và ứng dụng các kiến thức nghiên cứu được vào trong thực tế. Chúng tôi hiểu rõ hơn về các mặt mạnh và các giới hạn của việc sử dụng các công cụ mã nguồn mở và miễn phí, như : Linux, Eclipse, JBoss, Lomboz, J2SDK, MySQL, Liferay, Magnolia… Về cơ bản luận văn đã thực hiện tốt các yêu cầu đề ra ban đầu của công ty . • Xây dựng thành công hệ CMS dưới dạng một portlet để tích hợp vào portal hiện tại của công ty TMA. • Tích hợp hệ thống bảo mật của CMS vào hệ thống bảo mật của TMA portal. • Hệ CMS được xây dựng được sử dụng như làm một nơi chứa nội dung tập trung của các trang web trong các module của hệ thống Intranet. • Hệ CMS được xây dựng dưới dạng một module để có thể dược sử dụng bởi các module khác trong hệ thống Intranet của công ty. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 154 Đặng Đình Vương Tuy nhiên do giới hạn về thời gian và hiểu biết, chúng tôi xây dựng hệ thống CMS này vẫn còn một số điểm giới hạn và cần được cải thiện trong các phiên bản tiếp theo. • Hệ thống CMS lưu trữ dữ liệu trong hệ thống tập tin của hệ điều hành. Điều này tạo nhiều bất tiện khi dữ liệu lưu trữ của hệ thống ngày một tăng lên. • Chưa có thời gian thử nghiệm module CMS với các module khác trong hệ thống Intranet của Công ty. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 155 Đặng Đình Vương HƯỚNG PHÁT TRIỂN Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 156 Đặng Đình Vương Như đã trình bày ở trên, module CMS lưu trữ dữ liệu trong hệ thống tập tin của hệ điều hành. Để hệ thống họat động hiệu quả hơn, nó cần được chuyển sang lưu trữ dữ liệu bằng một cơ sở dữ liệu quan hệ. Hệ thống bảo của module CMS cần được tiếp tục phát triển để có thể tự động cập nhật người sử dụng khi những người sử dụng trong hệ thống Intranet có sự thay đổi. Hệ thống cần được phát triển thêm chức năng lưu các phiên bản của nội dung (điều này được hỗ trợ mạnh bởi chuẩn JSR 170) giúp cho nội dung các trang web có thể được phục hồi lại các trạng thái trước đó của nó. Bên cạnh đó, với qui mô ngày càng mở rộng của Công ty, module CMS cần được phát triển thêm các tính năng khác như hỗ trợ chuẩn RSS để giao tiếp với các web site khác. Ngoài các yêu cầu về xử lý, module CMS còn cần được phát triển để linh động hơn trong việc tạo ra các template cho trang web. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 157 Đặng Đình Vương TÀI LIỆU THAM KHẢO Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 158 Đặng Đình Vương [1] David Nuescheler - Day Software, Content Repository API for Java Technology Specifications 0.16.2, Day Management AG, 25 January 2005 [2] Alejandro Abdelnur - Sun Microsystems, Java portlet Specification v1.0, Sun Microsystems, 29 August 2003 [3] Steve Holzner, Eclipse Cookbook, O'Reilly, United States of America, 2004 [4] James Rumbaugh, Ivar Jacobson, Grandy Booch, The Unified Modeling Language Reference Manual, Addison-Wesley, 1998. [5] Nathan Meyers, Java Programming on Linux, Waite Group, 2000 [6] James Goodwill, Pure JSP: Java Server Pages, SAMS, 2000 [7] Mark Wutka, Special Edition Using Java Server Pages and servlets, QUE, 2000 [8] Jason Hunter and William Crawford, Java servlet Programming, O'Reilly, United States of America, October 1998 [9] Michael Girdley and Kathryn A.Jones, web Programming with Java, Sams.net Publishing, 1996 [10] Le Thanh Nhan – Tuong Minh Association, Technical reports, 2004 - 2005 [11] Nguyen Thanh Giang – Tuong Minh Association, Technical reports, 2004 - 2005 [12] Web site cuả Magnolia CMS, [13] Web site mã nguồn mở Java, [14] Web site các giải pháp CMS mã nguồn mở,

Các file đính kèm theo tài liệu này:

  • pdfCNTT1033.pdf
Tài liệu liên quan