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.
167 trang |
Chia sẻ: lylyngoc | Lượt xem: 2614 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu 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:
- Unlock-xd_cms_module_cho_he_thong_intranet_cua_cty_tma_7336.pdf