SlideShare una empresa de Scribd logo
1 de 167
Descargar para leer sin conexión
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ĐẶNG ĐÌNH VƯƠNG
BÙI VĨNH PHÚ
XÂY DỰNG CMS MODULE CHO HỆ THỐNG
INTRANET CỦA CÔNG TY TMA
KHÓA LUẬN CỬ NHÂN TIN HỌC
TP. HCM, NĂM 2005
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ĐẶNG ĐÌNH VƯƠNG – 0112458
BÙI VĨNH PHÚ – 0112024
XÂY DỰNG CMS MODULE CHO HỆ THỐNG
INTRANET CỦA CÔNG TY TMA
KHÓA LUẬN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
TS. TRẦN VIẾT HUÂN
KS. NGUYỄN TẤN HỘ
KS. LÊ THANH NHÀN
TP. HCM, NĂM 2005
LỜI CẢM ƠN
Chúng tôi xin chân thành cảm ơn Khoa Công nghệ Thông tin, trường Đại học
Khoa học Tự nhiên, Thành phố Hồ Chí Minh và Công ty TMA đã tạo điều kiện cho
chúng tôi thực hiện đề tài tốt nghiệp này.
Xin cảm ơn Thầy Trần Viết Huân, Anh Nguyễn Tấn Hộ, Anh Lê Thanh Nhàn,
người đã tận tình hướng dẫn, chỉ bảo chúng tôi trong suốt thời gian thực tập tại Công
ty.
Chúng tôi cảm ơn các anh chị trong nhóm TIS đã giúp đỡ, đóng góp ý kiến cho
chúng tôi trong quá trình cài đặt, thử nghiệm chương trình.
Xin gửi lời cảm ơn chân thành đến gia đình, ba mẹ và bè bạn vì đã luôn là
nguồn động viên to lớn, giúp đỡ chúng tôi vượt qua những khó khăn trong suốt quá
trình làm việc.
Mặc dù đã cố gắng hoàn thiện luận văn với tất cả sự nỗ lực của bản thân, nhưng
chắc chắn không thể tránh khỏi những thiếu sót. Kính mong quý Thầy Cô tận tình chỉ
bảo.
Một lần nữa, chúng tôi xin chân thành cảm ơn và luôn mong nhận được sự đóng
góp quý báu của tất cả mọi người.
Tháng 7 năm 2005
Đặng Đình Vương
Bùi Vĩnh Phú
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
MỤC LỤC
DANH SÁCH CÁC HÌNH VẼ......................................................................................1
MỘT SỐ KÝ HIỆU VÀ TỪ VIẾT TẮT......................................................................4
MỞ ĐẦU .........................................................................................................................6
Chương 1 Giới thiệu đề tài ........................................................................................7
TỔNG QUAN ...............................................................................................................12
Chương 2 Tổng quan về sự phát triển của các hệ CMS.......................................13
NGHIÊN CỨU..............................................................................................................16
Chương 3 Nhu cầu sử dụng hệ CMS trong các tổ chức........................................17
1. Nhu cầu hiện tại..................................................................................................18
1.1 Tình hình các web site của các tổ chức ở Việt Nam.....................................18
1.2 Nhu cầu cập nhật và quản lý nội dung..........................................................18
1.2.1 Nhu cầu của các doanh nghiệp...............................................................18
1.2.2 Nhu cầu của các tờ báo điện tử ..............................................................20
1.2.3 Nhu cầu trong các hệ thống thông tin của các công ty ..........................21
2. Những lợi ích mà một hệ CMS mang lại cho các công ty..................................23
Chương 4 Hệ thống intranet hiện tại của công ty .................................................25
1. Yêu cầu khi phát triển hệ thống intranet của công ty TMA ...............................26
1.1 Tình hình hiện tại..........................................................................................26
1.2 Quy định về kiến trúc....................................................................................27
1.2.1 Kiến trúc mạnh.......................................................................................27
1.2.2 Xây dựng các công cụ hệ thống phi chức năng .....................................28
1.2.3 Bảo mật ..................................................................................................28
1.2.4 Khả năng tích hợp ..................................................................................29
1.3 Yêu cầu lúc phát triển ...................................................................................29
2. Portal hiện tại của TMA .....................................................................................30
2.1 Đặc điểm và các thành phần của portal ........................................................30
2.2 Các thành phần đã được xây dựng................................................................31
2.3 Kiến trúc hệ thống của portal........................................................................34
2.3.1 Kiến trúc hệ thống của các portal phổ biến............................................34
2.3.2 Kiến trúc hệ thống của portal TMA.......................................................35
3. Công nghệ được sử dụng để phát triển hệ thống intranet...................................36
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
4. Các chuẩn dùng để phát triển hệ thống...............................................................36
5. Nhu cầu của công ty TMA khi xây dựng một hệ CMS......................................37
5.1 Nhu cầu chia sẻ thông tin giữa các dự án và các vị trí công việc.................39
5.2 Xây dựng hệ CMS dưới dạng một portlet có thể được sử dụng bởi các ứng
dụng và các thành phần khác ..............................................................................41
5.3 Các kỹ thuật sử dụng trong quá trình phát triển............................................41
Chương 5 Chuẩn JSR 168 .......................................................................................43
1. Giới thiệu về chuẩn JSR 168 ..............................................................................44
2. Một số khái niệm chính ......................................................................................45
2.1 Portal .............................................................................................................45
2.2 Portlet............................................................................................................45
2.3 Portlet Container ...........................................................................................46
3. So sánh Portlet và Servlet...................................................................................46
3.1 Điểm giống nhau giữa Portlet và Servlet......................................................46
3.2 Điểm khác nhau giữa Portlet và Servlet .......................................................46
3.3 Đặc trưng của Portlet mà không có ở servlet................................................47
4. Giao diện portlet .................................................................................................47
5. Portlet URL.........................................................................................................48
6. Portlet Mode .......................................................................................................48
7. Window State......................................................................................................49
8. Portlet Request....................................................................................................50
9. Portlet Response .................................................................................................50
10. Portlet Preferences............................................................................................51
11. Caching .............................................................................................................51
12. Ứng dụng Portlet...............................................................................................53
12.1 Các thành phần của ứng dụng Portlet .........................................................53
12.2 Cấu trúc cây thư mục ..................................................................................53
12.3 Tập tin lưu trữ của ứng dụng Portlet...........................................................54
13. Các đặc tả đóng gói và triển khai......................................................................54
13.1 Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet..........................54
13.2 Triển khai ứng dụng Portlet và ứng dụng Web...........................................55
13.3 Các thành phần của đặc tả triển khai Portlet...............................................55
13.4 Tính duy nhất của các giá trị trong đặc tả triển khai Portlet.......................59
14. Thư viện các thẻ Portlet....................................................................................59
14.1 Thẻ actionURL............................................................................................60
14.2 Thẻ renderURL ...........................................................................................60
Chương 6 Chuẩn JSR 170 .......................................................................................61
1. Giới thiệu về chuẩn JSR 170 ..............................................................................62
2. Mô hình repository..............................................................................................63
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
3. Một số API cơ bản..............................................................................................64
3.1 Thao tác trên repository ................................................................................66
4. Sự liên hệ giữa Node, Property và Item..............................................................67
5. Sự sắp xếp các Item con .....................................................................................67
6. Namespace..........................................................................................................68
7. Property...............................................................................................................69
7.1 Property đa trị................................................................................................69
7.2 Các kiểu dữ liệu của Property.......................................................................69
7.2.1 Kiểu Date................................................................................................70
7.2.2 Kiểu Reference, Path và Name ..............................................................70
8. Node....................................................................................................................71
8.1 Quan hệ giữa các node cùng tên và cùng cha ( Same-Name Siblings ) .......71
8.2 Các kiểu của Node ........................................................................................71
8.2.1 Kiểu node chính và kiểu node phụ.........................................................73
8.2.2 Property definitions................................................................................73
8.2.3 Child Node Definitions ..........................................................................74
8.2.4 Các kiểu node được định nghĩa sẵn .......................................................75
8.3 Node tham chiếu (Referenceable Nodes) .....................................................78
9. Workspace ..........................................................................................................79
9.1 Repository có một workspace.......................................................................79
9.2 Repository có nhiều Workspace và sự tương ứng các node.........................80
10. Tạo phiên bản ( Versioning )............................................................................82
10.1 Version History...........................................................................................83
10.2 Mối quan hệ giữa các versionable node và version history........................84
10.3 Đồ Thị Biểu Diễn Các Phiên Bản Trên Repository....................................84
10.4 Phiên Bản Cơ Bản (Base Version)..............................................................85
10.5 Khởi Tạo Một Version History...................................................................85
10.6 Tạo Phiên Bản Mới Của Một Node ............................................................86
10.7 Phục Hồi Lại Trạng Thái Trước Đó Của Node ..........................................87
10.8 Checkout .....................................................................................................88
10.9 Update .........................................................................................................88
10.10 Các Node Có Thể Tạo Phiên Bản Trên Repository..................................89
10.11 Thuộc Tính OnParentVersion...................................................................91
10.11.1 COPY .................................................................................................92
10.11.2 VERSION...........................................................................................93
10.11.3 INITIALIZE.......................................................................................93
10.11.4 COMPUTE.........................................................................................94
10.11.5 IGNORE.............................................................................................94
10.11.6 ABORT ..............................................................................................94
10.12 Ví dụ về một Repository có hỗ trợ tạo phiên bản.....................................95
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
11. Lắng Nghe Sự Kiện Trên Repository (Observation)........................................96
11.1 Phát sinh sự kiện .........................................................................................96
11.2 Các loại sự kiện...........................................................................................97
11.3 Đối tượng lắng nghe và xử lý sự kiện.........................................................98
11.4 Lựa chọn sự kiện để lắng nghe ...................................................................99
11.5 Các sự kiện xảy ra đối với một hành động trên Repository........................99
11.5.1 Hành động thêm một Item....................................................................99
11.5.2 Hành động thay đổi giá trị của Property ............................................100
11.5.3 Hành động thêm vào một Node đã tồn tại trong Repository .............100
11.5.4 Khôi phục lại trạng thái của một Node ..............................................101
11.5.5 Sao chép một Node ............................................................................101
11.5.6 Xóa một Item......................................................................................102
11.5.7 Di chuyển vị trí của một Node...........................................................102
11.5.8 Tạo Phiên Bản Của Item ....................................................................102
11.5.9 Khoá một Item....................................................................................103
11.5.10 Mở khóa một Item............................................................................103
12. Vấn đề bảo mật trên Repository .....................................................................104
13. Cơ chế khóa trên Repository ..........................................................................104
13.1 Mức độ khóa .............................................................................................104
13.2 Phạm vi khóa.............................................................................................104
13.3 Loại khóa...................................................................................................105
14. Tìm kiếm nội dung trên Repository................................................................105
14.1 Ngôn ngữ truy vấn JCRQL.......................................................................106
14.1.1 Mệnh đề SELECT..............................................................................106
14.1.2 Mệnh đề FROM .................................................................................106
14.1.3 Mệnh đề LOCATION ........................................................................106
14.1.4 Mệnh đề WHERE...............................................................................109
14.1.5 Mệnh đề SEARCH.............................................................................110
14.1.6 Mệnh đề ORDER BY.........................................................................111
15. Một số ví dụ về việc cài đặt JCR ....................................................................112
15.1 JCR cài đặt bên trên File System ..............................................................112
15.2 JCR cài đặt bên trên một Database ...........................................................113
Chương 7 So sánh một số giải pháp CMS mã nguồn mở phổ biến ...................115
1. Giới thiệu các giải pháp hiện tại .......................................................................116
1.1 Xu hướng phát triển của các hệ CMS.........................................................116
1.1.1 Xu hướng về mặt thương mại ..............................................................116
1.1.2 Xu hướng về công nghệ, kỹ thuật ........................................................117
1.2 So sánh các giải pháp CMS thông dụng .....................................................118
1.2.1 Tiêu chí lựa chọn các giải pháp CMS để so sánh ................................118
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
1.2.2 Các tiêu chí so sánh..............................................................................118
2. Mô tả các giải pháp đã so sánh .........................................................................123
2.1 Giải pháp Cofax 2.0 ....................................................................................123
2.2 Giải pháp Daisy 1.1.....................................................................................125
2.2.1 Repository chứa nội dung ....................................................................126
2.2.2 Giao diện web.......................................................................................126
2.3 Giải pháp Magnolia 2.1...............................................................................127
2.4 Giải pháp OpenCMS 5.0.............................................................................129
3. Kết luận.............................................................................................................130
ỨNG DỤNG................................................................................................................132
Chương 8 Các chức năng của TMA CMS ...........................................................133
1. Mô hình Use case..............................................................................................134
2. Mô tả các chức năng .........................................................................................135
2.1 Quản lý vai trò.............................................................................................135
2.2 Quản lý người sử dụng................................................................................135
2.3 Phân quyền sử dụng cho vai trò..................................................................136
2.4 Phân phối vai trò đến người sử dụng ..........................................................137
2.5 Tối ưu hoá các thông tin cấu hình hệ thống................................................138
2.6 Biên soạn nội dung trang web.....................................................................138
2.7 Áp dụng template vào trang web ................................................................139
2.8 Phân loại nội dung.......................................................................................139
2.9 Truy nhập vào hệ CMS...............................................................................139
2.10 Tìm kiếm nội dung....................................................................................140
2.11 Lựa chọn ngôn ngữ ...................................................................................140
Chương 9 Tích hợp hệ thống CMS vào TMA portal..........................................141
1. System Architecture của Magnolia CMS .........................................................142
1.1 Mô hình một số package quan trọng của Magnolia CMS ..........................142
1.2 Mô tả các package.......................................................................................142
1.2.1 Package info.magnolia.cms..................................................................142
1.2.2 Package info.magnolia.cms. security...................................................143
1.2.3 Package info.magnolia.cms.servlets ....................................................143
1.2.4 Package info.magnolia.cms.core..........................................................143
1.2.5 Package info.magnolia.module.adminInterface...................................143
1.2.6 Package info.magnolia.module.templating..........................................144
1.2.7 Package info.magnolia.repository........................................................144
1.2.8 Package info.magnolia.exchange.........................................................144
2. Hướng tiếp cận để tích hợp...............................................................................144
2.1 Hướng tiếp cận thứ 1...................................................................................144
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
2.2 Hướng tiếp cận thứ 2...................................................................................145
3. Cách thức thực hiện ..........................................................................................146
3.1 Tạo dự án J2EE dựa trên mã nguồn của Magnolia.....................................147
3.2 Chuẩn hoá dự án J2EE theo chuẩn JSR 168...............................................147
3.3 Tích hợp hệ thống bảo mật .........................................................................151
KẾT LUẬN.................................................................................................................152
HƯỚNG PHÁT TRIỂN.............................................................................................155
TÀI LIỆU THAM KHẢO .........................................................................................157
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 1 Đặng Đình Vương
DANH SÁCH CÁC HÌNH VẼ
Hình 1: Hệ CMS quản lý tự động nội dung trang web ....................................................8
Hình 2: Giao diện hệ thống intranet của công ty TMA ...................................................9
Hình 3: Hệ thống thông tin hiện tại của công ty TMA ..................................................10
Hình 4: Quy trình cập nhật thông tin trong doanh nghiệp .............................................19
Hình 5: Quy trình cập nhật thông tin trong doanh nghiệp khi sử dụng CMS................19
Hình 6: Quy trình cập nhật thông tin trong một tờ báo địên tử .....................................20
Hình 7: Quy trình cập nhật thông tin trong toà soạn báo điện tử có sử dụng hệ CMS..21
Hình 8: Quy trình cập nhật thông tin trong một hệ thống thông tin ..............................22
Hình 9: Quy trình cập nhật thông tin trong một hệ thống thông tin có CMS................23
Hình 10: Kiến trúc SOA của intranet của công ty TMA ...............................................26
Hình 11: Các thành phần trong portal của công ty TMA ..............................................33
Hình 12: Kiến trúc hệ thống của các portal phổ biến ....................................................34
Hình 13: Kiến trúc hệ thống của portal TMA................................................................35
Hình 14: Chia sẻ thông tin giữa các dự án và vị trí công việc trong công ty TMA.......40
Hình 15: Mô hình chuẩn JSR 168..................................................................................44
Hình 16: Cấu trúc một đặc tả triển khai Portlet .............................................................57
Hình 17: Cấu trúc một đặc tả triển khai Portlet (tt) .......................................................58
Hình 18: Chuẩn JSR 170 giao tiếp với cơ sở dữ liệu.....................................................62
Hình 19: Mô hình một workspace của một repository ..................................................63
Hình 20: Mối liên hệ giữa Node, Property và Item .......................................................67
Hình 21: Repository có một workspace........................................................................79
Hình 22: Repository có nhiều workspace .....................................................................81
Hình 23: Đồ thị mô tả một Version History..................................................................83
Hình 24: Repository có nhiều workspace và hỗ trợ tạo phiên bản ................................95
Hình 25: Giao diện Cofax ............................................................................................123
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 2 Đặng Đình Vương
Hình 26: Giao diện Daisy.............................................................................................125
Hình 27: Giao diện Magnolia.......................................................................................127
Hình 28: Giao diện OpenCMS.....................................................................................129
Hình 29: Các gói chính của Magnolia CMS................................................................142
Hình 30: Cấu trúc dự án J2EE của hệ CMS.................................................................148
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 3 Đặng Đình Vương
DANH SÁCH CÁC BẢNG
Bảng 1: Một số thành phần đã được xây dựng trong hệ thống portal của Công ty .......32
Bảng 2: Các hằng số trong giao diện javax.jcr.version.OnParentVersionAction..........92
Bảng 3: Các hằng số định nghĩa trong giao diện javax.jcr.observation.EvenType ......97
Bảng 4: So sánh yêu cầu hệ thống của một số CMS ...................................................119
Bảng 5: So sánh tính bảo mật của một số CMS...........................................................119
Bảng 6: So sánh tính tiện dụng của một số CMS ........................................................120
Bảng 7: So sánh hiệu suất hoạt động của một số CMS ...............................................120
Bảng 8: So sánh tính khả chuyển của một số CMS .....................................................121
Bảng 9: So sánh khả năng quản lý của một số CMS ...................................................121
Bảng 10: So sánh các khả năng hỗ trợ khác của một số CMS.....................................122
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 4 Đặng Đình Vương
MỘT SỐ KÝ HIỆU VÀ TỪ VIẾT TẮT
API Application Programming Interface
CMS Content Management System
Drag’n’drop Thuật ngữ Drag and Drop
Eclipse Phần mềm miễn phí dùng phát triển các ứng dụng trên Java
http://www.eclipse.org/
HTML Hyper Text Markup Language
HTTP Hypertext Transfer Protocol
HTTPS Secure Hypertext Transfer Protocol
JBoss Web application server miễn phí
http://www.jboss.org/products/jbossas
JCR Java Content Repository
JDK Java Development Kit
JSR Java Specification Request
Lomboz plug-in giúp Eclipse giao tiếp với JBoss và tạo các dự án J2EE
http://www.objectlearn.com/index.html
MIME Multipurpose Internet Mail Extensions
MVC Mô hình thiết kế Model-View-Controller
ORB Object Request Broker
RMI-IIOP Remote Method Invocation over internet Inter-ORB Protocol
SOA Service Oriented Architecture
SOAP Simple Object Access Protocol
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 5 Đặng Đình Vương
SPI Service Provider Interface
URI Uniform Resource Identifiers
URL Uniform Resource Locator
XHTML eXtensible Hyper Text Markup Language
XML eXtensible Markup Language
WSRP web Services for Remote portlets
WYSIWYG What You See Is What You Get
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 6 Đặng Đình Vương
MỞ ĐẦU
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 7 Đặng Đình Vương
Chương 1
Giới thiệu đề tài
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 8 Đặng Đình Vương
Một cách đơn giản nhất, CMS là một hệ thống hỗ trợ người sử dụng trong việc
tạo ra các trang web, quản lý nội dung các trang web. Sau cùng, các trang web sẽ được
xuất bản để phân phối đến mọi người. Cả quy trình từ lúc tạo ra nội dung trang web,
quản lý nội dung được tạo ra và sau cùng phân phối nội dung này đều hoàn toàn tự
động. Hình vẽ sau sẽ mô tả cho quy trình tự động này.
Hình 1: Hệ CMS quản lý tự động nội dung trang web
Luận văn này được thực hiện trong quá trình thực tập của chúng tôi tại công ty
phần mềm Tường Minh (TMA). Khi luận văn bắt đầu thì hệ thống thống tin (intranet)
của công ty đang được xây dựng lại. Việc xây dựng này dựa trên các chuẩn mở và các
công nghệ, giải pháp mã nguồn mở.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 9 Đặng Đình Vương
Hình 2: Giao diện hệ thống intranet của công ty TMA
Hệ thống Intranet của công ty TMA hỗ trợ các công cụ, các chức năng như sau:
• Quản lý nhân sự
• Quản lý năng lực của nhân viên
• Quản lý tuyển dụng
• Quản lý thông tin các dự án
• Hệ quản lý tài liệu
• Tìm kiếm thông tin
• Hệ thống bảo mật
• Các sự kiện nội bộ 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ú 10 Đặng Đình Vương
Hệ thống thông tin này nếu được nhìn dưới góc độ của người phát triển sẽ bao
gồm các thành phần như sau:
Portal được xây dựng dựa trên Liferay
HR
Employee
Contact
Project
Information
Các ứng dụng
Recruitment PA Event
Các dịch vụ
HR Recruitment Search
Các thành phần chức năng
Search
Engine
Authentifi-
cation
Scheduling
System
Workflow
Engine
Các thành
phần phi chức
năng
Cung cấp
Cung cấp
Cung cấp
DMS
CMS
Reporting
Engine
Hình 3: Hệ thống thông tin hiện tại của công ty TMA
Hệ thống thông tin này bao gồm các ứng dụng, các dịch vụ dùng để hỗ trợ hoạt
động cho các ứng dụng. Ngoài ra, còn có các thành phần chức năng dùng để cung cấp
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 11 Đặng Đình Vương
các chức năng cho các dịch vụ. Các thành phần phi chức năng dùng để hỗ trợ hoạt
động cho các ứng dụng, các dịch vụ và các thành phần chức năng.
Hệ CMS cần xây dựng cho công ty TMA sẽ thuộc nhóm các thành phần phi
chức năng như trên hình vẽ trên đã minh hoạ.
Mục đích chính của đề tài này là xây dựng và tích hợp CMS module vào trong
hệ thống intranet của công ty TMA. Để thực hiện điều này, chúng tôi đã thực hiện 3
công việc chính như sau:
• Nghiên cứu về CMS.
• Tìm hiểu và so sánh các giải pháp xây dựng CMS để chọn ra giải pháp
thích hợp nhất với yêu cầu công ty.
• Tích hợp giải pháp đã chọn vào trong hệ thống intranet của công ty.
Chúng tôi thực hiện đề tài này ngoài mong muốn bảo vệ thành công khoá luận
của mình, còn muốn qua đó học hỏi thêm nhiều kiến thức và kinh nghiệm trong việc
phát triển một hệ CMS, một lãnh vực mới mẻ và đầy tiềm năng.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 12 Đặng Đình Vương
TỔNG QUAN
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 13 Đặng Đình Vương
Chương 2
Tổng quan về sự phát triển của các hệ CMS
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 14 Đặng Đình Vương
Xây dựng hệ thống CMS là một lãnh vực chỉ mới xuất hiện trong 6 năm gần
đây. Công ty Microsoft chỉ mới tham gia lãnh vực này vào năm 2002. Ở Việt Nam, số
lượng các công ty xây dựng và sử dụng các hệ CMS vẫn rất giới hạn do đây vẫn còn là
lãnh vực quá mới mẻ ở nước ta.
Tuy chỉ mới xuất hiện gần đây nhưng lãnh vực này cũng đạt được một số kết
quả khả quan. Các công nghệ và các tiêu chuẩn đã được đề ra để phát triển các hệ
CMS.
Đa phần các công ty phát triển các hệ CMS đều với mục đích kinh doanh. Bên
cạnh đó cũng có những công ty, tổ chức và cá nhân cung cấp các giải pháp CMS của
họ dưới dạng mã nguồn mở hay miễn phí.
Các công nghệ sử dụng cho việc phát triển các hệ CMS cũng rất đa dạng. Sự đa
dạng này có thể thấy rõ qua thống kê sau đây:
• Java: CMS Genie, CMS Master, Cofax, Contelligent, Daisy, Eplica,
imCMS, Jahia, jNetPublish, Magnolia, NetPotential CM…
• Java Script: CMS Master, Complete Site Manager, Contelligent, e107,
eazyCMS, Magnolia, NetPotential CMS, Open CMS…
• PHP: Acuity CMS, AGPCMS, Aiyoota!-CMS, Back-End CMS, BxCMS,
Caravel, CathDesign CMS, Complete Site Manager, dotWidget CMS,
e107, eazyCMS, EGOCMS, fly CMS, Jaws, Mambo, Komodo CMS,
OpenPHPNuke, PostNuke…
• C++: Lighthouse, Manila…
• ASP: Acuity CMS, Baseline CMS…
• Cold Fusion: AssetNow, EasyConsole CMS…
• ASP.NET: AxCMS.net, Composite CMS, contentXXL - ASP.NET
CMS, DotNetNuke, Dozing Dogs ASP.NET CMS, Dynamicweb…
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 15 Đặng Đình Vương
• VB.NET: AxCMS.net, contentXXL - ASP.NET CMS, Dozing Dogs
ASP.NET CMS…
• C#: AxCMS.net, contentXXL - ASP.NET CMS, Dozing Dogs ASP.NET
CMS, Rainbow…
• Python: Easy Publisher…
Một số hệ CMS được xây dựng như là một thành phần của portal. Số còn lại
được phát triển dưới dạng một ứng dụng hoạt động độc lập. Ngoài 2 dạng CMS vừa
nêu thì việc sử dụng một hệ CMS độc lập để tích hợp vào một portal có sẵn vẫn rất mới
mẻ. Do đó, các tài liệu về công việc này rất giới hạn và số lượng các người phát triển
am tường về lãnh vực này cũng rất hiếm.
Thật vậy, trong quá trình thực hiện đề tài, khi chúng tôi gặp các vấn đề và đem
các vấn đề này để hỏi các lập trình viên chuyên phát triển các hệ CMS thì họ cũng
không có câu trả lời xác đáng cho các vấn đề chúng tôi đã gặp phải.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 16 Đặng Đình Vương
NGHIÊN CỨU
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 17 Đặng Đình Vương
Chương 3
Nhu cầu sử dụng hệ CMS trong các tổ chức
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 18 Đặng Đình Vương
1. Nhu cầu hiện tại
1.1 Tình hình các web site của các tổ chức ở Việt Nam
Ở Việt Nam, theo đà phát triển của kinh tế, số lượng các doanh nghiệp và các tổ
chức xuất hiện này càng nhiều. Các tổ chức này đều có nhu cầu cung cấp thông tin cho
khách hàng của mình. Do đó, việc tạo ra các web site cho các tổ chức này là tối cần
thiết.
Tuy nhiên, nội dung các web site của Việt Nam đa số còn sơ sài và không đáp
ứng được nhu cầu của khách hàng. Một trong các lý do chính của tình trạng này là sự
thiếu cập nhật thông tin lên các web site. Nhưng nguyên nhân sâu xa về mặt kỹ thuật là
thiếu các phần mềm dùng để cập nhật và quản lý nội dung các web site.
1.2 Nhu cầu cập nhật và quản lý nội dung
1.2.1 Nhu cầu của các doanh nghiệp
Để cập nhật thông tin cho các trang web trong doanh nghiệp, người ta cần phải
thu thập các thông tin từ nhiều nguồn khác nhau. Sau đó, các thông tin này sẽ được
chuyển cho nhóm phụ trách về web site của doanh nghiệp đó để cập nhật lên web site
của họ.
Hình vẽ sau sẽ minh họa cho quy trình cập nhật thông tin này
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 19 Đặng Đình Vương
Hình 4: Quy trình cập nhật thông tin trong doanh nghiệp
Với một hệ CMS, doanh nghiệp không cần phải có nhóm phụ trách web bởi vì
mọi thao tác cập nhật thông tin đều được làm một cách tự động. Ngoài ra, thời gian cập
nhật nội dung cũng được giảm thiểu một cách đáng kể.
Hình vẽ sau sẽ minh họa cho quy trình cập nhật thông tin trong doanh nghiệp
khi sử dụng một hệ CMS.
Hình 5: Quy trình cập nhật thông tin trong doanh nghiệp khi sử dụng CMS
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 20 Đặng Đình Vương
1.2.2 Nhu cầu của các tờ báo điện tử
Trong các toà soạn báo điện tử, để cập nhật thông tin thường xuyên, các phóng
viên và các nhà báo phải tập hợp thông tin từ nhiều nguồn khác nhau. Sau đó, các
thông tin này phải chờ sự kiểm duyệt. Các thông tin sau khi được kiểm duyệt sẽ
chuyển cho đội ngũ làm web của toà soạn để cập nhật lên web site của báo điện tử.
Hình 6: Quy trình cập nhật thông tin trong một tờ báo địên tử
Nếu sử dụng một hệ CMS trong toà soạn của mình, toàn soạn báo có thể giảm đi
một số bước trong quy trình cập nhật thông tin của họ. Do đó, họ có thể giảm thiểu thời
gian và công sức làm công việc này. Bởi vì khi đã sử dụng hệ CMS thì họ không cần
phải có đội ngũ làm web cho toàn soạn và các biên tập viên có thể duyệt các thông tin
này bằng cách sử dụng hệ CMS.
Ngoài ra, hệ CMS còn có thể giúp các phóng viên và các nhà báo trong việc thu
thập thông tin.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 21 Đặng Đình Vương
Hình vẽ sau sẽ minh hoạ quy trình cập nhật thông tin trong một toà soạn báo có
sử dụng hệ CMS
Hình 7: Quy trình cập nhật thông tin trong toà soạn báo điện tử có sử dụng hệ CMS
1.2.3 Nhu cầu trong các hệ thống thông tin của các công ty
Trong các hệ thống thông tin của các công ty, người ta phân thành các phòng
ban và các dự án. Các phòng ban và các dự án này có nhiệm vụ phải cung cấp thông tin
cho nhóm làm web của công ty. Sau đó, thông tin này mới được cập nhật lên hệ thống
Intranet.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 22 Đặng Đình Vương
Quy trình cập nhật thông tin này được minh hoạ bằng hình vẽ dưới đây.
Hình 8: Quy trình cập nhật thông tin trong một hệ thống thông tin
Trong quy trình này, các phòng ban và các dự án sở hữu thông tin riêng của họ.
Tuy nhiên, họ không có quyền đưa các thông tin này lên hệ thống intranet của công ty.
Việc cập nhật thông tin bị phụ thuộc vào nhóm làm web. Do đó, khi nhóm làm web
nhận được thông tin từ các phòng ban và các dự án, họ cần phải kiểm tra lại tính chính
xác của thông tin đó trước khi cập nhật thông tin lên hệ thống intranet.
Do các phòng ban và các dự án quá bận rộn với công việc của họ, họ thường
không cung cấp thông tin thường xuyên cho nhóm làm web để cập nhật thông tin về
phòng ban hay dự án của mình. Khi những thông tin trên intranet của công ty quá lỗi
thời vì không được cập nhật thường xuyên thì nhóm làm web mới nhắc nhở các phòng
ban và các dự án cung cấp thông tin cho mình để cập nhật. Và điều này thật sự làm
chán nản cả nhóm làm web lẫn các phòng ban và các thành viên của dự án.
Ngược lại, khi sử dụng một hệ CMS trong hệ thống thông tin của công ty, các
phòng ban và các dự án có thể cập nhật các thông tin của họ một cách nhanh chóng mà
không cần phải phụ thuộc vào nhóm làm web. Hơn nữa, chính các phòng ban và các dự
án sẽ chịu trách nhiệm về các thông tin mà mình đưa lên cũng như là tình trạng thông
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 23 Đặng Đình Vương
tin thiếu cập nhật về phòng ban hay dự án của mình. Do đó, các phòng ban và các dự
án sẽ cảm thấy có trách nhiệm hơn với việc cập nhật thông tin thường xuyên này.
Hình 9: Quy trình cập nhật thông tin trong một hệ thống thông tin có CMS
Ngoài ra, hệ thống thông tin của công ty có thể sử dụng hệ CMS này như một
công cụ để quản lý nội dung. Và công cụ này được sẽ được sử dụng bởi nhiều ứng
dụng khác nhau trên intranet.
2. Những lợi ích mà một hệ CMS mang lại cho các công ty
Do đề tài này được thực hiện nhằm phát triển một hệ CMS cho công ty TMA,
do đó, chúng tôi chỉ quan tâm và nêu ra những lợi ích mà một hệ CMS mang lại cho hệ
thống intranet của Công ty. Những lợi ích này được trình bày dưới đây:
• Cập nhật thông tin nhanh chóng.
• Giảm thời gian, công sức và chi phí cho việc cập nhật thông tin.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 24 Đặng Đình Vương
• Các ứng dụng khác có thể sử dụng hệ CMS này như một công cụ hỗ trợ
cho việc cung cấp và cập nhật thông tin.
• Giúp người sử dụng dễ dàng tạo ra nội dung các trang web trong một môi
trường thuận tiện.
• Phân quyền sử dụng tương ứng với mỗi người sử dụng.
• Cá nhân hoá thông tin người sử dụng.
• Cung cấp cơ chế tìm kiếm thông tin.
• Áp dụng các template để giúp cho việc tạo ra nội dung một cách đồng
nhất.
• Cho phép thay đổi dễ dàng cách thức hiển thị của các trang web trong
web site.
• Chấm dứt tình trạng thông tin thiếu cập nhật trên các web site.
• Nâng cao trách nhiệm của các phòng ban và các đề án trong công việc
cập nhật thông tin về phòng ban và đề án.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 25 Đặng Đình Vương
Chương 4
Hệ thống intranet hiện tại 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ú 26 Đặng Đình Vương
1. Yêu cầu khi phát triển hệ thống intranet của công ty TMA
1.1 Tình hình hiện tại
Khi đề tài này được bắt đầu thì nhóm TIS (TMA Information System) đang phát
triển một hệ thống intranet mới cho công ty dựa trên kiến trúc SOA (Service Oriented
Architecture). Hình vẽ sau sẽ minh hoạ cho kiến trúc này.
Portal được xây dựng dựa trên Liferay
Hình 10: Kiến trúc SOA của intranet của công ty TMA
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 27 Đặng Đình Vương
Trong hình vẽ trên, chúng ta có thể liệt kê một số thành phần như sau:
• Các ứng dụng: quản lý nhóm, thông tin liên hệ nhân viên, quản lý nhân
sự, quản lý thông tin các dự án…
• Các Dịch vụ: Dịch vụ bảo mật, dịch vụ tuyển dụng…
• Các thành phần chức năng: Các gói thư viện dùng chung…
• Các thành phần phi chức năng: Hệ quản lý tài liệu, Hệ quản lý nội dung,
Hệ tìm kiếm thông tin, Hệ hỗ trợ làm báo cáo…
Trong quá trình xây dựng hệ thống intranet, công ty đề ra các yêu cầu để phát
triển một hệ thống ổn định, chẳng hạn các yêu cầu về hệ thống và các yêu cầu về triển
khai. Các thành viên tham gia phát triển hệ thống và các thành phần liên quan phải tuân
thủ các quy định đã đề ra.
1.2 Quy định về kiến trúc
1.2.1 Kiến trúc mạnh
Một kiến trúc mạnh được xây dựng phải bao gồm các tính chất sau:
• Có thể dễ dàng mở rộng kiến trúc intranet trong tương lai.
• Hệ thống phải hoạt động ổn định.
• Intranet có thể sử dụng dưới dạng một hệ thống phân tán.
• Intranet hỗ trợ nhiều loại ứng dụng.
• Intranet hoạt động với hiệu suất cao.
• Intranet sử dụng các thành phần mã nguồn mở và miễn phí.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 28 Đặng Đình Vương
1.2.2 Xây dựng các công cụ hệ thống phi chức năng
Hệ thống intranet bao gồm một số công cụ phi chức năng như sau :
• Thành phần bảo mật: hệ thống intranet có một hệ thống bảo mật cho
phép phân quyền những người sử dụng trên hệ thống.
• Kiểm soát quy trình xử lý: hệ thống intranet xác định cơ chế quản lý các
quy trình xử lý.
• Hệ quản lý nội dung trang web: hệ thống intranet cung cấp các thành
phần dùng để quản lý nội dung các trang web.
• Hệ quản lý tài liệu: hệ thống intranet cung cấp các thành phần dùng để
quản lý tài liệu trong hệ thống hệ thống intranet.
• Các template của giao diện người dùng: hệ thống intranet hỗ trợ các
template để giúp cho người sử dụng tạo ra nhanh chóng và dễ dàng nội
dung một cách đồng nhất.
1.2.3 Bảo mật
• Hỗ trợ nhiều loại người dùng: do trong công ty TMA có nhiều nhóm và
trong mỗi nhóm có nhiều vị trí công việc khác nhau nên cần phải hỗ trợ
nhiều loại người dùng khác nhau.
• Truy cập mọi nơi: do các nhân viên của công ty có nhu cầu truy cập vào
mạng intranet của công ty khi họ trở về nhà của họ nên hệ thống intranet
sẽ hỗ trợ cơ chế để đáp ứng nhu cầu này
• Ghi nhận truy cập: hệ thống intranet ghi nhớ các thao tác trên hệ thống
trong phiên làm việc của từng 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ú 29 Đặng Đình Vương
1.2.4 Khả năng tích hợp
Các yêu cầu này cho phép tích hợp dễ dàng các module vào trong hệ thống
intranet của công ty:
• Kiến trúc mã nguồn mở: đặc điểm này cho phép hỗ trợ nhiều công nghệ
khác nhau cùng hoạt động .
• Sử dụng các thư viện có sẵn thay vì xây dựng từ đầu.
1.3 Yêu cầu lúc phát triển
Do hệ thống intranet được xây dựng để sử dụng trong nội bộ của công ty TMA,
Công ty đã đặt ra các yêu cầu trong quá trình phát triển như sau:
• Cần phải sử dụng các công cụ mã nguồn mở và miễn phí để phát triển hệ
thống.
• Cần phải sử dụng các công cụ trên nền web để tích hợp dễ dàng các công
cụ này vào hệ thống thông tin hiện tại của TMA.
• Hệ thống intranet và các thành phần của nó được xây dựng dựa trên mã
nguồn mở và miễn phí.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 30 Đặng Đình Vương
2. Portal hiện tại của TMA
2.1 Đặc điểm và các thành phần của portal
Theo như thiết kế ban đầu, portal của công ty TMA bao gồm các các đặc điểm
sau:
• Cơ chế bảo mật: đây chính là đặc điểm quan trọng nhất của portal dùng
để kiểm soát truy cập của người sử dụng.
• Khả năng tích hợp: đặc điểm này cho phép tích hợp các thành phần khác
nhau vào trong nhân của portal.
• Hệ quản trị tài liệu: hệ thống này dùng để quản lý các tài liệu sử dụng
trong nội bộ công ty.
• Hệ quản trị nội dung: hệ thống này dùng để quản lý nội dung các trang
web được sử dụng trong nội bộ Công ty.
• Cơ chế tìm kiếm: cơ chế cho phép các nhân viên trong Công ty tìm kiếm
thông tin cần thiết của họ.
• Cơ chế hỗ trợ báo cáo.
• Hệ quản lý quy trình hoạt động: hệ thống này giúp cho các nhân viên
trong công việc của họ. Khi có sự thay đổi xảy ra trong quy trình làm
việc thì chỉ cần định nghĩa lại thứ tự thực hiện các công việc trong quy
trình để nhận được cùng một kết quả như lúc chưa thay đổi, thay vì phải
viết lại toàn bộ quy trình làm việc.
• Hệ quản lý lịch trình: hệ thống hoạt động vào một thời điểm định trước
trong tương lai.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 31 Đặng Đình Vương
Trong các thành phần nêu trên, có một số thành phần đã được xây dựng hoàn
thiện và số còn lại đang trong giai đoạn thực hiện.
2.2 Các thành phần đã được xây dựng
Vào thời điểm bắt đầu thực hiện luận án này, các thành phần sau đã được xây
dựng và tích hợp vào portal 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ú 32 Đặng Đình Vương
Module Mã nguồn mở sử dụng
Portal Liferay
http://www.liferay.com/cms/servlet/HOME-
INDEX
Document Management System OpenEDMS và Knowledge Tree
http://www.openedms.com/edms/index.html
http://theknowledgetreeinc.com/
Search Engine http://Dig
http://www.htdig.org/
Report Engine Datavision
http://datavision.sourceforge.net/
Workflow Engine Bonita
http://bonita.objectweb.org/
Bảng 1: Một số thành phần đã được xây dựng trong hệ thống portal của Công ty
Các đặc điểm và các thành phần trong portal của công ty được thể hiện trong
hình vẽ sau:
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 33 Đặng Đình Vương
Enterprise
Portal
Document
Management
Integration
Reporting
engine
Security
Workflow
management
Content
management
Scheduling
system
Searching
Engine
Hình 11: Các thành phần trong portal của công ty TMA
ht://Dig
Liferay
BonitaDatavision
OpenEDMS &
Knowledge Tree
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 34 Đặng Đình Vương
2.3 Kiến trúc hệ thống của portal
2.3.1 Kiến trúc hệ thống của các portal phổ biến
Hình 12: Kiến trúc hệ thống của các portal phổ biến
Trong các portal phổ biến, người ta sử dụng trình duyệt web và giao thức HTTP
để kết nối đến các ứng dụng web trên portal. Mỗi portal có duy nhất một portlet/servlet
container. Các ứng dụng web của portal giao tiếp với portlet/servlet container bởi các
APIs và các SPIs.
Portlet/servlet container chứa toàn bộ các portlet. Các portlet này cung cấp các
APIs để portlet/servlet container có thể sử dụng các chức năng của nó
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 35 Đặng Đình Vương
2.3.2 Kiến trúc hệ thống của portal TMA
Hình 13: Kiến trúc hệ thống của portal TMA
Trong kiến trúc này, khi ta nhập vào dữ liệu dạng HTML, WML hay XML
(“Web services” trong hình vẽ), các dữ liệu này đi qua 3 tầng: trình diễn, xử lý và dữ
liệu của mô hình MVC. Trong 3 tầng này, người ta có thể sử dụng các công nghệ như:
struts, servlet, spring, EJB, Hibernate, JMS…
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 36 Đặng Đình Vương
Ngoài dữ liệu dạng HTML, WML hay XML, chúng ta còn có thể sử dụng các
đối tượng dưới dạng J2EE, J2SE hay J2ME.
3. Công nghệ được sử dụng để phát triển hệ thống intranet
Trong quá trình xây dựng hệ thống intranet, các công nghệ và kỹ thuật sau đã
được sử dụng:
• Multi-platform: Linux, Solaris, Windows
• Platform : .NET, J2EE
• XML, SOAP, HTTP, RMI-IIOP, WSRP...
• Hệ quản trị cơ sở dữ liệu: Hypersonic, MySQL, PostgreSQL, SQL
Server.
• Web application server: JBoss, TomCat, Sun ONE, webLogic, Jonas.
4. Các chuẩn dùng để phát triển hệ thống
Trong quá trình phát triển hệ thống intranet của Công ty, Công ty đã quyết định
các thành phần được xây dựng cần tuân theo các chuẩn trên thế giới nếu có thể được.
Sự phát triển các thành phần dựa trên các chuẩn này có các lợi ích như sau:
• Sử dụng một chuẩn để phát triển sẽ cần ít thời gian và chi phí hơn.
• Trên thế giới đều biết đến chuẩn được sử dụng để phát triển, do đó sẽ có
nhiều sự hỗ trợ hơn trong quá trình xây dựng các thành phần.
• Có nhiều mã nguồn mở được xây dựng dựa trên các tiêu chuẩn, do đó có
thể tận dụng các thành phần này cho portal.
• Các thành phần được xây dựng dựa trên các chuẩn sẽ tích hợp dễ dàng
hơn vào hệ thống hiện tại.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 37 Đặng Đình Vương
• Để mở rộng hệ thống hiện tại trong tương lai, cần phải xây dựng các
thành phần theo chuẩn.
Sau đây là các chuẩn được yêu cầu sử dụng trong quá trình phát triển hệ thống
thông tin của công ty:
• Chuẩn JSR 168 dùng để xây dựng các portlet.
• Chuẩn JSR 170 để xây dựng hệ CMS.
5. Nhu cầu của công ty TMA khi xây dựng một hệ CMS
Hệ CMS được xây dựng để sử dụng trong công ty TMA phải bao gồm các chức
năng của một hệ CMS thông thường. các chức năng này được mô tả như sau:
• Quản lý nội dung.
Tạo, xoá và sửa đổi nội dung.
Cập nhật nội dung.
• Quản lý vai trò
Tạo, xoá, sửa đổi vai trò.
Cập nhật thông tin của vai trò.
Cho phép vai trò đăng nhập vào hệ thống.
Ngăn cấm vai trò đăng nhập vào hệ thống.
• Phân quyền cho các vai trò.
Mỗi vai trò có thể có nhiều quyền khác nhau và các quyền này được
gán cho vai trò bởi người quản lý web site.
Các quyền này có thể là đọc, ghi, đọc và ghi…
• Quản lý 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ú 38 Đặng Đình Vương
Tạo, xoá bỏ, sửa đổi thông tin người sử dụng.
Cập nhật thông tin người sử dụng.
Cho phép người sử dụng đăng nhập vào hệ thống.
Ngăn cấm người sử dụng đăng nhập vào hệ thống.
• Gán các vai trò cho người sử dụng.
Do trong một tổ chức tồn tại rất nhiều phòng ban và vị trí công việc
khác nhau, do đó cần phải phân chia vai trò cho từng người sử dụng
khác nhau trên hệ thống tuỳ thuộc vào từng phòng ban và vị trí công
việc của họ.
Một người sử dụng có thể có nhiều vai trò khác nhau trong hệ thống
và các vai trò này được gán bởi người quản lý web site.
• Sử dụng các template cho các trang web: các trang web cần phải đồng bộ
với nhau về cách thức hiển thị, do đó cần phải sử dụng các template
giống nhau cho toàn bộ web site.
• Phân loại nội dung: điều này là cần thiết để tránh tình trạng dữ liệu bị sắp
xếp không theo trật tự và để có thể tìm kiếm dễ dàng thông tin cần thiết.
• Tìm kiếm thông tin: do nội dung trang web và các thông tin liên quan
ngày càng nhiều, do đó cần phải có cơ chế tìm kiếm thông tin để hỗ trợ
các nhân viên trong các trường hợp cần thiết.
• Thay đổi các thông số cấu hình: hệ thống này cho phép thay đổi các
thông tin cấu hình để tối ưu hoá hoạt động của hệ thống.
Ngoài các nhu cầu cầu của một hệ CMS thông thường, công ty TMA còn có 2
nhu cầu như sau:
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 39 Đặng Đình Vương
5.1 Nhu cầu chia sẻ thông tin giữa các dự án và các vị trí công
việc
Trong công ty TMA có rất nhiều dự án và trong mỗi dự án lại tồn tại nhiều vị trí
công việc khác nhau, bao gồm có 3 vị trí như sau:
• Quản lý dự án.
• Quản lý nhóm.
• Thành viên bình thường.
Mỗi dự án sở hữu các thông tin riêng về dự án đó và các công việc họ đang thực
hiện. Một phần các thông tin này có thể cho phép mọi người trong công ty đều có thể
xem được. Phần còn lại chỉ cho phép các thành viên trong nhóm có thể truy cập vào
thôi.
Mỗi dự án có một người phụ trách cập nhật thông tin về dự án đó. Người này
thông thường là trưởng dự án hoặc trưởng nhóm. Người này có quyền thực hiện một số
thao tác như: tạo, xoá bỏ, sửa đổi…các thông tin của nhóm trên intranet. các thành viên
khác của nhóm chỉ có quyền xem trên các thông tin của nhóm.
Hình vẽ sau sẽ minh hoạ cho điều vừa trình bày
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 40 Đặng Đình Vương
Hình 14: Chia sẻ thông tin giữa các dự án và vị trí công việc trong công ty TMA
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 41 Đặng Đình Vương
5.2 Xây dựng hệ CMS dưới dạng một portlet có thể được sử
dụng bởi các ứng dụng và các thành phần khác
Như đã trinh bày như trên, chúng ta biết rằng hệ CMS xây dựng là một thành
phần phi chức năng dùng để cung cấp chức năng cho các ứng dụng, các dịch vụ, các
thành phần chức năng khác. Do đó, cần phải xây dựng hệ CMS dưới dạng một portlet
để có thể sử dụng bởi các ứng dụng và các thành phần khác trên intranet.
5.3 Các kỹ thuật sử dụng trong quá trình phát triển
Do hệ CMS này được xây dựng để tích hợp vào hệ thống thông tin có sẵn của
công ty TMA dưới dạng một portlet. Do đó, có một số quy định trong quá trình phát
triển hệ CMS này như sau:
• Hệ CMS này phải được xây dựng dưới dạng một portlet: điều này cần
thiết để tích hợp vào portal hiện tại của Công ty.
• Hệ CMS này phải tuân theo chuẩn JSR 168: do chuẩn JSR 168 là chuẩn
dùng để tích hợp một portlet vào portal.
• Hệ CMS phải được lập trình bằng Java: portal hiện tại của công ty được
lập trình bằng Java và các portlet trên portal tuân theo chuẩn JSR 168.
• Hệ CMS phải được xây dựng dựa trên các giải pháp mã nguồn mở và
miễn phí.
• Sử dụng chuẩn JSR 170 để xây dựng hệ thống này nếu có thể được: do
chuẩn JSR 170 là chuẩn dùng để hỗ trợ việc xây dựng các hệ CMS, việc
xây dựng hệ thống này nên tuân theo chuẩn JSR 170 để có thể mở rộng
hệ thống này trong tương lai nếu có nhu cầu.
• Hệ thống này phải có khả năng hoạt động trên nền Linux: portal hiện tại
của công ty hoạt động trên Linux.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 42 Đặng Đình Vương
• Hệ thống này phải có khả năng họat động trên application server JBoss:
do portal hiện tại của công ty hoạt động trên JBoss.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 43 Đặng Đình Vương
Chương 5
Chuẩn JSR 168
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 44 Đặng Đình Vương
1. Giới thiệu về chuẩn JSR 168
Chuẩn JSR 168 dùng để định nghĩa portlet và cách thức giao tiếp giữa portlet và
portal.
Phiên bản hiện tại của chuẩn này là 1.0 được đưa ra bởi Sun Microsystems vào
ngày 29/08/2003. (http://jcp.org/en/jsr/detail?id=168)
Hình 15: Mô hình chuẩn JSR 168
Hình trên mô tả sự giao tiếp giữa portal và các portlet. Sự giao tiếp này được
thực hiện thông qua các API được cung cấp bởi chuẩn JSR 168.
Portlet
Portlet
PortletPortlet
Portlet
API
API
API
API
API
JSR-168
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 45 Đặng Đình Vương
2. Một số khái niệm chính
2.1 Portal
Portal là một ứng dụng Web dùng để tích hợp các nội dung từ các nguồn khác
nhau vào cùng một trang Web. Các nội dung có thể được cấu hình tùy thuộc vào từng
người sử dụng khác nhau mà Portal cho phép. Một Portal có thể chứa nhiều Portlet
2.2 Portlet
Portlet là một thành phần (component) dựa trên nền Web sử dụng các công nghệ
của Java. Portlet được quản lý bởi một Portlet Container. Portlet dùng để xử lý các yêu
cầu và tạo ra các thành phần dữ liệu động để phản hồi yêu cầu.
Portlet có thể tích hợp vào Portal và Portal sẽ cung cấp một tầng trình diễn cho
các thành phần của Portlet.
Nội dung được tạo ra bởi Portlet được gọi là Fragment. Một Fragment là một
mảnh dữ liệu được tạo bởi các ngôn ngữ như: HTML, XHTML, WML… theo một
định dạng được quy định. Các Fragment này có thể được kết hợp với các Fragment của
các Portlet khác để hình thành trang Web của Portal.
Người sử dụng tương tác với Portlet thông qua cơ chế yêu cầu/phản hồi được
cung cấp bởi Portlet. Nội dung phản hồi yêu cầu được Portlet tạo ra và nội dung này
cũng tùy thuộc vào cấu hình ứng với từng 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ú 46 Đặng Đình Vương
2.3 Portlet Container
Porlet Container cung cấp một môi trường lúc Runtime chứa đựng và quản lý
chu kỳ sống của một Portlet.
Portlet Container nhận yêu cầu từ Portal và chuyển yêu cầu này đến Portlet
tương ứng để Portlet xử lý yêu cầu và tạo nội dung phản hồi.
3. So sánh Portlet và Servlet
3.1 Điểm giống nhau giữa Portlet và Servlet
• Cùng là thành phần Web sử dụng công nghệ của Java.
• Được chứa đựng và quản lý bởi một Container.
• Tạo ra nội dung dữ liệu động để phản hồi lại yêu cầu.
• Cùng tương tác với người sử dụng thông qua cơ chế yêu cầu/phản hồi.
3.2 Điểm khác nhau giữa Portlet và Servlet
• Portlet chỉ tạo ra các Fragment chứ không tạo ra toàn bộ tài liệu. Portal sẽ
tập hợp các Fragment do Portlet tạo ra thành nội dung của trang Web trên
Portal..
• Không cần phải kết hợp một Portlet với một địa chỉ URL như Servlet
• Người sử dụng tương tác với Portlet thông qua Portal.
• Portlet có thể được sử dụng nhiều nơi trên cùng một trang Web của
Portal.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 47 Đặng Đình Vương
3.3 Đặc trưng của Portlet mà không có ở servlet
• Portlet cho phép truy cập và lưu trữ cầu hình và tối ưu hoá dữ liệu.
• Portlet cho phép truy cập vào các thông tin về người sử dụng.
• Portlet hỗ trợ chức năng viết lại URL ( URL Rewriting Function ) cho
phép tạo ra liên kết trong nội dung của nó.
• Portlet có thể lưu trữ dữ liệu tạo thời trong phiên làm việc của Portlet ở 2
phạm vi: Phạm vi ứng dụng và Phạm vi cá nhân.
4. Giao diện portlet
Giao diện Portlet khai báo các API cơ bản nhất của một Portlet. Mọi Portlet
được xây dựng đều phải hiện thực hoá trực tiếp hoặc gián tiếp giao diện Portlet.
Lớp GenericPortlet hiện thực hoá giao diện Portlet và định nghĩa các chức năng
cơ bản nhất mà một Portlet cần có. Do đó, khi xây dựng Portlet, lập trình viên nên mở
rộng trực tiếp hoặc gián tiếp lớp GenericPorlet này.
Một Portlet được quản lý thông qua chu trình sống của nó, bắt đầu từ lúc Portlet
được tải lên, tạo thể hiện của nó và khởi tạo, hoạt động để phản hồi yêu cầu của người
sử dụng đến lúc nó được loại bỏ. Các phương thức được gọi đến trong chu trình sống
của Portlet là:
• Gọi phương thức init trong quá trình khởi tạo của Portlet
• Nếu yêu cầu do máy khách gởi tới là yêu cầu hành động (Action
Request) thì phương thức processAction được gọi. Nếu yêu cầu do máy
khách gởi tới là yêu cầu biểu hiện (Render Request) thì phương thức
processAction được gọi.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 48 Đặng Đình Vương
• Khi Portlet Container xác định một Portlet không còn sử dụng nữa thì gọi
đến phương thức destroy của Portlet đó. Khi phương thức destroy được
gọi thì Portlet sẽ giải phóng tài nguyên hệ thống mà nó đang sử dụng và
lưu lại trạng thái hiện thời của nó.
5. Portlet URL
Một Portlet có thể tạo ra URL tham chiếu đến chính Portlet đó. Khi đó các URL
này được gọi là Portlet URL.
Để tạo ra một Portlet URL thì Porlet cần phải sử dụng đối tượng PorletURL.
Nếu phương thức createActionURL được gọi thì sẽ tạo ra một URL hành động và nếu
phương thức createRenderURL được gọi thì tạo ra một URL trình diễn.
6. Portlet Mode
Kiểu Portlet xác định chức năng mà Portlet hiện đang thực hiện. Thông thường,
Portlet thực hiện các tác vụ và tạo ra nội dung tùy thuộc vào chức năng hiện thời. Kiểu
Portlet cho biết những tác vụ nào một Portlet cần thực hiện và những nội dung nào
Portlet cần phải tạo ra.
Có 3 kiểu Portlet được quy định là:
• VIEW
Chức năng chính của Portlet khi sử dụng kiểu VIEW là tạo ra nội
dung cho biết trạng thái của Portlet
Lập trình viên sẽ hiện thực hóa kiểu VIEW bằng cách định nghĩa lại
phương thức doView của lớp GenericPortlet.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 49 Đặng Đình Vương
Mọi Portlet đều phải hỗ trợ kiểu VIEW
• EDIT
Trong kiểu EDIT, một Portlet sẽ cung cấp nội dung và cấu hình các
thành phần của nó để người sử dụng có thể tối ưu hóa họat động của
Portlet
Lập trình viên sẽ hiện thực hóa kiểu EDIT bằng cách định nghĩa lại
phương thức doEdit của lớp GenericPortlet.
Mọi Portlet không nhất thiết phải hỗ trợ kiểu VIEW
• HELP
Trong kiểu HELP, Portlet cung cấp những thông tin giúp đỡ người sử
dụng về Portlet. Những thông tin này có thể là những thông tin chung
về toàn bộ Portlet hoặc là các giúp đỡ cảm ngữ cảnh (Context-
sensitive help)
Các hằng số tượng trưng cho 3 kiểu Portlet được khai báo trong lớp
PortletMode
7. Window State
Trạng thái cửa sổ cho biết khoảng không gian trên trang Web Portal dành cho
nội dung của Portlet.
Có 3 trạng thái cửa sổ được định nghĩa :
• NORMAL: cho biết Porlet có thể chia sẻ trang Portal với các Portlet
khác. Ngoài ra, trạng thái này còn cho biết giới hạn hiển thị của thiết bị
do đó Portlet sẽ điều chỉnh kích thước phù hợp với vùng hiển thị.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 50 Đặng Đình Vương
• MAXIMIZED: cho biết chỉ có một Portlet hiển thị trên trang Portal hoặc
Portlet được ưu tiên hiển thị nội dung nhiều hơn các Portlet còn lại.
• MINIMIZED: Cho biết nội dung của Portlet chỉ được hiển thị ít nhất có
thể được hoặc không được hiển thị.
Các trạng thái cửa sổ được định trong lớp WindowState.
8. Portlet Request
Một yêu cầu gởi đến Portlet chứa các thông tin về yêu cầu từ phía máy khách,
các tham số của yêu cầu, nội dung dữ liệu yêu cầu, kiểu Portlet, trạng thái cửa sổ…
Yêu cầu được đại diện bởi một đối tượng và đối tượng này được truyền vào như
là đối số của phương thức processAction hay render.
Mỗi đối tượng yêu cầu chỉ có thể họat động trong phạm vi của một phương thức
processAction hay render
Các chức năng cần thiết của đối tượng PortletRequest được khai báo trong giao
diện PortletRequest.
9. Portlet Response
Một phản hồi của Portlet bao gồm những thông tin được tạo ra bởi Portlet gởi
trả về cho Portlet Container dựa trên yêu cầu được gởi đến như: sự thay đổi kiểu
Portlet, tiêu đề, nội dung… Portlet Container sẽ sử dụng những thông tin này để tạo ra
phản hồi đến người sử dụng, thông thường là một trang Web Portal.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 51 Đặng Đình Vương
Mỗi đối tượng phản hồi chỉ có thể họat động trong phạm vi của một phương
thức processAction hay render
Các chức năng cần thiết của đối tượng Portlet Response được khai báo trong
giao diện PortletResponse.
10. Portlet Preferences
Portlet thông thường được cấu hình cho phù hợp với từng người sử dụng. Các
thông tin về cấu hình của Portlet được gọi là Portlet Preference. Và Portlet Container
sẽ chịu trách nhiệm lưu giữ những thông tin cấu hình này.
Portlet có thể truy cập vào các thông tin cấu hình của nó thông qua giao diện
PortletPreferences. Và Portlet chỉ có thể thay đổi các thông tin về cấu hình của nó bên
trong phương thức processAction.
Định nghĩa Portlet xác định các thuộc tính preference mà một Portlet sử dụng.
Định nghĩa này bao gồm các giá trị khởi tạo và xác định xem thuộc tính này có phải là
thuộc tính chỉ đọc hay không.
11. Caching
Việc lưu các nội dung cần sử dụng vào vùng nhớ tạm thời được thực hiện nhằm
mục đích rút ngắn thời gian xử lý của Portlet, đồng thời cũng rút ngắn thời gian xử lý
của Server.
Đặc tả Portlet xác định cơ chế hết hạn việc lưu trữ nội dung lưu tạm thời này.
Cơ chế này họat động tùy thuộc và từng Portlet và từng người sử dụng Portlet. Nội
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 52 Đặng Đình Vương
dung được lưu trữ tạm thời không được chia sẻ giữa các người sử dụng khác nhau đang
sử dụng đồng thời cùng một Portlet.
Một Portlet muốn tăng thời gian xử lý bằng cách sử dụng cơ chế lưu trữ tạm
thời nội dung cần phải định nghĩa thời gian hết hạn nội dung lưu tạm thời (tính bằng
đơn vị giây) trong đặc tả triển khai của nó. Ví dụ sau đây cho biết một Portlet muốn nội
dung của nó được lưu trữ tạm thời với thời gian hết hạn là 300 giây.
...
<portlet>
...
<expiration-cache>300</expiration-cache>
...
</portlet>
...
Một Portlet nếu đã định nghĩa thời gian hết hạn lưu trữ dữ liệu tạm thời của nó
trong đặc tả triển khai của nó vẫn có thể được lập trình viên thay đổi
Thời gian hết hạn của việc lưu trữ tạm thời này có thể được thay đổi bằng cách
thay đổi thuộc tính của đối tượng RenderResponse.
Nếu thời gian hết hạn này được gán bằng 0 thì việc lưu trữ dữ liệu tạm thời bị
bỏ qua đối với Portlet. Nếu giá trị này được gán bằng -1 thì các nội dung được lưu tạm
thời của Portlet sẽ không bao giờ bị hết hạn.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 53 Đặng Đình Vương
Nếu một Portlet không định nghĩa thời gian hết hạn của dữ liệu lưu trữ tạm thời
trong đặc tả triển khai của nó thì việc thay đổi giá trị thời gian này trong đối tượng
RenderResponse sẽ không có tác dụng do sẽ bị Portlet Container bỏ qua.
Nếu nội dung của Portlet được lưu trữ tạm thời và chưa hết hạn, đồng thời
không có một yêu cầu nào đến Portlet từ phía người sử dụng thì Portlet Container sẽ sử
dụng nội dung được lưu trữ tạm thời khi cần thiết.
Nếu nội dung của Portlet được lưu trữ tạm thời và có yêu cầu đến Portlet từ phía
người sử dụng thì Portlet Container sẽ không sử dụng nội dung tạm thời được lưu trữ
mà sẽ gọi đến phương thức xử lý yêu cầu của Portlet
12. Ứng dụng Portlet
12.1 Các thành phần của ứng dụng Portlet
Ứng dụng Portlet là một ứng dụng Web nên ngoài việc bao gồm Portlet và đặc
tả triển khai Portlet, nó còn có thể chứa các thành phần khác như: Servlet, trang JSP,
các lớp… Do đó, bên cạnh các thông tin về ứng dụng Portlet, nó còn chứa đựng thông
tin về các thành phần được đưa vào ứng dụng Portlet.
12.2 Cấu trúc cây thư mục
Một ứng dụng Portlet cũng có cấu trúc cây thư mục được tổ chức giống như một
ứng dụng Web. Tuy nhiên có một số khác biệt như sau:
• Có thêm tập tin /WEB-INF/portlet.xml là tập tin đặc tả triển khai của
Portlet.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 54 Đặng Đình Vương
• Các lớp được sử dụng cho ứng dụng Portlet và các tài nguyên khác được
truy cập bởi ứng dụng Portlet cần phải được lưu trong thư mục
/WEB-INF/classes hoặc trong các tập tin JAR được lưu trong thư mục
/WEB-INF/lib.
12.3 Tập tin lưu trữ của ứng dụng Portlet
Một ứng dụng Portlet cũng được đóng gói như là một ứng dụng Web. Nghĩa là
sử dụng dạng WAR (Web Application Archive) khi triển khai ứng dụng.
13. Các đặc tả đóng gói và triển khai
13.1 Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet
Trong các ứng dụng Portlet, luôn tồn tại 2 tập tin đặc tả là:
• Tập tin web.xml dùng để đặc tả các tài nguyên của ứng dụng Web.
• Tập tin portlet.xml dùng để đặc tả các tài nguyên của ứng dụng Portlet.
Các tài nguyên nào không liên quan đến Portlet thì được khai báo trong tập tin
đặc tả web.xml. Còn các tài nguyên nào có liên quan đến Portlet thì được khai báo
trong tập tin portlet.xml . Ngòai ra, một số thông tin của Portlet cần phải được khai báo
trong tập tin web.xml như sau:
• Mô tả về ứng dụng Portlet được khai báo bằng thẻ <description>.
• Tên của ứng dụng Portlet được khai báo bằng thẻ <display-name>.
• Việc ánh xạ các vai trò bảo mật (Security Role Mapping) của ứng dụng
Portlet được khai báo bằng thẻ <security-role>.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 55 Đặng Đình Vương
13.2 Triển khai ứng dụng Portlet và ứng dụng Web
Các Portlet, đặc tả triển khai và mọi tài nguyên đều phải được đóng gói trong
cùng một tập tin WAR. Trong đó, thư mục WEB-INF bao gồm các thành phần:
• Tập tin đặc tả triển khai /WEB-INF/portlet.xml
• Các lớp của Portlet nằm trong thư mục /WEB-INF/classes
• Các tập tin JAR được lưu trong thư mục /WEB-INF/lib
Một ví dụ về cấu trúc cây thư mục của ứng dụng Portlet như sau:
/images/myButton.gif
/META-INF/MANIFEST.MF
/WEB-INF/web.xml
/WEB-INF/portlet.xml
/WEB-INF/lib/myHelpers.jar
/WEB-INF/classes/com/mycorp/servlets/MyServlet.class
/WEB-INF/classes/com/mycorp/portlets/MyPortlet.class
/WEB-INF/jsp/myHelp.jsp
Ứng dụng Portlet nếu muốn sử dụng các tài nguyên không thể đóng gói được
vào tập tin WAR, chẳng hạn EJB, thì có thể đóng gói các tài nguyên này dưới dạng tập
tin EAR.
13.3 Các thành phần của đặc tả triển khai Portlet
Các thông tin cấu hình và các thông tin triển khai sau đây phải được hỗ trợ trong
tập tin đặc tả triển khai Portlet :
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 56 Đặng Đình Vương
• Định nghĩa ứng dụng Portlet (Portlet Application Definition)
• Định nghĩa Portlet (Portlet Definition)
Hình vẽ sau minh họa cấu trúc của một đặc tả triển khai Portlet:
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 57 Đặng Đình Vương
Hình 16: Cấu trúc một đặc tả triển khai Portlet
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 58 Đặng Đình Vương
Hình 17: Cấu trúc một đặc tả triển khai Portlet (tt)
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 59 Đặng Đình Vương
13.4 Tính duy nhất của các giá trị trong đặc tả triển khai
Portlet
Các giá trị trong đặc tả triển khai sau phải là duy nhất trong phạm vi của định
nghĩa ứng dụng Portlet (Portlet Application Definition):
• Tên Portlet : <portlet-name>.
• Kiểu Portlet tùy chọn : <portlet-mode>.
• Kiểu cửa sổ tùy chọn : <window-state>.
• Thuộc tính người sử dụng : <name>.
Các giá trị trong đặc tả triển khai sau phải là duy nhất trong phạm vi của định
nghĩa Portlet (Portlet Definition):
• Giá trị khởi tạo: <name>.
• Hỗ trợ kiểu: <mime-type>.
• Tham chiếu: <name>.
• Tham chiếu vai trò bảo mật: <role-name>.
14. Thư viện các thẻ Portlet
Thư việc các thẻ Portlet dùng để hỗ trợ cho các trang JSP khi được gọi từ Portlet
có thể truy nhập vào các thành phần của Portlet như là : RenderRequest,
RenderResponse…Các thư viện này cũng giúp cho các trang JSP có thể truy cập vào
các chức năng của Portlet như việc tạo ra các Portlet URL.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 60 Đặng Đình Vương
Các trang JSP khi sử dụng các thư viện này cần phải khai báo chúng trong thẻ
thư viện theo như mẫu sau:
<%@ taglib uri=http://java.sun.com/portlet prefix=”portlet” %>
14.1 Thẻ actionURL
Thẻ actionURL tạo ra một URL tham chiếu đến Portlet hiện tại và thực thi một
số yêu cầu với các tham số khởi tạo.
Các tham số này có thể được thêm vào URL bằng cách nhập thẻ param giữa thẻ
đóng và thẻ mở actionURL như trong ví dụ sau :
<portlet:actionURL windowState=”maximized” portletMode=”edit”>
<portlet:param name=”action” value=”editStocks”/>
</portlet:actionURL>
14.2 Thẻ renderURL
Thẻ renderURL tạo ra một URL tham chiếu đến Portlet hiện tại và thực thi một
số yêu cầu render với các tham số khởi tạo.
Các tham số này có thể được thêm vào URL bằng cách nhập thẻ param giữa thẻ
đóng và thẻ mở renderURL.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 61 Đặng Đình Vương
Chương 6
Chuẩn JSR 170
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 62 Đặng Đình Vương
1. Giới thiệu về chuẩn JSR 170
Chuẩn JSR 170 dùng để định nghĩa cách thức lưu trữ và truy xuất dữ liệu. Có
nhiều loại dữ liệu được hỗ trợ như: hệ quản trị cơ sở dữ liệu, hệ thống tập tin của hệ
điều hành, tập tin XML…Ngoài ra, chuẩn này còn cung cấp các API và các cơ chế để
chuyển đổi giữa các cơ sở dữ liệu cũng như hỗ trợ cho việc truy xuất cơ sở dữ liệu,
như: lưu trữ dữ liệu theo cấu trúc cây, quản lý phiên bản dữ liệu, lắng nghe sự kiện xảy
ra trên cấu trúc lưu trữ dữ liệu, không cho truy cập vào dữ liệu…
Phiên bản hiện tại của chuẩn JSR 170 là 0.16.2 được đưa ra bởi Day Management AG
vào ngày 25/01/2005. (http://jcp.org/en/jsr/detail?id=170). Hình vẽ sau mô tả cách
thức giao tiếp của JSR 170 với các hệ cơ sở dữ liệu.
Hình 18: Chuẩn JSR 170 giao tiếp với cơ sở dữ liệu
Repository
DBMS
Repository
File System
Repository
XML
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 63 Đặng Đình Vương
2. Mô hình repository
Một JCR (Java Content Repository) bao gồm một hay nhiều workspace, mỗi
workspace là một cấu trúc cây gồm nhiều item, một item có thể là một node hay một
property, mỗi node có thể không có con hay có nhiều con và không có property hay có
nhiều property. Có duy nhất một node không có cha gọi là root. Tất cả các node ngoại
trừ root có ít nhất một cha. Property có một cha và không có con, được gọi là lá của
cây. Property là một đơn vị nội dung nhỏ nhất bao gồm tên và giá trị tương ứng . Dữ
liệu thực sự được chứa đựng trong giá trị của property.
Hình 19: Mô hình một workspace của một repository
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 64 Đặng Đình Vương
Trong biểu đồ trên, root có 3 node con là a,b và c. Mỗi node con có nhiều node
con hay nhiều Property, chẳng hạn node a có 2 con là d và e, node e có 2 property là j
và k, Property j chứa một hình ảnh và Property k chứa một số thực.
Bất kỳ item nào trong cấu trúc trên đều có thể được xác định bằng một đường
dẫn tuyệt đối. Ví dụ đường dẫn / chỉ đến root, đường dẫn /a/d/i chỉ đến 1 Property có
giá trị là true. Đường dẫn tuyệt đối luôn bắt đầu với / .
Đường dẫn tương đối chỉ ra một node hay một property từ một node đã được
xác định trước. Ví dụ : với node /a trong biểu đồ trên thì đường dẫn tương đối đến
property với giá trị true là d/i, đến property có giá trị -25 là ../c/h.
3. Một số API cơ bản
Toàn bộ Repository được đại diện bởi một đối tượng Repository. Một Client kết
nối tới một Repository bằng cách cung cấp một đối tượng Credentials và xác định một
Workspace cụ thể bên trong một Repository. Nếu Credentials được thông qua thì
Client có thể truy cập đến một Workspace đã xác định, sau đó Client sẽ nhận một
Ticket.
Ví dụ :
// Lấy đối tượng Repository
Repository repository = (Repository)java.rmi.Naming.lookup("MyRepo");
// Lấy đối tượng Credentials
Credentials credentials = new SimpleCredentials("MyName",
"MyPassword".toCharArray());
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 65 Đặng Đình Vương
// Lấy một Ticket
Ticket myTicket = repository.login(credentials, "MyWorkspace");
Với đối tượng Ticket, Client có thể truy cập đến bất kỳ một Node hay Property
nào trong cây của Workspace đang truy cập :
// Lấy Node Root
Node root = myTicket.getRootNode();
// Lấy một Node bất kỳ với đường dẫn tuyệt đối
Node myNode = root.getNode("a/e");
// Lấy một Property của myNode
Property myProperty = myNode.getProperty("k");
// Lấy ra giá trị của một Property
Value myValue = mỷPoperty.getValue();
// Chuyển đổi một Value về một kiểu nào đó
double myDouble = myValue.getDouble();
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 66 Đặng Đình Vương
3.1 Thao tác trên repository
Sau khi có một Ticket, Client có thể thao tác vào Repository bằng cách thêm
hay xoá các node, property và thay đổi các giá trị của các Property
Ví dụ :
Sau khi có một node, Client có thể thêm vào một node con và thêm một
Property vào node con đó.
//Thêm một Node con
Node newNode = myNode.addNode(“n”);
//Thêm một Property
newNode.setProperty(“x”,”Hello”);
Sự thay đổi bởi các phương thức của Node và Property không tác động ngay
vào Workspace của Repository. Các sự thay đổi đó được lưu giữ tạm thời cùng với đối
tượng Ticket cho đến khi phương thức Ticket.save hoặc Node.save được gọi
Ticket.save sẽ cập nhật tất cả sự thay đổi từ lần save trước đó.
Phương thức Node.save(boolean shallow) lưu toàn bộ cây con của đối tượng
node (khi shallow = false) hoặc chỉ lưu các property của node đó (khi shallow = true)
Về mặt tổng quát, Ticket là một kho lưu trữ tạm thời, tất cả những sự thay đổi
được thực hiện thông qua những phương thức của Ticket hoặc gián tiếp thông qua các
phương thức của Node và Property.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 67 Đặng Đình Vương
4. Sự liên hệ giữa Node, Property và Item
Do các Node và các Property có một số chức năng chung nên các phương thức
chung được định nghĩa trong Interface Item.
Hình 20: Mối liên hệ giữa Node, Property và Item
Biểu đồ UML trên chỉ ra Property và Node là các SubInterface của Item. Một
Property có một và chỉ một Node cha, một Node có thể có một hay nhiều Node cha và
có nhiều Item con.
5. Sự sắp xếp các Item con
Một node được hỗ trợ sắp thứ tự nghĩa là sẽ tồn tại 2 danh sách, một cho các
node con và một cho các property. các node con và các property sẽ không chung thứ tự
với nhau.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 68 Đặng Đình Vương
Khi một item con có thỉ mục là n bị xoá khỏi một node có hỗ trợ sắp thứ tự thì
tất cả các item có chỉ mục lớn hơn n sẽ bị giảm đi 1 đơn vị. Khi một item được thêm
vào mà không chỉ rõ chỉ mục, nó sẽ tự động được thêm vào cuối danh sách.
6. Namespace
Giống như XML, JCR cũng đưa ra khái niệm Namespaces định nghĩa các tiền tố
tham chiếu đến các URI.Các tiền tố này dùng cho việc đặt tên các Item trong
Repository đồng thời tránh sự trùng tên giữa các Node hay các Property trong các mã
nguồn khác nhau.
Mỗi JCR Repository đều có một đối tượng NamespaceRegistry dùng để thực
hiện các thao tác liên quan đến đăng ký các Namespace.
Trong khi đăng ký Namespace, một số tiền tố được tự động tạo ra và không thể
xóa bỏ được. Các tiền tố đó là :
• jcr -> http://www.jcp.org/jcr/1.0 : Dùng cho việc đặt tên các loại Node có
sẵn. Ví dụ: jcr: content.
• nt -> http://www.jcp.org/jcr/nt/1.0 : Dùng cho việc đặt tên các loại Node
chính (primary node types).
• mix -> http://www.jcp.org/jcr/mix/1.0 : Dùng cho việc đặt tên các loại
Node phụ (mixin node types).
• pt -> http://www.jcp.org/jcr/pt/1.0 : Dùng cho việc đặt tên các Property
và sử dụng trong việc chuyển nội dung của Repository sang dạng thức
XML.
• sv -> http://www.jcp.org/jcr/sv/1.0 : Dùng trong khung nhìn System
View khi chuyển nội dung của Repository sang dạng thức XML.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 69 Đặng Đình Vương
7. Property
7.1 Property đa trị
Trong một số trường hợp, một property có thể chứa nhiều giá trị. Điều này tùy
thuộc vào kiểu của node cha.
Để truy xuất các giá trị của một property, ta sử dụng phương thức
Property.getValues(), phương thức này trả về một mảng các đối tượng Value chứa các
giá trị của Property.
Các giá trị chứa trong property đa trị đều có chung một kiểu.
7.2 Các kiểu dữ liệu của Property
Có 9 kiểu dữ liệu của Property được định nghĩa bằng các hằng số trong lớp
PropertyType. Bao gồm :
PropertyType.STRING
PropertyType.BINARY
PropertyType.DATE
PropertyType.LONG
PropertyType.DOUBLE
PropertyType.BOOLEAN
PropertyType.NAME
PropertyType.PATH
PropertyType.REFERENCE
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 70 Đặng Đình Vương
Các kiểu STRING, BINARY, LONG, DOUBLE, BOOLEAN của Property
tương tự như các kiểu string, binary, long, double, boolean được định nghĩa trong
package java.lang của Java.
7.2.1 Kiểu Date
Định dạng của dữ liệu có kiểu Date phải theo chuẩn ISO 8601 :
YYYY - MM - DDThh:mm:ss.sssTZD.
Trong đó :
YYYY 4 chữ số biểu diễn năm
MM 2 chữ số biểu diễn tháng ( từ 01 đến 12 )
DD 2 chữ số biểu diễn ngày ( từ 01 đến 31 )
hh 2 chữ số biểu diễn giờ ( từ 00 đến 23 )
(không cho phép biểu diễn dạng am/pm)
mm 2 chữ số biểu diễn phút ( từ 00 đến 59 )
ss.sss 5 chữ số biểu diễn giờ với sai số lấy 3 chữ số thập phân
( từ 00.000 đến 59.999 )
TZD Time Zone Designator
7.2.2 Kiểu Reference, Path và Name
Property có kiểu Name dùng để chứa các thuộc tính сủa namespace, nó là một
giá trị kiểu string chứa một phần của namespace.
Property có kiểu Path đại diện cho một đường dẫn trong một workspace bao
gồm cả đường dẫn tuyệt đối và tương đối. Path không phải là kiểu tham chiếu, nó có
thể chứa một đường dẫn chỉ đến một Item không tồn tại trong workspace.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 71 Đặng Đình Vương
Property có kiểu Reference dùng để tham chiếu đến một node trong workspace.
Giá trị của property này là một UUID của node mà nó tham chiếu. Nó không cho phép
xóa bất kỳ một node nào có trong đích đến của nó. Nếu muốn xoá node, trước tiên phải
xoá các tham chiếu đến node đó.
8. Node
8.1 Quan hệ giữa các node cùng tên và cùng cha ( Same-Name
Siblings )
Một node có thể chấp nhận các node khác có cùng cha và cùng tên với nó.
Trong trường hợp này, một đường dẫn không xác định duy nhất một node mà là một
mảng các node. Chỉ mục của các node trong mảng các node này có thể bị thay đổi khi
ta xóa hay thêm một node mới vào.
Phương thức chuẩn để lấy về tập hợp các Node là
Node.getNodes(String namePattern). Phương thức này trả về một mảng các node con
của đối tượng Node.
Khác với node, một property có thể có nhiều giá trị chứ không tồn tạiquan hệ này.
8.2 Các kiểu của Node
Nét đặc biệt của JCR là khả năng hỗ trợ kiểu cho node.
Kiểu node quy định các Node con hay các Property mà Node đó có thể có hoặc
bắt buộc phải có.
Một kiểu node bao gồm các thành phần sau :
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Bùi Vĩnh Phú 72 Đặng Đình Vương
• Name: tên của kiểu . JCR quy định sẵn một số kiểu bao gồm các kiểu
node chính có tên bắt đầu với “nt:” và các kiểu node phụ có tên bắt đầu
với “mix:”.
• Supertype: mỗi kiểu node có thể là mở rộng của một hay nhiều kiểu node
khác và kiểu node được mở rộng là Supertype của kiểu node mở rộng.
• Property Definitions: mỗi kiểu node quy định một tập các thuộc tính mà
Node có kiểu này có thể có hay bắt buộc phải có. Đồng thời kiểu node
cũng quy định những đặc điểm mà các thuộc tính này phải có, những đặc
điểm này gọi là Property Definition.
• Child Node Definitions: mỗi kiểu node quy định một tập các Node con
mà Node có kiểu này có thể có hay bắt buộc phải có. Đồng thời kiểu
node cũng quy định những đặc điểm mà các Node con của Node này phải
có, những đặc điểm này gọi là Node Definition.
• Mixin Status: JCR quy định mỗi kiểu node chỉ có thể là kiểu node chính
hay kiểu node phụ..
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma
Xd cms module cho hệ thống intranet của cty tma

Más contenido relacionado

La actualidad más candente

Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...
Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...
Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...Viết thuê trọn gói ZALO 0934573149
 
HOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂY
HOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂYHOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂY
HOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂYhieu anh
 
Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...
Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...
Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...Viết thuê trọn gói ZALO 0934573149
 
Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENS
Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENSThiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENS
Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENSNhận Viết Đề Tài Trọn Gói ZALO 0932091562
 
Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...
Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...
Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...Viết thuê trọn gói ZALO 0934573149
 
Luận văn Cao học nang cao chat luong dich vu thanh toan dien tu one pay
Luận văn Cao học  nang cao chat luong dich vu thanh toan dien tu one payLuận văn Cao học  nang cao chat luong dich vu thanh toan dien tu one pay
Luận văn Cao học nang cao chat luong dich vu thanh toan dien tu one payGiang Coffee
 
Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...
Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...
Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...Viết thuê trọn gói ZALO 0934573149
 
Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...
Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...
Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...Viết thuê báo cáo thực tập giá rẻ
 
Báo cáo quản lý cửa hàng máy tính
Báo cáo quản lý cửa hàng máy tínhBáo cáo quản lý cửa hàng máy tính
Báo cáo quản lý cửa hàng máy tínhthuvienso
 
Bao cao do an
Bao cao do an Bao cao do an
Bao cao do an Thao Thao
 
Chuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứng
Chuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứngChuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứng
Chuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứngQuân Thế
 
Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...
Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...
Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...https://www.facebook.com/garmentspace
 
Kế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt Nam
Kế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt NamKế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt Nam
Kế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt Namanh hieu
 
Phân tích chiến lược kinh doanh của vietcombank - IKIDOC.COM
Phân tích chiến lược kinh doanh của vietcombank - IKIDOC.COMPhân tích chiến lược kinh doanh của vietcombank - IKIDOC.COM
Phân tích chiến lược kinh doanh của vietcombank - IKIDOC.COMRoyal Scent
 
Web development
Web developmentWeb development
Web developmentLam Trung
 

La actualidad más candente (20)

Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...
Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...
Luận văn: Liên kết các Ngân hàng Thương mại Việt Nam để nâng cao năng lực cạn...
 
HOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂY
HOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂYHOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂY
HOÀN THIỆN HOẠT ĐỘNG CHUỖI CUNG ỨNG CỦA CÔNG TY CỔ PHẦN RƯỢU BÌNH TÂY
 
20381
2038120381
20381
 
Đề tài: Kế toán vốn bằng tiền tại Công ty trang trí nội thất, HAY
Đề tài: Kế toán vốn bằng tiền tại Công ty trang trí nội thất, HAYĐề tài: Kế toán vốn bằng tiền tại Công ty trang trí nội thất, HAY
Đề tài: Kế toán vốn bằng tiền tại Công ty trang trí nội thất, HAY
 
10024
1002410024
10024
 
Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...
Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...
Đề tài: Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX củ...
 
Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENS
Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENSThiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENS
Thiết kế xây dựng hệ thống cân định lượng sử dụng loadcell SIWAREX của SIEMENS
 
Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...
Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...
Luận văn: Chiến lược nâng cao năng lực cạnh tranh của các Ngân hàng Thương mạ...
 
Luận văn Cao học nang cao chat luong dich vu thanh toan dien tu one pay
Luận văn Cao học  nang cao chat luong dich vu thanh toan dien tu one payLuận văn Cao học  nang cao chat luong dich vu thanh toan dien tu one pay
Luận văn Cao học nang cao chat luong dich vu thanh toan dien tu one pay
 
Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...
Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...
Đề tài: Kế toán vốn bằng tiền và các khoản phải thu phải trả tại công ty TNHH...
 
Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...
Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...
Nâng cao hiệu quả hoạt động xuất nhập khẩu nông sản Điểm cao - sdt/ ZALO 093 ...
 
Đề tài: Kế toán vốn bằng tiền tại công ty xây dựng số 1, HAY
Đề tài: Kế toán vốn bằng tiền tại công ty xây dựng số 1, HAYĐề tài: Kế toán vốn bằng tiền tại công ty xây dựng số 1, HAY
Đề tài: Kế toán vốn bằng tiền tại công ty xây dựng số 1, HAY
 
Báo cáo quản lý cửa hàng máy tính
Báo cáo quản lý cửa hàng máy tínhBáo cáo quản lý cửa hàng máy tính
Báo cáo quản lý cửa hàng máy tính
 
Bao cao do an
Bao cao do an Bao cao do an
Bao cao do an
 
Chuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứng
Chuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứngChuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứng
Chuỗi cung ứng Vinamilk và những vấn đề xuất hiện trong chuỗi cung ứng
 
Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...
Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...
Một số giải pháp nâng cao hiệu quả hoạt động cho thuê tài chính tại công ty c...
 
luan van thac si tim hieu giai phap ao hoa docker
luan van thac si tim hieu giai phap ao hoa dockerluan van thac si tim hieu giai phap ao hoa docker
luan van thac si tim hieu giai phap ao hoa docker
 
Kế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt Nam
Kế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt NamKế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt Nam
Kế toán vốn bằng tiền và các khoản phải thu tại Công ty TNHH Nobland Việt Nam
 
Phân tích chiến lược kinh doanh của vietcombank - IKIDOC.COM
Phân tích chiến lược kinh doanh của vietcombank - IKIDOC.COMPhân tích chiến lược kinh doanh của vietcombank - IKIDOC.COM
Phân tích chiến lược kinh doanh của vietcombank - IKIDOC.COM
 
Web development
Web developmentWeb development
Web development
 

Similar a Xd cms module cho hệ thống intranet của cty tma

NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...
NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...
NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...lamluanvan.net Viết thuê luận văn
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Dịch vụ Làm Luận Văn 0936885877
 
Hung dan cai dat va su dung dot netnuke5.x
Hung dan cai dat va su dung dot netnuke5.xHung dan cai dat va su dung dot netnuke5.x
Hung dan cai dat va su dung dot netnuke5.xLy hai
 
Đánh giá sự hài lòng của khách hàng đối với các website thương mại điện tử
Đánh giá sự hài lòng của khách hàng đối với các website thương mại điện tửĐánh giá sự hài lòng của khách hàng đối với các website thương mại điện tử
Đánh giá sự hài lòng của khách hàng đối với các website thương mại điện tửDịch vụ Làm Luận Văn 0936885877
 
QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...
QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI  CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI  CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...
QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...lamluanvan.net Viết thuê luận văn
 
Báo cáo đồ án thực tập chuyên môn
Báo cáo đồ án thực tập chuyên môn Báo cáo đồ án thực tập chuyên môn
Báo cáo đồ án thực tập chuyên môn Nguyễn Cường
 
Giao trinh tdhtkcd__tong_hop__draft
Giao trinh tdhtkcd__tong_hop__draftGiao trinh tdhtkcd__tong_hop__draft
Giao trinh tdhtkcd__tong_hop__draftTrinh Nguyen
 
GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...
GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...
GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...lamluanvan.net Viết thuê luận văn
 
Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...
Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...
Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...nataliej4
 
Kien thuc thuong mai dien tu
Kien thuc thuong mai dien tuKien thuc thuong mai dien tu
Kien thuc thuong mai dien tuGià Hay Trẻ
 
NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...
NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI  CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI  CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...
NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...lamluanvan.net Viết thuê luận văn
 
Báo cáo thực tập athena
Báo cáo thực tập athenaBáo cáo thực tập athena
Báo cáo thực tập athenaLe Chuong
 
Xây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQL
Xây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQLXây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQL
Xây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQLAskSock Ngô Quang Đạo
 
Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143
Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143
Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143Duy Tân
 

Similar a Xd cms module cho hệ thống intranet của cty tma (20)

NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...
NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...
NGHIÊN CỨU SỰ TÁC ĐỘNG CỦA HỆ THỐNG ERP ĐẾN TỔ CHỨC KẾ TOÁN QUẢN TRỊ TRONG DO...
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
 
Đề tài: Tìm hiểu giải pháp ảo hóa docker, HAY, 9đ
Đề tài: Tìm hiểu giải pháp ảo hóa docker, HAY, 9đĐề tài: Tìm hiểu giải pháp ảo hóa docker, HAY, 9đ
Đề tài: Tìm hiểu giải pháp ảo hóa docker, HAY, 9đ
 
Tải Free Luận Văn Đào Tạo Nguồn Nhân Lực Tại Công Ty Công Nghệ
Tải Free Luận Văn Đào Tạo Nguồn Nhân Lực Tại Công Ty Công NghệTải Free Luận Văn Đào Tạo Nguồn Nhân Lực Tại Công Ty Công Nghệ
Tải Free Luận Văn Đào Tạo Nguồn Nhân Lực Tại Công Ty Công Nghệ
 
Hung dan cai dat va su dung dot netnuke5.x
Hung dan cai dat va su dung dot netnuke5.xHung dan cai dat va su dung dot netnuke5.x
Hung dan cai dat va su dung dot netnuke5.x
 
Đánh giá sự hài lòng của khách hàng đối với các website thương mại điện tử
Đánh giá sự hài lòng của khách hàng đối với các website thương mại điện tửĐánh giá sự hài lòng của khách hàng đối với các website thương mại điện tử
Đánh giá sự hài lòng của khách hàng đối với các website thương mại điện tử
 
QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...
QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI  CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI  CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...
QUẢN LÝ NỢ TẠI NGÂN HÀNG THƯƠƠNG MẠI CỔ PHẦN KỸ THƯƠNG VIỆT NAM (TECHHCOMBAN...
 
Báo cáo đồ án thực tập chuyên môn
Báo cáo đồ án thực tập chuyên môn Báo cáo đồ án thực tập chuyên môn
Báo cáo đồ án thực tập chuyên môn
 
Giao trinh tdhtkcd__tong_hop__draft
Giao trinh tdhtkcd__tong_hop__draftGiao trinh tdhtkcd__tong_hop__draft
Giao trinh tdhtkcd__tong_hop__draft
 
GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...
GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...
GIẢI PHÁP MARKETING ĐỐI VỚI DỊCH VỤ TRUYỀN HÌNH MYTV TẠI CÔNG TY PHÁT TRIỂN D...
 
Đề tài: Phân hệ kế toán vốn bằng tiền ở Công ty Truyền Thông, 9đ
Đề tài: Phân hệ kế toán vốn bằng tiền ở Công ty Truyền Thông, 9đĐề tài: Phân hệ kế toán vốn bằng tiền ở Công ty Truyền Thông, 9đ
Đề tài: Phân hệ kế toán vốn bằng tiền ở Công ty Truyền Thông, 9đ
 
Luận văn: Đào tạo nhân lực tại Công ty Cổ Phần Tập đoàn Công Nghệ CMC
Luận văn: Đào tạo nhân lực tại Công ty Cổ Phần Tập đoàn Công Nghệ CMCLuận văn: Đào tạo nhân lực tại Công ty Cổ Phần Tập đoàn Công Nghệ CMC
Luận văn: Đào tạo nhân lực tại Công ty Cổ Phần Tập đoàn Công Nghệ CMC
 
Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...
Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...
Xây dựng hệ thông thông tin kế toán tiền lương tại công ty cổ phần thương mại...
 
Kien thuc thuong mai dien tu
Kien thuc thuong mai dien tuKien thuc thuong mai dien tu
Kien thuc thuong mai dien tu
 
BÀI MẪU Luận văn viện công nghệ thông tin, 9 ĐIỂM
BÀI MẪU Luận văn viện công nghệ thông tin, 9 ĐIỂMBÀI MẪU Luận văn viện công nghệ thông tin, 9 ĐIỂM
BÀI MẪU Luận văn viện công nghệ thông tin, 9 ĐIỂM
 
NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...
NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI  CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI  CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...
NGHIÊN CỨU ÁP DỤNG QUẢN TRỊ TINH GỌN TẠI CÔNG TY CỔ PHẦN BÓNG ĐÈN PHÍCH NƯỚC...
 
Báo cáo thực tập athena
Báo cáo thực tập athenaBáo cáo thực tập athena
Báo cáo thực tập athena
 
Xây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQL
Xây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQLXây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQL
Xây dựng hệ thống thông tin quản lý khách hàng bằng PHP và MySQL
 
Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143
Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143
Do an cnc_huong_dan_tach_khuon_1983_842_yj_noy_20131126103038_323143
 
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH LẬP TRÌNH WEB .NET MVC 5 BÁN HÀNG CÔNG NGHỆ.docx
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH LẬP TRÌNH WEB .NET MVC 5 BÁN HÀNG CÔNG NGHỆ.docxBÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH LẬP TRÌNH WEB .NET MVC 5 BÁN HÀNG CÔNG NGHỆ.docx
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH LẬP TRÌNH WEB .NET MVC 5 BÁN HÀNG CÔNG NGHỆ.docx
 

Más de Vcoi Vit

2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri312eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31Vcoi Vit
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri142eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14Vcoi Vit
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri132eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13Vcoi Vit
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri052eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05Vcoi Vit
 
Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02Vcoi Vit
 
Giao trinh tong hop sv50
Giao trinh tong hop sv50Giao trinh tong hop sv50
Giao trinh tong hop sv50Vcoi Vit
 
Giao trinh tong hop sv49
Giao trinh tong hop sv49Giao trinh tong hop sv49
Giao trinh tong hop sv49Vcoi Vit
 
Giao trinh tong hop sv48
Giao trinh tong hop sv48Giao trinh tong hop sv48
Giao trinh tong hop sv48Vcoi Vit
 
Giao trinh tong hop sv47
Giao trinh tong hop sv47Giao trinh tong hop sv47
Giao trinh tong hop sv47Vcoi Vit
 
Giao trinh tong hop sv46
Giao trinh tong hop sv46Giao trinh tong hop sv46
Giao trinh tong hop sv46Vcoi Vit
 
Giao trinh tong hop sv45
Giao trinh tong hop sv45Giao trinh tong hop sv45
Giao trinh tong hop sv45Vcoi Vit
 
Giao trinh tong hop sv43
Giao trinh tong hop sv43Giao trinh tong hop sv43
Giao trinh tong hop sv43Vcoi Vit
 
Giao trinh tong hop sv41
Giao trinh tong hop sv41Giao trinh tong hop sv41
Giao trinh tong hop sv41Vcoi Vit
 

Más de Vcoi Vit (20)

2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri312eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri31
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri142eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri14
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri132eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri13
 
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri052eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
2eae0e86 e7c6-431d-aa08-b8f89ba71921 giaotrinhkinhtechinhtri05
 
Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46Giao trinh nuoi_trong_thuy_san46
Giao trinh nuoi_trong_thuy_san46
 
Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28Giao trinh nuoi_trong_thuy_san28
Giao trinh nuoi_trong_thuy_san28
 
Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23Giao trinh nuoi_trong_thuy_san23
Giao trinh nuoi_trong_thuy_san23
 
Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22Giao trinh nuoi_trong_thuy_san22
Giao trinh nuoi_trong_thuy_san22
 
Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21Giao trinh nuoi_trong_thuy_san21
Giao trinh nuoi_trong_thuy_san21
 
Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16Giao trinh nuoi_trong_thuy_san16
Giao trinh nuoi_trong_thuy_san16
 
Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05Giao trinh nuoi_trong_thuy_san05
Giao trinh nuoi_trong_thuy_san05
 
Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02Giao trinh nuoi_trong_thuy_san02
Giao trinh nuoi_trong_thuy_san02
 
Giao trinh tong hop sv50
Giao trinh tong hop sv50Giao trinh tong hop sv50
Giao trinh tong hop sv50
 
Giao trinh tong hop sv49
Giao trinh tong hop sv49Giao trinh tong hop sv49
Giao trinh tong hop sv49
 
Giao trinh tong hop sv48
Giao trinh tong hop sv48Giao trinh tong hop sv48
Giao trinh tong hop sv48
 
Giao trinh tong hop sv47
Giao trinh tong hop sv47Giao trinh tong hop sv47
Giao trinh tong hop sv47
 
Giao trinh tong hop sv46
Giao trinh tong hop sv46Giao trinh tong hop sv46
Giao trinh tong hop sv46
 
Giao trinh tong hop sv45
Giao trinh tong hop sv45Giao trinh tong hop sv45
Giao trinh tong hop sv45
 
Giao trinh tong hop sv43
Giao trinh tong hop sv43Giao trinh tong hop sv43
Giao trinh tong hop sv43
 
Giao trinh tong hop sv41
Giao trinh tong hop sv41Giao trinh tong hop sv41
Giao trinh tong hop sv41
 

Xd cms module cho hệ thống intranet của cty tma

  • 1. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM ĐẶNG ĐÌNH VƯƠNG BÙI VĨNH PHÚ XÂY DỰNG CMS MODULE CHO HỆ THỐNG INTRANET CỦA CÔNG TY TMA KHÓA LUẬN CỬ NHÂN TIN HỌC TP. HCM, NĂM 2005
  • 2. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM ĐẶNG ĐÌNH VƯƠNG – 0112458 BÙI VĨNH PHÚ – 0112024 XÂY DỰNG CMS MODULE CHO HỆ THỐNG INTRANET CỦA CÔNG TY TMA KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN TS. TRẦN VIẾT HUÂN KS. NGUYỄN TẤN HỘ KS. LÊ THANH NHÀN TP. HCM, NĂM 2005
  • 3. LỜI CẢM ƠN Chúng tôi xin chân thành cảm ơn Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên, Thành phố Hồ Chí Minh và Công ty TMA đã tạo điều kiện cho chúng tôi thực hiện đề tài tốt nghiệp này. Xin cảm ơn Thầy Trần Viết Huân, Anh Nguyễn Tấn Hộ, Anh Lê Thanh Nhàn, người đã tận tình hướng dẫn, chỉ bảo chúng tôi trong suốt thời gian thực tập tại Công ty. Chúng tôi cảm ơn các anh chị trong nhóm TIS đã giúp đỡ, đóng góp ý kiến cho chúng tôi trong quá trình cài đặt, thử nghiệm chương trình. Xin gửi lời cảm ơn chân thành đến gia đình, ba mẹ và bè bạn vì đã luôn là nguồn động viên to lớn, giúp đỡ chúng tôi vượt qua những khó khăn trong suốt quá trình làm việc. Mặc dù đã cố gắng hoàn thiện luận văn với tất cả sự nỗ lực của bản thân, nhưng chắc chắn không thể tránh khỏi những thiếu sót. Kính mong quý Thầy Cô tận tình chỉ bảo. Một lần nữa, chúng tôi xin chân thành cảm ơn và luôn mong nhận được sự đóng góp quý báu của tất cả mọi người. Tháng 7 năm 2005 Đặng Đình Vương Bùi Vĩnh Phú
  • 4. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA MỤC LỤC DANH SÁCH CÁC HÌNH VẼ......................................................................................1 MỘT SỐ KÝ HIỆU VÀ TỪ VIẾT TẮT......................................................................4 MỞ ĐẦU .........................................................................................................................6 Chương 1 Giới thiệu đề tài ........................................................................................7 TỔNG QUAN ...............................................................................................................12 Chương 2 Tổng quan về sự phát triển của các hệ CMS.......................................13 NGHIÊN CỨU..............................................................................................................16 Chương 3 Nhu cầu sử dụng hệ CMS trong các tổ chức........................................17 1. Nhu cầu hiện tại..................................................................................................18 1.1 Tình hình các web site của các tổ chức ở Việt Nam.....................................18 1.2 Nhu cầu cập nhật và quản lý nội dung..........................................................18 1.2.1 Nhu cầu của các doanh nghiệp...............................................................18 1.2.2 Nhu cầu của các tờ báo điện tử ..............................................................20 1.2.3 Nhu cầu trong các hệ thống thông tin của các công ty ..........................21 2. Những lợi ích mà một hệ CMS mang lại cho các công ty..................................23 Chương 4 Hệ thống intranet hiện tại của công ty .................................................25 1. Yêu cầu khi phát triển hệ thống intranet của công ty TMA ...............................26 1.1 Tình hình hiện tại..........................................................................................26 1.2 Quy định về kiến trúc....................................................................................27 1.2.1 Kiến trúc mạnh.......................................................................................27 1.2.2 Xây dựng các công cụ hệ thống phi chức năng .....................................28 1.2.3 Bảo mật ..................................................................................................28 1.2.4 Khả năng tích hợp ..................................................................................29 1.3 Yêu cầu lúc phát triển ...................................................................................29 2. Portal hiện tại của TMA .....................................................................................30 2.1 Đặc điểm và các thành phần của portal ........................................................30 2.2 Các thành phần đã được xây dựng................................................................31 2.3 Kiến trúc hệ thống của portal........................................................................34 2.3.1 Kiến trúc hệ thống của các portal phổ biến............................................34 2.3.2 Kiến trúc hệ thống của portal TMA.......................................................35 3. Công nghệ được sử dụng để phát triển hệ thống intranet...................................36
  • 5. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 4. Các chuẩn dùng để phát triển hệ thống...............................................................36 5. Nhu cầu của công ty TMA khi xây dựng một hệ CMS......................................37 5.1 Nhu cầu chia sẻ thông tin giữa các dự án và các vị trí công việc.................39 5.2 Xây dựng hệ CMS dưới dạng một portlet có thể được sử dụng bởi các ứng dụng và các thành phần khác ..............................................................................41 5.3 Các kỹ thuật sử dụng trong quá trình phát triển............................................41 Chương 5 Chuẩn JSR 168 .......................................................................................43 1. Giới thiệu về chuẩn JSR 168 ..............................................................................44 2. Một số khái niệm chính ......................................................................................45 2.1 Portal .............................................................................................................45 2.2 Portlet............................................................................................................45 2.3 Portlet Container ...........................................................................................46 3. So sánh Portlet và Servlet...................................................................................46 3.1 Điểm giống nhau giữa Portlet và Servlet......................................................46 3.2 Điểm khác nhau giữa Portlet và Servlet .......................................................46 3.3 Đặc trưng của Portlet mà không có ở servlet................................................47 4. Giao diện portlet .................................................................................................47 5. Portlet URL.........................................................................................................48 6. Portlet Mode .......................................................................................................48 7. Window State......................................................................................................49 8. Portlet Request....................................................................................................50 9. Portlet Response .................................................................................................50 10. Portlet Preferences............................................................................................51 11. Caching .............................................................................................................51 12. Ứng dụng Portlet...............................................................................................53 12.1 Các thành phần của ứng dụng Portlet .........................................................53 12.2 Cấu trúc cây thư mục ..................................................................................53 12.3 Tập tin lưu trữ của ứng dụng Portlet...........................................................54 13. Các đặc tả đóng gói và triển khai......................................................................54 13.1 Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet..........................54 13.2 Triển khai ứng dụng Portlet và ứng dụng Web...........................................55 13.3 Các thành phần của đặc tả triển khai Portlet...............................................55 13.4 Tính duy nhất của các giá trị trong đặc tả triển khai Portlet.......................59 14. Thư viện các thẻ Portlet....................................................................................59 14.1 Thẻ actionURL............................................................................................60 14.2 Thẻ renderURL ...........................................................................................60 Chương 6 Chuẩn JSR 170 .......................................................................................61 1. Giới thiệu về chuẩn JSR 170 ..............................................................................62 2. Mô hình repository..............................................................................................63
  • 6. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 3. Một số API cơ bản..............................................................................................64 3.1 Thao tác trên repository ................................................................................66 4. Sự liên hệ giữa Node, Property và Item..............................................................67 5. Sự sắp xếp các Item con .....................................................................................67 6. Namespace..........................................................................................................68 7. Property...............................................................................................................69 7.1 Property đa trị................................................................................................69 7.2 Các kiểu dữ liệu của Property.......................................................................69 7.2.1 Kiểu Date................................................................................................70 7.2.2 Kiểu Reference, Path và Name ..............................................................70 8. Node....................................................................................................................71 8.1 Quan hệ giữa các node cùng tên và cùng cha ( Same-Name Siblings ) .......71 8.2 Các kiểu của Node ........................................................................................71 8.2.1 Kiểu node chính và kiểu node phụ.........................................................73 8.2.2 Property definitions................................................................................73 8.2.3 Child Node Definitions ..........................................................................74 8.2.4 Các kiểu node được định nghĩa sẵn .......................................................75 8.3 Node tham chiếu (Referenceable Nodes) .....................................................78 9. Workspace ..........................................................................................................79 9.1 Repository có một workspace.......................................................................79 9.2 Repository có nhiều Workspace và sự tương ứng các node.........................80 10. Tạo phiên bản ( Versioning )............................................................................82 10.1 Version History...........................................................................................83 10.2 Mối quan hệ giữa các versionable node và version history........................84 10.3 Đồ Thị Biểu Diễn Các Phiên Bản Trên Repository....................................84 10.4 Phiên Bản Cơ Bản (Base Version)..............................................................85 10.5 Khởi Tạo Một Version History...................................................................85 10.6 Tạo Phiên Bản Mới Của Một Node ............................................................86 10.7 Phục Hồi Lại Trạng Thái Trước Đó Của Node ..........................................87 10.8 Checkout .....................................................................................................88 10.9 Update .........................................................................................................88 10.10 Các Node Có Thể Tạo Phiên Bản Trên Repository..................................89 10.11 Thuộc Tính OnParentVersion...................................................................91 10.11.1 COPY .................................................................................................92 10.11.2 VERSION...........................................................................................93 10.11.3 INITIALIZE.......................................................................................93 10.11.4 COMPUTE.........................................................................................94 10.11.5 IGNORE.............................................................................................94 10.11.6 ABORT ..............................................................................................94 10.12 Ví dụ về một Repository có hỗ trợ tạo phiên bản.....................................95
  • 7. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 11. Lắng Nghe Sự Kiện Trên Repository (Observation)........................................96 11.1 Phát sinh sự kiện .........................................................................................96 11.2 Các loại sự kiện...........................................................................................97 11.3 Đối tượng lắng nghe và xử lý sự kiện.........................................................98 11.4 Lựa chọn sự kiện để lắng nghe ...................................................................99 11.5 Các sự kiện xảy ra đối với một hành động trên Repository........................99 11.5.1 Hành động thêm một Item....................................................................99 11.5.2 Hành động thay đổi giá trị của Property ............................................100 11.5.3 Hành động thêm vào một Node đã tồn tại trong Repository .............100 11.5.4 Khôi phục lại trạng thái của một Node ..............................................101 11.5.5 Sao chép một Node ............................................................................101 11.5.6 Xóa một Item......................................................................................102 11.5.7 Di chuyển vị trí của một Node...........................................................102 11.5.8 Tạo Phiên Bản Của Item ....................................................................102 11.5.9 Khoá một Item....................................................................................103 11.5.10 Mở khóa một Item............................................................................103 12. Vấn đề bảo mật trên Repository .....................................................................104 13. Cơ chế khóa trên Repository ..........................................................................104 13.1 Mức độ khóa .............................................................................................104 13.2 Phạm vi khóa.............................................................................................104 13.3 Loại khóa...................................................................................................105 14. Tìm kiếm nội dung trên Repository................................................................105 14.1 Ngôn ngữ truy vấn JCRQL.......................................................................106 14.1.1 Mệnh đề SELECT..............................................................................106 14.1.2 Mệnh đề FROM .................................................................................106 14.1.3 Mệnh đề LOCATION ........................................................................106 14.1.4 Mệnh đề WHERE...............................................................................109 14.1.5 Mệnh đề SEARCH.............................................................................110 14.1.6 Mệnh đề ORDER BY.........................................................................111 15. Một số ví dụ về việc cài đặt JCR ....................................................................112 15.1 JCR cài đặt bên trên File System ..............................................................112 15.2 JCR cài đặt bên trên một Database ...........................................................113 Chương 7 So sánh một số giải pháp CMS mã nguồn mở phổ biến ...................115 1. Giới thiệu các giải pháp hiện tại .......................................................................116 1.1 Xu hướng phát triển của các hệ CMS.........................................................116 1.1.1 Xu hướng về mặt thương mại ..............................................................116 1.1.2 Xu hướng về công nghệ, kỹ thuật ........................................................117 1.2 So sánh các giải pháp CMS thông dụng .....................................................118 1.2.1 Tiêu chí lựa chọn các giải pháp CMS để so sánh ................................118
  • 8. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 1.2.2 Các tiêu chí so sánh..............................................................................118 2. Mô tả các giải pháp đã so sánh .........................................................................123 2.1 Giải pháp Cofax 2.0 ....................................................................................123 2.2 Giải pháp Daisy 1.1.....................................................................................125 2.2.1 Repository chứa nội dung ....................................................................126 2.2.2 Giao diện web.......................................................................................126 2.3 Giải pháp Magnolia 2.1...............................................................................127 2.4 Giải pháp OpenCMS 5.0.............................................................................129 3. Kết luận.............................................................................................................130 ỨNG DỤNG................................................................................................................132 Chương 8 Các chức năng của TMA CMS ...........................................................133 1. Mô hình Use case..............................................................................................134 2. Mô tả các chức năng .........................................................................................135 2.1 Quản lý vai trò.............................................................................................135 2.2 Quản lý người sử dụng................................................................................135 2.3 Phân quyền sử dụng cho vai trò..................................................................136 2.4 Phân phối vai trò đến người sử dụng ..........................................................137 2.5 Tối ưu hoá các thông tin cấu hình hệ thống................................................138 2.6 Biên soạn nội dung trang web.....................................................................138 2.7 Áp dụng template vào trang web ................................................................139 2.8 Phân loại nội dung.......................................................................................139 2.9 Truy nhập vào hệ CMS...............................................................................139 2.10 Tìm kiếm nội dung....................................................................................140 2.11 Lựa chọn ngôn ngữ ...................................................................................140 Chương 9 Tích hợp hệ thống CMS vào TMA portal..........................................141 1. System Architecture của Magnolia CMS .........................................................142 1.1 Mô hình một số package quan trọng của Magnolia CMS ..........................142 1.2 Mô tả các package.......................................................................................142 1.2.1 Package info.magnolia.cms..................................................................142 1.2.2 Package info.magnolia.cms. security...................................................143 1.2.3 Package info.magnolia.cms.servlets ....................................................143 1.2.4 Package info.magnolia.cms.core..........................................................143 1.2.5 Package info.magnolia.module.adminInterface...................................143 1.2.6 Package info.magnolia.module.templating..........................................144 1.2.7 Package info.magnolia.repository........................................................144 1.2.8 Package info.magnolia.exchange.........................................................144 2. Hướng tiếp cận để tích hợp...............................................................................144 2.1 Hướng tiếp cận thứ 1...................................................................................144
  • 9. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 2.2 Hướng tiếp cận thứ 2...................................................................................145 3. Cách thức thực hiện ..........................................................................................146 3.1 Tạo dự án J2EE dựa trên mã nguồn của Magnolia.....................................147 3.2 Chuẩn hoá dự án J2EE theo chuẩn JSR 168...............................................147 3.3 Tích hợp hệ thống bảo mật .........................................................................151 KẾT LUẬN.................................................................................................................152 HƯỚNG PHÁT TRIỂN.............................................................................................155 TÀI LIỆU THAM KHẢO .........................................................................................157
  • 10. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 1 Đặng Đình Vương DANH SÁCH CÁC HÌNH VẼ Hình 1: Hệ CMS quản lý tự động nội dung trang web ....................................................8 Hình 2: Giao diện hệ thống intranet của công ty TMA ...................................................9 Hình 3: Hệ thống thông tin hiện tại của công ty TMA ..................................................10 Hình 4: Quy trình cập nhật thông tin trong doanh nghiệp .............................................19 Hình 5: Quy trình cập nhật thông tin trong doanh nghiệp khi sử dụng CMS................19 Hình 6: Quy trình cập nhật thông tin trong một tờ báo địên tử .....................................20 Hình 7: Quy trình cập nhật thông tin trong toà soạn báo điện tử có sử dụng hệ CMS..21 Hình 8: Quy trình cập nhật thông tin trong một hệ thống thông tin ..............................22 Hình 9: Quy trình cập nhật thông tin trong một hệ thống thông tin có CMS................23 Hình 10: Kiến trúc SOA của intranet của công ty TMA ...............................................26 Hình 11: Các thành phần trong portal của công ty TMA ..............................................33 Hình 12: Kiến trúc hệ thống của các portal phổ biến ....................................................34 Hình 13: Kiến trúc hệ thống của portal TMA................................................................35 Hình 14: Chia sẻ thông tin giữa các dự án và vị trí công việc trong công ty TMA.......40 Hình 15: Mô hình chuẩn JSR 168..................................................................................44 Hình 16: Cấu trúc một đặc tả triển khai Portlet .............................................................57 Hình 17: Cấu trúc một đặc tả triển khai Portlet (tt) .......................................................58 Hình 18: Chuẩn JSR 170 giao tiếp với cơ sở dữ liệu.....................................................62 Hình 19: Mô hình một workspace của một repository ..................................................63 Hình 20: Mối liên hệ giữa Node, Property và Item .......................................................67 Hình 21: Repository có một workspace........................................................................79 Hình 22: Repository có nhiều workspace .....................................................................81 Hình 23: Đồ thị mô tả một Version History..................................................................83 Hình 24: Repository có nhiều workspace và hỗ trợ tạo phiên bản ................................95 Hình 25: Giao diện Cofax ............................................................................................123
  • 11. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 2 Đặng Đình Vương Hình 26: Giao diện Daisy.............................................................................................125 Hình 27: Giao diện Magnolia.......................................................................................127 Hình 28: Giao diện OpenCMS.....................................................................................129 Hình 29: Các gói chính của Magnolia CMS................................................................142 Hình 30: Cấu trúc dự án J2EE của hệ CMS.................................................................148
  • 12. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 3 Đặng Đình Vương DANH SÁCH CÁC BẢNG Bảng 1: Một số thành phần đã được xây dựng trong hệ thống portal của Công ty .......32 Bảng 2: Các hằng số trong giao diện javax.jcr.version.OnParentVersionAction..........92 Bảng 3: Các hằng số định nghĩa trong giao diện javax.jcr.observation.EvenType ......97 Bảng 4: So sánh yêu cầu hệ thống của một số CMS ...................................................119 Bảng 5: So sánh tính bảo mật của một số CMS...........................................................119 Bảng 6: So sánh tính tiện dụng của một số CMS ........................................................120 Bảng 7: So sánh hiệu suất hoạt động của một số CMS ...............................................120 Bảng 8: So sánh tính khả chuyển của một số CMS .....................................................121 Bảng 9: So sánh khả năng quản lý của một số CMS ...................................................121 Bảng 10: So sánh các khả năng hỗ trợ khác của một số CMS.....................................122
  • 13. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 4 Đặng Đình Vương MỘT SỐ KÝ HIỆU VÀ TỪ VIẾT TẮT API Application Programming Interface CMS Content Management System Drag’n’drop Thuật ngữ Drag and Drop Eclipse Phần mềm miễn phí dùng phát triển các ứng dụng trên Java http://www.eclipse.org/ HTML Hyper Text Markup Language HTTP Hypertext Transfer Protocol HTTPS Secure Hypertext Transfer Protocol JBoss Web application server miễn phí http://www.jboss.org/products/jbossas JCR Java Content Repository JDK Java Development Kit JSR Java Specification Request Lomboz plug-in giúp Eclipse giao tiếp với JBoss và tạo các dự án J2EE http://www.objectlearn.com/index.html MIME Multipurpose Internet Mail Extensions MVC Mô hình thiết kế Model-View-Controller ORB Object Request Broker RMI-IIOP Remote Method Invocation over internet Inter-ORB Protocol SOA Service Oriented Architecture SOAP Simple Object Access Protocol
  • 14. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 5 Đặng Đình Vương SPI Service Provider Interface URI Uniform Resource Identifiers URL Uniform Resource Locator XHTML eXtensible Hyper Text Markup Language XML eXtensible Markup Language WSRP web Services for Remote portlets WYSIWYG What You See Is What You Get
  • 15. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 6 Đặng Đình Vương MỞ ĐẦU
  • 16. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 7 Đặng Đình Vương Chương 1 Giới thiệu đề tài
  • 17. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 8 Đặng Đình Vương Một cách đơn giản nhất, CMS là một hệ thống hỗ trợ người sử dụng trong việc tạo ra các trang web, quản lý nội dung các trang web. Sau cùng, các trang web sẽ được xuất bản để phân phối đến mọi người. Cả quy trình từ lúc tạo ra nội dung trang web, quản lý nội dung được tạo ra và sau cùng phân phối nội dung này đều hoàn toàn tự động. Hình vẽ sau sẽ mô tả cho quy trình tự động này. Hình 1: Hệ CMS quản lý tự động nội dung trang web Luận văn này được thực hiện trong quá trình thực tập của chúng tôi tại công ty phần mềm Tường Minh (TMA). Khi luận văn bắt đầu thì hệ thống thống tin (intranet) của công ty đang được xây dựng lại. Việc xây dựng này dựa trên các chuẩn mở và các công nghệ, giải pháp mã nguồn mở.
  • 18. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 9 Đặng Đình Vương Hình 2: Giao diện hệ thống intranet của công ty TMA Hệ thống Intranet của công ty TMA hỗ trợ các công cụ, các chức năng như sau: • Quản lý nhân sự • Quản lý năng lực của nhân viên • Quản lý tuyển dụng • Quản lý thông tin các dự án • Hệ quản lý tài liệu • Tìm kiếm thông tin • Hệ thống bảo mật • Các sự kiện nội bộ của công ty • …
  • 19. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 10 Đặng Đình Vương Hệ thống thông tin này nếu được nhìn dưới góc độ của người phát triển sẽ bao gồm các thành phần như sau: Portal được xây dựng dựa trên Liferay HR Employee Contact Project Information Các ứng dụng Recruitment PA Event Các dịch vụ HR Recruitment Search Các thành phần chức năng Search Engine Authentifi- cation Scheduling System Workflow Engine Các thành phần phi chức năng Cung cấp Cung cấp Cung cấp DMS CMS Reporting Engine Hình 3: Hệ thống thông tin hiện tại của công ty TMA Hệ thống thông tin này bao gồm các ứng dụng, các dịch vụ dùng để hỗ trợ hoạt động cho các ứng dụng. Ngoài ra, còn có các thành phần chức năng dùng để cung cấp
  • 20. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 11 Đặng Đình Vương các chức năng cho các dịch vụ. Các thành phần phi chức năng dùng để hỗ trợ hoạt động cho các ứng dụng, các dịch vụ và các thành phần chức năng. Hệ CMS cần xây dựng cho công ty TMA sẽ thuộc nhóm các thành phần phi chức năng như trên hình vẽ trên đã minh hoạ. Mục đích chính của đề tài này là xây dựng và tích hợp CMS module vào trong hệ thống intranet của công ty TMA. Để thực hiện điều này, chúng tôi đã thực hiện 3 công việc chính như sau: • Nghiên cứu về CMS. • Tìm hiểu và so sánh các giải pháp xây dựng CMS để chọn ra giải pháp thích hợp nhất với yêu cầu công ty. • Tích hợp giải pháp đã chọn vào trong hệ thống intranet của công ty. Chúng tôi thực hiện đề tài này ngoài mong muốn bảo vệ thành công khoá luận của mình, còn muốn qua đó học hỏi thêm nhiều kiến thức và kinh nghiệm trong việc phát triển một hệ CMS, một lãnh vực mới mẻ và đầy tiềm năng.
  • 21. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 12 Đặng Đình Vương TỔNG QUAN
  • 22. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 13 Đặng Đình Vương Chương 2 Tổng quan về sự phát triển của các hệ CMS
  • 23. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 14 Đặng Đình Vương Xây dựng hệ thống CMS là một lãnh vực chỉ mới xuất hiện trong 6 năm gần đây. Công ty Microsoft chỉ mới tham gia lãnh vực này vào năm 2002. Ở Việt Nam, số lượng các công ty xây dựng và sử dụng các hệ CMS vẫn rất giới hạn do đây vẫn còn là lãnh vực quá mới mẻ ở nước ta. Tuy chỉ mới xuất hiện gần đây nhưng lãnh vực này cũng đạt được một số kết quả khả quan. Các công nghệ và các tiêu chuẩn đã được đề ra để phát triển các hệ CMS. Đa phần các công ty phát triển các hệ CMS đều với mục đích kinh doanh. Bên cạnh đó cũng có những công ty, tổ chức và cá nhân cung cấp các giải pháp CMS của họ dưới dạng mã nguồn mở hay miễn phí. Các công nghệ sử dụng cho việc phát triển các hệ CMS cũng rất đa dạng. Sự đa dạng này có thể thấy rõ qua thống kê sau đây: • Java: CMS Genie, CMS Master, Cofax, Contelligent, Daisy, Eplica, imCMS, Jahia, jNetPublish, Magnolia, NetPotential CM… • Java Script: CMS Master, Complete Site Manager, Contelligent, e107, eazyCMS, Magnolia, NetPotential CMS, Open CMS… • PHP: Acuity CMS, AGPCMS, Aiyoota!-CMS, Back-End CMS, BxCMS, Caravel, CathDesign CMS, Complete Site Manager, dotWidget CMS, e107, eazyCMS, EGOCMS, fly CMS, Jaws, Mambo, Komodo CMS, OpenPHPNuke, PostNuke… • C++: Lighthouse, Manila… • ASP: Acuity CMS, Baseline CMS… • Cold Fusion: AssetNow, EasyConsole CMS… • ASP.NET: AxCMS.net, Composite CMS, contentXXL - ASP.NET CMS, DotNetNuke, Dozing Dogs ASP.NET CMS, Dynamicweb…
  • 24. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 15 Đặng Đình Vương • VB.NET: AxCMS.net, contentXXL - ASP.NET CMS, Dozing Dogs ASP.NET CMS… • C#: AxCMS.net, contentXXL - ASP.NET CMS, Dozing Dogs ASP.NET CMS, Rainbow… • Python: Easy Publisher… Một số hệ CMS được xây dựng như là một thành phần của portal. Số còn lại được phát triển dưới dạng một ứng dụng hoạt động độc lập. Ngoài 2 dạng CMS vừa nêu thì việc sử dụng một hệ CMS độc lập để tích hợp vào một portal có sẵn vẫn rất mới mẻ. Do đó, các tài liệu về công việc này rất giới hạn và số lượng các người phát triển am tường về lãnh vực này cũng rất hiếm. Thật vậy, trong quá trình thực hiện đề tài, khi chúng tôi gặp các vấn đề và đem các vấn đề này để hỏi các lập trình viên chuyên phát triển các hệ CMS thì họ cũng không có câu trả lời xác đáng cho các vấn đề chúng tôi đã gặp phải.
  • 25. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 16 Đặng Đình Vương NGHIÊN CỨU
  • 26. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 17 Đặng Đình Vương Chương 3 Nhu cầu sử dụng hệ CMS trong các tổ chức
  • 27. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 18 Đặng Đình Vương 1. Nhu cầu hiện tại 1.1 Tình hình các web site của các tổ chức ở Việt Nam Ở Việt Nam, theo đà phát triển của kinh tế, số lượng các doanh nghiệp và các tổ chức xuất hiện này càng nhiều. Các tổ chức này đều có nhu cầu cung cấp thông tin cho khách hàng của mình. Do đó, việc tạo ra các web site cho các tổ chức này là tối cần thiết. Tuy nhiên, nội dung các web site của Việt Nam đa số còn sơ sài và không đáp ứng được nhu cầu của khách hàng. Một trong các lý do chính của tình trạng này là sự thiếu cập nhật thông tin lên các web site. Nhưng nguyên nhân sâu xa về mặt kỹ thuật là thiếu các phần mềm dùng để cập nhật và quản lý nội dung các web site. 1.2 Nhu cầu cập nhật và quản lý nội dung 1.2.1 Nhu cầu của các doanh nghiệp Để cập nhật thông tin cho các trang web trong doanh nghiệp, người ta cần phải thu thập các thông tin từ nhiều nguồn khác nhau. Sau đó, các thông tin này sẽ được chuyển cho nhóm phụ trách về web site của doanh nghiệp đó để cập nhật lên web site của họ. Hình vẽ sau sẽ minh họa cho quy trình cập nhật thông tin này
  • 28. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 19 Đặng Đình Vương Hình 4: Quy trình cập nhật thông tin trong doanh nghiệp Với một hệ CMS, doanh nghiệp không cần phải có nhóm phụ trách web bởi vì mọi thao tác cập nhật thông tin đều được làm một cách tự động. Ngoài ra, thời gian cập nhật nội dung cũng được giảm thiểu một cách đáng kể. Hình vẽ sau sẽ minh họa cho quy trình cập nhật thông tin trong doanh nghiệp khi sử dụng một hệ CMS. Hình 5: Quy trình cập nhật thông tin trong doanh nghiệp khi sử dụng CMS
  • 29. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 20 Đặng Đình Vương 1.2.2 Nhu cầu của các tờ báo điện tử Trong các toà soạn báo điện tử, để cập nhật thông tin thường xuyên, các phóng viên và các nhà báo phải tập hợp thông tin từ nhiều nguồn khác nhau. Sau đó, các thông tin này phải chờ sự kiểm duyệt. Các thông tin sau khi được kiểm duyệt sẽ chuyển cho đội ngũ làm web của toà soạn để cập nhật lên web site của báo điện tử. Hình 6: Quy trình cập nhật thông tin trong một tờ báo địên tử Nếu sử dụng một hệ CMS trong toà soạn của mình, toàn soạn báo có thể giảm đi một số bước trong quy trình cập nhật thông tin của họ. Do đó, họ có thể giảm thiểu thời gian và công sức làm công việc này. Bởi vì khi đã sử dụng hệ CMS thì họ không cần phải có đội ngũ làm web cho toàn soạn và các biên tập viên có thể duyệt các thông tin này bằng cách sử dụng hệ CMS. Ngoài ra, hệ CMS còn có thể giúp các phóng viên và các nhà báo trong việc thu thập thông tin.
  • 30. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 21 Đặng Đình Vương Hình vẽ sau sẽ minh hoạ quy trình cập nhật thông tin trong một toà soạn báo có sử dụng hệ CMS Hình 7: Quy trình cập nhật thông tin trong toà soạn báo điện tử có sử dụng hệ CMS 1.2.3 Nhu cầu trong các hệ thống thông tin của các công ty Trong các hệ thống thông tin của các công ty, người ta phân thành các phòng ban và các dự án. Các phòng ban và các dự án này có nhiệm vụ phải cung cấp thông tin cho nhóm làm web của công ty. Sau đó, thông tin này mới được cập nhật lên hệ thống Intranet.
  • 31. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 22 Đặng Đình Vương Quy trình cập nhật thông tin này được minh hoạ bằng hình vẽ dưới đây. Hình 8: Quy trình cập nhật thông tin trong một hệ thống thông tin Trong quy trình này, các phòng ban và các dự án sở hữu thông tin riêng của họ. Tuy nhiên, họ không có quyền đưa các thông tin này lên hệ thống intranet của công ty. Việc cập nhật thông tin bị phụ thuộc vào nhóm làm web. Do đó, khi nhóm làm web nhận được thông tin từ các phòng ban và các dự án, họ cần phải kiểm tra lại tính chính xác của thông tin đó trước khi cập nhật thông tin lên hệ thống intranet. Do các phòng ban và các dự án quá bận rộn với công việc của họ, họ thường không cung cấp thông tin thường xuyên cho nhóm làm web để cập nhật thông tin về phòng ban hay dự án của mình. Khi những thông tin trên intranet của công ty quá lỗi thời vì không được cập nhật thường xuyên thì nhóm làm web mới nhắc nhở các phòng ban và các dự án cung cấp thông tin cho mình để cập nhật. Và điều này thật sự làm chán nản cả nhóm làm web lẫn các phòng ban và các thành viên của dự án. Ngược lại, khi sử dụng một hệ CMS trong hệ thống thông tin của công ty, các phòng ban và các dự án có thể cập nhật các thông tin của họ một cách nhanh chóng mà không cần phải phụ thuộc vào nhóm làm web. Hơn nữa, chính các phòng ban và các dự án sẽ chịu trách nhiệm về các thông tin mà mình đưa lên cũng như là tình trạng thông
  • 32. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 23 Đặng Đình Vương tin thiếu cập nhật về phòng ban hay dự án của mình. Do đó, các phòng ban và các dự án sẽ cảm thấy có trách nhiệm hơn với việc cập nhật thông tin thường xuyên này. Hình 9: Quy trình cập nhật thông tin trong một hệ thống thông tin có CMS Ngoài ra, hệ thống thông tin của công ty có thể sử dụng hệ CMS này như một công cụ để quản lý nội dung. Và công cụ này được sẽ được sử dụng bởi nhiều ứng dụng khác nhau trên intranet. 2. Những lợi ích mà một hệ CMS mang lại cho các công ty Do đề tài này được thực hiện nhằm phát triển một hệ CMS cho công ty TMA, do đó, chúng tôi chỉ quan tâm và nêu ra những lợi ích mà một hệ CMS mang lại cho hệ thống intranet của Công ty. Những lợi ích này được trình bày dưới đây: • Cập nhật thông tin nhanh chóng. • Giảm thời gian, công sức và chi phí cho việc cập nhật thông tin.
  • 33. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 24 Đặng Đình Vương • Các ứng dụng khác có thể sử dụng hệ CMS này như một công cụ hỗ trợ cho việc cung cấp và cập nhật thông tin. • Giúp người sử dụng dễ dàng tạo ra nội dung các trang web trong một môi trường thuận tiện. • Phân quyền sử dụng tương ứng với mỗi người sử dụng. • Cá nhân hoá thông tin người sử dụng. • Cung cấp cơ chế tìm kiếm thông tin. • Áp dụng các template để giúp cho việc tạo ra nội dung một cách đồng nhất. • Cho phép thay đổi dễ dàng cách thức hiển thị của các trang web trong web site. • Chấm dứt tình trạng thông tin thiếu cập nhật trên các web site. • Nâng cao trách nhiệm của các phòng ban và các đề án trong công việc cập nhật thông tin về phòng ban và đề án.
  • 34. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 25 Đặng Đình Vương Chương 4 Hệ thống intranet hiện tại của công ty
  • 35. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 26 Đặng Đình Vương 1. Yêu cầu khi phát triển hệ thống intranet của công ty TMA 1.1 Tình hình hiện tại Khi đề tài này được bắt đầu thì nhóm TIS (TMA Information System) đang phát triển một hệ thống intranet mới cho công ty dựa trên kiến trúc SOA (Service Oriented Architecture). Hình vẽ sau sẽ minh hoạ cho kiến trúc này. Portal được xây dựng dựa trên Liferay Hình 10: Kiến trúc SOA của intranet của công ty TMA
  • 36. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 27 Đặng Đình Vương Trong hình vẽ trên, chúng ta có thể liệt kê một số thành phần như sau: • Các ứng dụng: quản lý nhóm, thông tin liên hệ nhân viên, quản lý nhân sự, quản lý thông tin các dự án… • Các Dịch vụ: Dịch vụ bảo mật, dịch vụ tuyển dụng… • Các thành phần chức năng: Các gói thư viện dùng chung… • Các thành phần phi chức năng: Hệ quản lý tài liệu, Hệ quản lý nội dung, Hệ tìm kiếm thông tin, Hệ hỗ trợ làm báo cáo… Trong quá trình xây dựng hệ thống intranet, công ty đề ra các yêu cầu để phát triển một hệ thống ổn định, chẳng hạn các yêu cầu về hệ thống và các yêu cầu về triển khai. Các thành viên tham gia phát triển hệ thống và các thành phần liên quan phải tuân thủ các quy định đã đề ra. 1.2 Quy định về kiến trúc 1.2.1 Kiến trúc mạnh Một kiến trúc mạnh được xây dựng phải bao gồm các tính chất sau: • Có thể dễ dàng mở rộng kiến trúc intranet trong tương lai. • Hệ thống phải hoạt động ổn định. • Intranet có thể sử dụng dưới dạng một hệ thống phân tán. • Intranet hỗ trợ nhiều loại ứng dụng. • Intranet hoạt động với hiệu suất cao. • Intranet sử dụng các thành phần mã nguồn mở và miễn phí.
  • 37. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 28 Đặng Đình Vương 1.2.2 Xây dựng các công cụ hệ thống phi chức năng Hệ thống intranet bao gồm một số công cụ phi chức năng như sau : • Thành phần bảo mật: hệ thống intranet có một hệ thống bảo mật cho phép phân quyền những người sử dụng trên hệ thống. • Kiểm soát quy trình xử lý: hệ thống intranet xác định cơ chế quản lý các quy trình xử lý. • Hệ quản lý nội dung trang web: hệ thống intranet cung cấp các thành phần dùng để quản lý nội dung các trang web. • Hệ quản lý tài liệu: hệ thống intranet cung cấp các thành phần dùng để quản lý tài liệu trong hệ thống hệ thống intranet. • Các template của giao diện người dùng: hệ thống intranet hỗ trợ các template để giúp cho người sử dụng tạo ra nhanh chóng và dễ dàng nội dung một cách đồng nhất. 1.2.3 Bảo mật • Hỗ trợ nhiều loại người dùng: do trong công ty TMA có nhiều nhóm và trong mỗi nhóm có nhiều vị trí công việc khác nhau nên cần phải hỗ trợ nhiều loại người dùng khác nhau. • Truy cập mọi nơi: do các nhân viên của công ty có nhu cầu truy cập vào mạng intranet của công ty khi họ trở về nhà của họ nên hệ thống intranet sẽ hỗ trợ cơ chế để đáp ứng nhu cầu này • Ghi nhận truy cập: hệ thống intranet ghi nhớ các thao tác trên hệ thống trong phiên làm việc của từng người sử dụng.
  • 38. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 29 Đặng Đình Vương 1.2.4 Khả năng tích hợp Các yêu cầu này cho phép tích hợp dễ dàng các module vào trong hệ thống intranet của công ty: • Kiến trúc mã nguồn mở: đặc điểm này cho phép hỗ trợ nhiều công nghệ khác nhau cùng hoạt động . • Sử dụng các thư viện có sẵn thay vì xây dựng từ đầu. 1.3 Yêu cầu lúc phát triển Do hệ thống intranet được xây dựng để sử dụng trong nội bộ của công ty TMA, Công ty đã đặt ra các yêu cầu trong quá trình phát triển như sau: • Cần phải sử dụng các công cụ mã nguồn mở và miễn phí để phát triển hệ thống. • Cần phải sử dụng các công cụ trên nền web để tích hợp dễ dàng các công cụ này vào hệ thống thông tin hiện tại của TMA. • Hệ thống intranet và các thành phần của nó được xây dựng dựa trên mã nguồn mở và miễn phí.
  • 39. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 30 Đặng Đình Vương 2. Portal hiện tại của TMA 2.1 Đặc điểm và các thành phần của portal Theo như thiết kế ban đầu, portal của công ty TMA bao gồm các các đặc điểm sau: • Cơ chế bảo mật: đây chính là đặc điểm quan trọng nhất của portal dùng để kiểm soát truy cập của người sử dụng. • Khả năng tích hợp: đặc điểm này cho phép tích hợp các thành phần khác nhau vào trong nhân của portal. • Hệ quản trị tài liệu: hệ thống này dùng để quản lý các tài liệu sử dụng trong nội bộ công ty. • Hệ quản trị nội dung: hệ thống này dùng để quản lý nội dung các trang web được sử dụng trong nội bộ Công ty. • Cơ chế tìm kiếm: cơ chế cho phép các nhân viên trong Công ty tìm kiếm thông tin cần thiết của họ. • Cơ chế hỗ trợ báo cáo. • Hệ quản lý quy trình hoạt động: hệ thống này giúp cho các nhân viên trong công việc của họ. Khi có sự thay đổi xảy ra trong quy trình làm việc thì chỉ cần định nghĩa lại thứ tự thực hiện các công việc trong quy trình để nhận được cùng một kết quả như lúc chưa thay đổi, thay vì phải viết lại toàn bộ quy trình làm việc. • Hệ quản lý lịch trình: hệ thống hoạt động vào một thời điểm định trước trong tương lai.
  • 40. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 31 Đặng Đình Vương Trong các thành phần nêu trên, có một số thành phần đã được xây dựng hoàn thiện và số còn lại đang trong giai đoạn thực hiện. 2.2 Các thành phần đã được xây dựng Vào thời điểm bắt đầu thực hiện luận án này, các thành phần sau đã được xây dựng và tích hợp vào portal của công ty:
  • 41. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 32 Đặng Đình Vương Module Mã nguồn mở sử dụng Portal Liferay http://www.liferay.com/cms/servlet/HOME- INDEX Document Management System OpenEDMS và Knowledge Tree http://www.openedms.com/edms/index.html http://theknowledgetreeinc.com/ Search Engine http://Dig http://www.htdig.org/ Report Engine Datavision http://datavision.sourceforge.net/ Workflow Engine Bonita http://bonita.objectweb.org/ Bảng 1: Một số thành phần đã được xây dựng trong hệ thống portal của Công ty Các đặc điểm và các thành phần trong portal của công ty được thể hiện trong hình vẽ sau:
  • 42. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 33 Đặng Đình Vương Enterprise Portal Document Management Integration Reporting engine Security Workflow management Content management Scheduling system Searching Engine Hình 11: Các thành phần trong portal của công ty TMA ht://Dig Liferay BonitaDatavision OpenEDMS & Knowledge Tree
  • 43. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 34 Đặng Đình Vương 2.3 Kiến trúc hệ thống của portal 2.3.1 Kiến trúc hệ thống của các portal phổ biến Hình 12: Kiến trúc hệ thống của các portal phổ biến Trong các portal phổ biến, người ta sử dụng trình duyệt web và giao thức HTTP để kết nối đến các ứng dụng web trên portal. Mỗi portal có duy nhất một portlet/servlet container. Các ứng dụng web của portal giao tiếp với portlet/servlet container bởi các APIs và các SPIs. Portlet/servlet container chứa toàn bộ các portlet. Các portlet này cung cấp các APIs để portlet/servlet container có thể sử dụng các chức năng của nó
  • 44. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 35 Đặng Đình Vương 2.3.2 Kiến trúc hệ thống của portal TMA Hình 13: Kiến trúc hệ thống của portal TMA Trong kiến trúc này, khi ta nhập vào dữ liệu dạng HTML, WML hay XML (“Web services” trong hình vẽ), các dữ liệu này đi qua 3 tầng: trình diễn, xử lý và dữ liệu của mô hình MVC. Trong 3 tầng này, người ta có thể sử dụng các công nghệ như: struts, servlet, spring, EJB, Hibernate, JMS…
  • 45. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 36 Đặng Đình Vương Ngoài dữ liệu dạng HTML, WML hay XML, chúng ta còn có thể sử dụng các đối tượng dưới dạng J2EE, J2SE hay J2ME. 3. Công nghệ được sử dụng để phát triển hệ thống intranet Trong quá trình xây dựng hệ thống intranet, các công nghệ và kỹ thuật sau đã được sử dụng: • Multi-platform: Linux, Solaris, Windows • Platform : .NET, J2EE • XML, SOAP, HTTP, RMI-IIOP, WSRP... • Hệ quản trị cơ sở dữ liệu: Hypersonic, MySQL, PostgreSQL, SQL Server. • Web application server: JBoss, TomCat, Sun ONE, webLogic, Jonas. 4. Các chuẩn dùng để phát triển hệ thống Trong quá trình phát triển hệ thống intranet của Công ty, Công ty đã quyết định các thành phần được xây dựng cần tuân theo các chuẩn trên thế giới nếu có thể được. Sự phát triển các thành phần dựa trên các chuẩn này có các lợi ích như sau: • Sử dụng một chuẩn để phát triển sẽ cần ít thời gian và chi phí hơn. • Trên thế giới đều biết đến chuẩn được sử dụng để phát triển, do đó sẽ có nhiều sự hỗ trợ hơn trong quá trình xây dựng các thành phần. • Có nhiều mã nguồn mở được xây dựng dựa trên các tiêu chuẩn, do đó có thể tận dụng các thành phần này cho portal. • Các thành phần được xây dựng dựa trên các chuẩn sẽ tích hợp dễ dàng hơn vào hệ thống hiện tại.
  • 46. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 37 Đặng Đình Vương • Để mở rộng hệ thống hiện tại trong tương lai, cần phải xây dựng các thành phần theo chuẩn. Sau đây là các chuẩn được yêu cầu sử dụng trong quá trình phát triển hệ thống thông tin của công ty: • Chuẩn JSR 168 dùng để xây dựng các portlet. • Chuẩn JSR 170 để xây dựng hệ CMS. 5. Nhu cầu của công ty TMA khi xây dựng một hệ CMS Hệ CMS được xây dựng để sử dụng trong công ty TMA phải bao gồm các chức năng của một hệ CMS thông thường. các chức năng này được mô tả như sau: • Quản lý nội dung. Tạo, xoá và sửa đổi nội dung. Cập nhật nội dung. • Quản lý vai trò Tạo, xoá, sửa đổi vai trò. Cập nhật thông tin của vai trò. Cho phép vai trò đăng nhập vào hệ thống. Ngăn cấm vai trò đăng nhập vào hệ thống. • Phân quyền cho các vai trò. Mỗi vai trò có thể có nhiều quyền khác nhau và các quyền này được gán cho vai trò bởi người quản lý web site. Các quyền này có thể là đọc, ghi, đọc và ghi… • Quản lý người sử dụng.
  • 47. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 38 Đặng Đình Vương Tạo, xoá bỏ, sửa đổi thông tin người sử dụng. Cập nhật thông tin người sử dụng. Cho phép người sử dụng đăng nhập vào hệ thống. Ngăn cấm người sử dụng đăng nhập vào hệ thống. • Gán các vai trò cho người sử dụng. Do trong một tổ chức tồn tại rất nhiều phòng ban và vị trí công việc khác nhau, do đó cần phải phân chia vai trò cho từng người sử dụng khác nhau trên hệ thống tuỳ thuộc vào từng phòng ban và vị trí công việc của họ. Một người sử dụng có thể có nhiều vai trò khác nhau trong hệ thống và các vai trò này được gán bởi người quản lý web site. • Sử dụng các template cho các trang web: các trang web cần phải đồng bộ với nhau về cách thức hiển thị, do đó cần phải sử dụng các template giống nhau cho toàn bộ web site. • Phân loại nội dung: điều này là cần thiết để tránh tình trạng dữ liệu bị sắp xếp không theo trật tự và để có thể tìm kiếm dễ dàng thông tin cần thiết. • Tìm kiếm thông tin: do nội dung trang web và các thông tin liên quan ngày càng nhiều, do đó cần phải có cơ chế tìm kiếm thông tin để hỗ trợ các nhân viên trong các trường hợp cần thiết. • Thay đổi các thông số cấu hình: hệ thống này cho phép thay đổi các thông tin cấu hình để tối ưu hoá hoạt động của hệ thống. Ngoài các nhu cầu cầu của một hệ CMS thông thường, công ty TMA còn có 2 nhu cầu như sau:
  • 48. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 39 Đặng Đình Vương 5.1 Nhu cầu chia sẻ thông tin giữa các dự án và các vị trí công việc Trong công ty TMA có rất nhiều dự án và trong mỗi dự án lại tồn tại nhiều vị trí công việc khác nhau, bao gồm có 3 vị trí như sau: • Quản lý dự án. • Quản lý nhóm. • Thành viên bình thường. Mỗi dự án sở hữu các thông tin riêng về dự án đó và các công việc họ đang thực hiện. Một phần các thông tin này có thể cho phép mọi người trong công ty đều có thể xem được. Phần còn lại chỉ cho phép các thành viên trong nhóm có thể truy cập vào thôi. Mỗi dự án có một người phụ trách cập nhật thông tin về dự án đó. Người này thông thường là trưởng dự án hoặc trưởng nhóm. Người này có quyền thực hiện một số thao tác như: tạo, xoá bỏ, sửa đổi…các thông tin của nhóm trên intranet. các thành viên khác của nhóm chỉ có quyền xem trên các thông tin của nhóm. Hình vẽ sau sẽ minh hoạ cho điều vừa trình bày
  • 49. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 40 Đặng Đình Vương Hình 14: Chia sẻ thông tin giữa các dự án và vị trí công việc trong công ty TMA
  • 50. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 41 Đặng Đình Vương 5.2 Xây dựng hệ CMS dưới dạng một portlet có thể được sử dụng bởi các ứng dụng và các thành phần khác Như đã trinh bày như trên, chúng ta biết rằng hệ CMS xây dựng là một thành phần phi chức năng dùng để cung cấp chức năng cho các ứng dụng, các dịch vụ, các thành phần chức năng khác. Do đó, cần phải xây dựng hệ CMS dưới dạng một portlet để có thể sử dụng bởi các ứng dụng và các thành phần khác trên intranet. 5.3 Các kỹ thuật sử dụng trong quá trình phát triển Do hệ CMS này được xây dựng để tích hợp vào hệ thống thông tin có sẵn của công ty TMA dưới dạng một portlet. Do đó, có một số quy định trong quá trình phát triển hệ CMS này như sau: • Hệ CMS này phải được xây dựng dưới dạng một portlet: điều này cần thiết để tích hợp vào portal hiện tại của Công ty. • Hệ CMS này phải tuân theo chuẩn JSR 168: do chuẩn JSR 168 là chuẩn dùng để tích hợp một portlet vào portal. • Hệ CMS phải được lập trình bằng Java: portal hiện tại của công ty được lập trình bằng Java và các portlet trên portal tuân theo chuẩn JSR 168. • Hệ CMS phải được xây dựng dựa trên các giải pháp mã nguồn mở và miễn phí. • Sử dụng chuẩn JSR 170 để xây dựng hệ thống này nếu có thể được: do chuẩn JSR 170 là chuẩn dùng để hỗ trợ việc xây dựng các hệ CMS, việc xây dựng hệ thống này nên tuân theo chuẩn JSR 170 để có thể mở rộng hệ thống này trong tương lai nếu có nhu cầu. • Hệ thống này phải có khả năng hoạt động trên nền Linux: portal hiện tại của công ty hoạt động trên Linux.
  • 51. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 42 Đặng Đình Vương • Hệ thống này phải có khả năng họat động trên application server JBoss: do portal hiện tại của công ty hoạt động trên JBoss.
  • 52. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 43 Đặng Đình Vương Chương 5 Chuẩn JSR 168
  • 53. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 44 Đặng Đình Vương 1. Giới thiệu về chuẩn JSR 168 Chuẩn JSR 168 dùng để định nghĩa portlet và cách thức giao tiếp giữa portlet và portal. Phiên bản hiện tại của chuẩn này là 1.0 được đưa ra bởi Sun Microsystems vào ngày 29/08/2003. (http://jcp.org/en/jsr/detail?id=168) Hình 15: Mô hình chuẩn JSR 168 Hình trên mô tả sự giao tiếp giữa portal và các portlet. Sự giao tiếp này được thực hiện thông qua các API được cung cấp bởi chuẩn JSR 168. Portlet Portlet PortletPortlet Portlet API API API API API JSR-168
  • 54. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 45 Đặng Đình Vương 2. Một số khái niệm chính 2.1 Portal Portal là một ứng dụng Web dùng để tích hợp các nội dung từ các nguồn khác nhau vào cùng một trang Web. Các nội dung có thể được cấu hình tùy thuộc vào từng người sử dụng khác nhau mà Portal cho phép. Một Portal có thể chứa nhiều Portlet 2.2 Portlet Portlet là một thành phần (component) dựa trên nền Web sử dụng các công nghệ của Java. Portlet được quản lý bởi một Portlet Container. Portlet dùng để xử lý các yêu cầu và tạo ra các thành phần dữ liệu động để phản hồi yêu cầu. Portlet có thể tích hợp vào Portal và Portal sẽ cung cấp một tầng trình diễn cho các thành phần của Portlet. Nội dung được tạo ra bởi Portlet được gọi là Fragment. Một Fragment là một mảnh dữ liệu được tạo bởi các ngôn ngữ như: HTML, XHTML, WML… theo một định dạng được quy định. Các Fragment này có thể được kết hợp với các Fragment của các Portlet khác để hình thành trang Web của Portal. Người sử dụng tương tác với Portlet thông qua cơ chế yêu cầu/phản hồi được cung cấp bởi Portlet. Nội dung phản hồi yêu cầu được Portlet tạo ra và nội dung này cũng tùy thuộc vào cấu hình ứng với từng người sử dụng.
  • 55. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 46 Đặng Đình Vương 2.3 Portlet Container Porlet Container cung cấp một môi trường lúc Runtime chứa đựng và quản lý chu kỳ sống của một Portlet. Portlet Container nhận yêu cầu từ Portal và chuyển yêu cầu này đến Portlet tương ứng để Portlet xử lý yêu cầu và tạo nội dung phản hồi. 3. So sánh Portlet và Servlet 3.1 Điểm giống nhau giữa Portlet và Servlet • Cùng là thành phần Web sử dụng công nghệ của Java. • Được chứa đựng và quản lý bởi một Container. • Tạo ra nội dung dữ liệu động để phản hồi lại yêu cầu. • Cùng tương tác với người sử dụng thông qua cơ chế yêu cầu/phản hồi. 3.2 Điểm khác nhau giữa Portlet và Servlet • Portlet chỉ tạo ra các Fragment chứ không tạo ra toàn bộ tài liệu. Portal sẽ tập hợp các Fragment do Portlet tạo ra thành nội dung của trang Web trên Portal.. • Không cần phải kết hợp một Portlet với một địa chỉ URL như Servlet • Người sử dụng tương tác với Portlet thông qua Portal. • Portlet có thể được sử dụng nhiều nơi trên cùng một trang Web của Portal.
  • 56. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 47 Đặng Đình Vương 3.3 Đặc trưng của Portlet mà không có ở servlet • Portlet cho phép truy cập và lưu trữ cầu hình và tối ưu hoá dữ liệu. • Portlet cho phép truy cập vào các thông tin về người sử dụng. • Portlet hỗ trợ chức năng viết lại URL ( URL Rewriting Function ) cho phép tạo ra liên kết trong nội dung của nó. • Portlet có thể lưu trữ dữ liệu tạo thời trong phiên làm việc của Portlet ở 2 phạm vi: Phạm vi ứng dụng và Phạm vi cá nhân. 4. Giao diện portlet Giao diện Portlet khai báo các API cơ bản nhất của một Portlet. Mọi Portlet được xây dựng đều phải hiện thực hoá trực tiếp hoặc gián tiếp giao diện Portlet. Lớp GenericPortlet hiện thực hoá giao diện Portlet và định nghĩa các chức năng cơ bản nhất mà một Portlet cần có. Do đó, khi xây dựng Portlet, lập trình viên nên mở rộng trực tiếp hoặc gián tiếp lớp GenericPorlet này. Một Portlet được quản lý thông qua chu trình sống của nó, bắt đầu từ lúc Portlet được tải lên, tạo thể hiện của nó và khởi tạo, hoạt động để phản hồi yêu cầu của người sử dụng đến lúc nó được loại bỏ. Các phương thức được gọi đến trong chu trình sống của Portlet là: • Gọi phương thức init trong quá trình khởi tạo của Portlet • Nếu yêu cầu do máy khách gởi tới là yêu cầu hành động (Action Request) thì phương thức processAction được gọi. Nếu yêu cầu do máy khách gởi tới là yêu cầu biểu hiện (Render Request) thì phương thức processAction được gọi.
  • 57. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 48 Đặng Đình Vương • Khi Portlet Container xác định một Portlet không còn sử dụng nữa thì gọi đến phương thức destroy của Portlet đó. Khi phương thức destroy được gọi thì Portlet sẽ giải phóng tài nguyên hệ thống mà nó đang sử dụng và lưu lại trạng thái hiện thời của nó. 5. Portlet URL Một Portlet có thể tạo ra URL tham chiếu đến chính Portlet đó. Khi đó các URL này được gọi là Portlet URL. Để tạo ra một Portlet URL thì Porlet cần phải sử dụng đối tượng PorletURL. Nếu phương thức createActionURL được gọi thì sẽ tạo ra một URL hành động và nếu phương thức createRenderURL được gọi thì tạo ra một URL trình diễn. 6. Portlet Mode Kiểu Portlet xác định chức năng mà Portlet hiện đang thực hiện. Thông thường, Portlet thực hiện các tác vụ và tạo ra nội dung tùy thuộc vào chức năng hiện thời. Kiểu Portlet cho biết những tác vụ nào một Portlet cần thực hiện và những nội dung nào Portlet cần phải tạo ra. Có 3 kiểu Portlet được quy định là: • VIEW Chức năng chính của Portlet khi sử dụng kiểu VIEW là tạo ra nội dung cho biết trạng thái của Portlet Lập trình viên sẽ hiện thực hóa kiểu VIEW bằng cách định nghĩa lại phương thức doView của lớp GenericPortlet.
  • 58. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 49 Đặng Đình Vương Mọi Portlet đều phải hỗ trợ kiểu VIEW • EDIT Trong kiểu EDIT, một Portlet sẽ cung cấp nội dung và cấu hình các thành phần của nó để người sử dụng có thể tối ưu hóa họat động của Portlet Lập trình viên sẽ hiện thực hóa kiểu EDIT bằng cách định nghĩa lại phương thức doEdit của lớp GenericPortlet. Mọi Portlet không nhất thiết phải hỗ trợ kiểu VIEW • HELP Trong kiểu HELP, Portlet cung cấp những thông tin giúp đỡ người sử dụng về Portlet. Những thông tin này có thể là những thông tin chung về toàn bộ Portlet hoặc là các giúp đỡ cảm ngữ cảnh (Context- sensitive help) Các hằng số tượng trưng cho 3 kiểu Portlet được khai báo trong lớp PortletMode 7. Window State Trạng thái cửa sổ cho biết khoảng không gian trên trang Web Portal dành cho nội dung của Portlet. Có 3 trạng thái cửa sổ được định nghĩa : • NORMAL: cho biết Porlet có thể chia sẻ trang Portal với các Portlet khác. Ngoài ra, trạng thái này còn cho biết giới hạn hiển thị của thiết bị do đó Portlet sẽ điều chỉnh kích thước phù hợp với vùng hiển thị.
  • 59. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 50 Đặng Đình Vương • MAXIMIZED: cho biết chỉ có một Portlet hiển thị trên trang Portal hoặc Portlet được ưu tiên hiển thị nội dung nhiều hơn các Portlet còn lại. • MINIMIZED: Cho biết nội dung của Portlet chỉ được hiển thị ít nhất có thể được hoặc không được hiển thị. Các trạng thái cửa sổ được định trong lớp WindowState. 8. Portlet Request Một yêu cầu gởi đến Portlet chứa các thông tin về yêu cầu từ phía máy khách, các tham số của yêu cầu, nội dung dữ liệu yêu cầu, kiểu Portlet, trạng thái cửa sổ… Yêu cầu được đại diện bởi một đối tượng và đối tượng này được truyền vào như là đối số của phương thức processAction hay render. Mỗi đối tượng yêu cầu chỉ có thể họat động trong phạm vi của một phương thức processAction hay render Các chức năng cần thiết của đối tượng PortletRequest được khai báo trong giao diện PortletRequest. 9. Portlet Response Một phản hồi của Portlet bao gồm những thông tin được tạo ra bởi Portlet gởi trả về cho Portlet Container dựa trên yêu cầu được gởi đến như: sự thay đổi kiểu Portlet, tiêu đề, nội dung… Portlet Container sẽ sử dụng những thông tin này để tạo ra phản hồi đến người sử dụng, thông thường là một trang Web Portal.
  • 60. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 51 Đặng Đình Vương Mỗi đối tượng phản hồi chỉ có thể họat động trong phạm vi của một phương thức processAction hay render Các chức năng cần thiết của đối tượng Portlet Response được khai báo trong giao diện PortletResponse. 10. Portlet Preferences Portlet thông thường được cấu hình cho phù hợp với từng người sử dụng. Các thông tin về cấu hình của Portlet được gọi là Portlet Preference. Và Portlet Container sẽ chịu trách nhiệm lưu giữ những thông tin cấu hình này. Portlet có thể truy cập vào các thông tin cấu hình của nó thông qua giao diện PortletPreferences. Và Portlet chỉ có thể thay đổi các thông tin về cấu hình của nó bên trong phương thức processAction. Định nghĩa Portlet xác định các thuộc tính preference mà một Portlet sử dụng. Định nghĩa này bao gồm các giá trị khởi tạo và xác định xem thuộc tính này có phải là thuộc tính chỉ đọc hay không. 11. Caching Việc lưu các nội dung cần sử dụng vào vùng nhớ tạm thời được thực hiện nhằm mục đích rút ngắn thời gian xử lý của Portlet, đồng thời cũng rút ngắn thời gian xử lý của Server. Đặc tả Portlet xác định cơ chế hết hạn việc lưu trữ nội dung lưu tạm thời này. Cơ chế này họat động tùy thuộc và từng Portlet và từng người sử dụng Portlet. Nội
  • 61. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 52 Đặng Đình Vương dung được lưu trữ tạm thời không được chia sẻ giữa các người sử dụng khác nhau đang sử dụng đồng thời cùng một Portlet. Một Portlet muốn tăng thời gian xử lý bằng cách sử dụng cơ chế lưu trữ tạm thời nội dung cần phải định nghĩa thời gian hết hạn nội dung lưu tạm thời (tính bằng đơn vị giây) trong đặc tả triển khai của nó. Ví dụ sau đây cho biết một Portlet muốn nội dung của nó được lưu trữ tạm thời với thời gian hết hạn là 300 giây. ... <portlet> ... <expiration-cache>300</expiration-cache> ... </portlet> ... Một Portlet nếu đã định nghĩa thời gian hết hạn lưu trữ dữ liệu tạm thời của nó trong đặc tả triển khai của nó vẫn có thể được lập trình viên thay đổi Thời gian hết hạn của việc lưu trữ tạm thời này có thể được thay đổi bằng cách thay đổi thuộc tính của đối tượng RenderResponse. Nếu thời gian hết hạn này được gán bằng 0 thì việc lưu trữ dữ liệu tạm thời bị bỏ qua đối với Portlet. Nếu giá trị này được gán bằng -1 thì các nội dung được lưu tạm thời của Portlet sẽ không bao giờ bị hết hạn.
  • 62. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 53 Đặng Đình Vương Nếu một Portlet không định nghĩa thời gian hết hạn của dữ liệu lưu trữ tạm thời trong đặc tả triển khai của nó thì việc thay đổi giá trị thời gian này trong đối tượng RenderResponse sẽ không có tác dụng do sẽ bị Portlet Container bỏ qua. Nếu nội dung của Portlet được lưu trữ tạm thời và chưa hết hạn, đồng thời không có một yêu cầu nào đến Portlet từ phía người sử dụng thì Portlet Container sẽ sử dụng nội dung được lưu trữ tạm thời khi cần thiết. Nếu nội dung của Portlet được lưu trữ tạm thời và có yêu cầu đến Portlet từ phía người sử dụng thì Portlet Container sẽ không sử dụng nội dung tạm thời được lưu trữ mà sẽ gọi đến phương thức xử lý yêu cầu của Portlet 12. Ứng dụng Portlet 12.1 Các thành phần của ứng dụng Portlet Ứng dụng Portlet là một ứng dụng Web nên ngoài việc bao gồm Portlet và đặc tả triển khai Portlet, nó còn có thể chứa các thành phần khác như: Servlet, trang JSP, các lớp… Do đó, bên cạnh các thông tin về ứng dụng Portlet, nó còn chứa đựng thông tin về các thành phần được đưa vào ứng dụng Portlet. 12.2 Cấu trúc cây thư mục Một ứng dụng Portlet cũng có cấu trúc cây thư mục được tổ chức giống như một ứng dụng Web. Tuy nhiên có một số khác biệt như sau: • Có thêm tập tin /WEB-INF/portlet.xml là tập tin đặc tả triển khai của Portlet.
  • 63. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 54 Đặng Đình Vương • Các lớp được sử dụng cho ứng dụng Portlet và các tài nguyên khác được truy cập bởi ứng dụng Portlet cần phải được lưu trong thư mục /WEB-INF/classes hoặc trong các tập tin JAR được lưu trong thư mục /WEB-INF/lib. 12.3 Tập tin lưu trữ của ứng dụng Portlet Một ứng dụng Portlet cũng được đóng gói như là một ứng dụng Web. Nghĩa là sử dụng dạng WAR (Web Application Archive) khi triển khai ứng dụng. 13. Các đặc tả đóng gói và triển khai 13.1 Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet Trong các ứng dụng Portlet, luôn tồn tại 2 tập tin đặc tả là: • Tập tin web.xml dùng để đặc tả các tài nguyên của ứng dụng Web. • Tập tin portlet.xml dùng để đặc tả các tài nguyên của ứng dụng Portlet. Các tài nguyên nào không liên quan đến Portlet thì được khai báo trong tập tin đặc tả web.xml. Còn các tài nguyên nào có liên quan đến Portlet thì được khai báo trong tập tin portlet.xml . Ngòai ra, một số thông tin của Portlet cần phải được khai báo trong tập tin web.xml như sau: • Mô tả về ứng dụng Portlet được khai báo bằng thẻ <description>. • Tên của ứng dụng Portlet được khai báo bằng thẻ <display-name>. • Việc ánh xạ các vai trò bảo mật (Security Role Mapping) của ứng dụng Portlet được khai báo bằng thẻ <security-role>.
  • 64. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 55 Đặng Đình Vương 13.2 Triển khai ứng dụng Portlet và ứng dụng Web Các Portlet, đặc tả triển khai và mọi tài nguyên đều phải được đóng gói trong cùng một tập tin WAR. Trong đó, thư mục WEB-INF bao gồm các thành phần: • Tập tin đặc tả triển khai /WEB-INF/portlet.xml • Các lớp của Portlet nằm trong thư mục /WEB-INF/classes • Các tập tin JAR được lưu trong thư mục /WEB-INF/lib Một ví dụ về cấu trúc cây thư mục của ứng dụng Portlet như sau: /images/myButton.gif /META-INF/MANIFEST.MF /WEB-INF/web.xml /WEB-INF/portlet.xml /WEB-INF/lib/myHelpers.jar /WEB-INF/classes/com/mycorp/servlets/MyServlet.class /WEB-INF/classes/com/mycorp/portlets/MyPortlet.class /WEB-INF/jsp/myHelp.jsp Ứng dụng Portlet nếu muốn sử dụng các tài nguyên không thể đóng gói được vào tập tin WAR, chẳng hạn EJB, thì có thể đóng gói các tài nguyên này dưới dạng tập tin EAR. 13.3 Các thành phần của đặc tả triển khai Portlet Các thông tin cấu hình và các thông tin triển khai sau đây phải được hỗ trợ trong tập tin đặc tả triển khai Portlet :
  • 65. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 56 Đặng Đình Vương • Định nghĩa ứng dụng Portlet (Portlet Application Definition) • Định nghĩa Portlet (Portlet Definition) Hình vẽ sau minh họa cấu trúc của một đặc tả triển khai Portlet:
  • 66. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 57 Đặng Đình Vương Hình 16: Cấu trúc một đặc tả triển khai Portlet
  • 67. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 58 Đặng Đình Vương Hình 17: Cấu trúc một đặc tả triển khai Portlet (tt)
  • 68. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 59 Đặng Đình Vương 13.4 Tính duy nhất của các giá trị trong đặc tả triển khai Portlet Các giá trị trong đặc tả triển khai sau phải là duy nhất trong phạm vi của định nghĩa ứng dụng Portlet (Portlet Application Definition): • Tên Portlet : <portlet-name>. • Kiểu Portlet tùy chọn : <portlet-mode>. • Kiểu cửa sổ tùy chọn : <window-state>. • Thuộc tính người sử dụng : <name>. Các giá trị trong đặc tả triển khai sau phải là duy nhất trong phạm vi của định nghĩa Portlet (Portlet Definition): • Giá trị khởi tạo: <name>. • Hỗ trợ kiểu: <mime-type>. • Tham chiếu: <name>. • Tham chiếu vai trò bảo mật: <role-name>. 14. Thư viện các thẻ Portlet Thư việc các thẻ Portlet dùng để hỗ trợ cho các trang JSP khi được gọi từ Portlet có thể truy nhập vào các thành phần của Portlet như là : RenderRequest, RenderResponse…Các thư viện này cũng giúp cho các trang JSP có thể truy cập vào các chức năng của Portlet như việc tạo ra các Portlet URL.
  • 69. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 60 Đặng Đình Vương Các trang JSP khi sử dụng các thư viện này cần phải khai báo chúng trong thẻ thư viện theo như mẫu sau: <%@ taglib uri=http://java.sun.com/portlet prefix=”portlet” %> 14.1 Thẻ actionURL Thẻ actionURL tạo ra một URL tham chiếu đến Portlet hiện tại và thực thi một số yêu cầu với các tham số khởi tạo. Các tham số này có thể được thêm vào URL bằng cách nhập thẻ param giữa thẻ đóng và thẻ mở actionURL như trong ví dụ sau : <portlet:actionURL windowState=”maximized” portletMode=”edit”> <portlet:param name=”action” value=”editStocks”/> </portlet:actionURL> 14.2 Thẻ renderURL Thẻ renderURL tạo ra một URL tham chiếu đến Portlet hiện tại và thực thi một số yêu cầu render với các tham số khởi tạo. Các tham số này có thể được thêm vào URL bằng cách nhập thẻ param giữa thẻ đóng và thẻ mở renderURL.
  • 70. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 61 Đặng Đình Vương Chương 6 Chuẩn JSR 170
  • 71. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 62 Đặng Đình Vương 1. Giới thiệu về chuẩn JSR 170 Chuẩn JSR 170 dùng để định nghĩa cách thức lưu trữ và truy xuất dữ liệu. Có nhiều loại dữ liệu được hỗ trợ như: hệ quản trị cơ sở dữ liệu, hệ thống tập tin của hệ điều hành, tập tin XML…Ngoài ra, chuẩn này còn cung cấp các API và các cơ chế để chuyển đổi giữa các cơ sở dữ liệu cũng như hỗ trợ cho việc truy xuất cơ sở dữ liệu, như: lưu trữ dữ liệu theo cấu trúc cây, quản lý phiên bản dữ liệu, lắng nghe sự kiện xảy ra trên cấu trúc lưu trữ dữ liệu, không cho truy cập vào dữ liệu… Phiên bản hiện tại của chuẩn JSR 170 là 0.16.2 được đưa ra bởi Day Management AG vào ngày 25/01/2005. (http://jcp.org/en/jsr/detail?id=170). Hình vẽ sau mô tả cách thức giao tiếp của JSR 170 với các hệ cơ sở dữ liệu. Hình 18: Chuẩn JSR 170 giao tiếp với cơ sở dữ liệu Repository DBMS Repository File System Repository XML
  • 72. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 63 Đặng Đình Vương 2. Mô hình repository Một JCR (Java Content Repository) bao gồm một hay nhiều workspace, mỗi workspace là một cấu trúc cây gồm nhiều item, một item có thể là một node hay một property, mỗi node có thể không có con hay có nhiều con và không có property hay có nhiều property. Có duy nhất một node không có cha gọi là root. Tất cả các node ngoại trừ root có ít nhất một cha. Property có một cha và không có con, được gọi là lá của cây. Property là một đơn vị nội dung nhỏ nhất bao gồm tên và giá trị tương ứng . Dữ liệu thực sự được chứa đựng trong giá trị của property. Hình 19: Mô hình một workspace của một repository
  • 73. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 64 Đặng Đình Vương Trong biểu đồ trên, root có 3 node con là a,b và c. Mỗi node con có nhiều node con hay nhiều Property, chẳng hạn node a có 2 con là d và e, node e có 2 property là j và k, Property j chứa một hình ảnh và Property k chứa một số thực. Bất kỳ item nào trong cấu trúc trên đều có thể được xác định bằng một đường dẫn tuyệt đối. Ví dụ đường dẫn / chỉ đến root, đường dẫn /a/d/i chỉ đến 1 Property có giá trị là true. Đường dẫn tuyệt đối luôn bắt đầu với / . Đường dẫn tương đối chỉ ra một node hay một property từ một node đã được xác định trước. Ví dụ : với node /a trong biểu đồ trên thì đường dẫn tương đối đến property với giá trị true là d/i, đến property có giá trị -25 là ../c/h. 3. Một số API cơ bản Toàn bộ Repository được đại diện bởi một đối tượng Repository. Một Client kết nối tới một Repository bằng cách cung cấp một đối tượng Credentials và xác định một Workspace cụ thể bên trong một Repository. Nếu Credentials được thông qua thì Client có thể truy cập đến một Workspace đã xác định, sau đó Client sẽ nhận một Ticket. Ví dụ : // Lấy đối tượng Repository Repository repository = (Repository)java.rmi.Naming.lookup("MyRepo"); // Lấy đối tượng Credentials Credentials credentials = new SimpleCredentials("MyName", "MyPassword".toCharArray());
  • 74. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 65 Đặng Đình Vương // Lấy một Ticket Ticket myTicket = repository.login(credentials, "MyWorkspace"); Với đối tượng Ticket, Client có thể truy cập đến bất kỳ một Node hay Property nào trong cây của Workspace đang truy cập : // Lấy Node Root Node root = myTicket.getRootNode(); // Lấy một Node bất kỳ với đường dẫn tuyệt đối Node myNode = root.getNode("a/e"); // Lấy một Property của myNode Property myProperty = myNode.getProperty("k"); // Lấy ra giá trị của một Property Value myValue = mỷPoperty.getValue(); // Chuyển đổi một Value về một kiểu nào đó double myDouble = myValue.getDouble();
  • 75. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 66 Đặng Đình Vương 3.1 Thao tác trên repository Sau khi có một Ticket, Client có thể thao tác vào Repository bằng cách thêm hay xoá các node, property và thay đổi các giá trị của các Property Ví dụ : Sau khi có một node, Client có thể thêm vào một node con và thêm một Property vào node con đó. //Thêm một Node con Node newNode = myNode.addNode(“n”); //Thêm một Property newNode.setProperty(“x”,”Hello”); Sự thay đổi bởi các phương thức của Node và Property không tác động ngay vào Workspace của Repository. Các sự thay đổi đó được lưu giữ tạm thời cùng với đối tượng Ticket cho đến khi phương thức Ticket.save hoặc Node.save được gọi Ticket.save sẽ cập nhật tất cả sự thay đổi từ lần save trước đó. Phương thức Node.save(boolean shallow) lưu toàn bộ cây con của đối tượng node (khi shallow = false) hoặc chỉ lưu các property của node đó (khi shallow = true) Về mặt tổng quát, Ticket là một kho lưu trữ tạm thời, tất cả những sự thay đổi được thực hiện thông qua những phương thức của Ticket hoặc gián tiếp thông qua các phương thức của Node và Property.
  • 76. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 67 Đặng Đình Vương 4. Sự liên hệ giữa Node, Property và Item Do các Node và các Property có một số chức năng chung nên các phương thức chung được định nghĩa trong Interface Item. Hình 20: Mối liên hệ giữa Node, Property và Item Biểu đồ UML trên chỉ ra Property và Node là các SubInterface của Item. Một Property có một và chỉ một Node cha, một Node có thể có một hay nhiều Node cha và có nhiều Item con. 5. Sự sắp xếp các Item con Một node được hỗ trợ sắp thứ tự nghĩa là sẽ tồn tại 2 danh sách, một cho các node con và một cho các property. các node con và các property sẽ không chung thứ tự với nhau.
  • 77. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 68 Đặng Đình Vương Khi một item con có thỉ mục là n bị xoá khỏi một node có hỗ trợ sắp thứ tự thì tất cả các item có chỉ mục lớn hơn n sẽ bị giảm đi 1 đơn vị. Khi một item được thêm vào mà không chỉ rõ chỉ mục, nó sẽ tự động được thêm vào cuối danh sách. 6. Namespace Giống như XML, JCR cũng đưa ra khái niệm Namespaces định nghĩa các tiền tố tham chiếu đến các URI.Các tiền tố này dùng cho việc đặt tên các Item trong Repository đồng thời tránh sự trùng tên giữa các Node hay các Property trong các mã nguồn khác nhau. Mỗi JCR Repository đều có một đối tượng NamespaceRegistry dùng để thực hiện các thao tác liên quan đến đăng ký các Namespace. Trong khi đăng ký Namespace, một số tiền tố được tự động tạo ra và không thể xóa bỏ được. Các tiền tố đó là : • jcr -> http://www.jcp.org/jcr/1.0 : Dùng cho việc đặt tên các loại Node có sẵn. Ví dụ: jcr: content. • nt -> http://www.jcp.org/jcr/nt/1.0 : Dùng cho việc đặt tên các loại Node chính (primary node types). • mix -> http://www.jcp.org/jcr/mix/1.0 : Dùng cho việc đặt tên các loại Node phụ (mixin node types). • pt -> http://www.jcp.org/jcr/pt/1.0 : Dùng cho việc đặt tên các Property và sử dụng trong việc chuyển nội dung của Repository sang dạng thức XML. • sv -> http://www.jcp.org/jcr/sv/1.0 : Dùng trong khung nhìn System View khi chuyển nội dung của Repository sang dạng thức XML.
  • 78. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 69 Đặng Đình Vương 7. Property 7.1 Property đa trị Trong một số trường hợp, một property có thể chứa nhiều giá trị. Điều này tùy thuộc vào kiểu của node cha. Để truy xuất các giá trị của một property, ta sử dụng phương thức Property.getValues(), phương thức này trả về một mảng các đối tượng Value chứa các giá trị của Property. Các giá trị chứa trong property đa trị đều có chung một kiểu. 7.2 Các kiểu dữ liệu của Property Có 9 kiểu dữ liệu của Property được định nghĩa bằng các hằng số trong lớp PropertyType. Bao gồm : PropertyType.STRING PropertyType.BINARY PropertyType.DATE PropertyType.LONG PropertyType.DOUBLE PropertyType.BOOLEAN PropertyType.NAME PropertyType.PATH PropertyType.REFERENCE
  • 79. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 70 Đặng Đình Vương Các kiểu STRING, BINARY, LONG, DOUBLE, BOOLEAN của Property tương tự như các kiểu string, binary, long, double, boolean được định nghĩa trong package java.lang của Java. 7.2.1 Kiểu Date Định dạng của dữ liệu có kiểu Date phải theo chuẩn ISO 8601 : YYYY - MM - DDThh:mm:ss.sssTZD. Trong đó : YYYY 4 chữ số biểu diễn năm MM 2 chữ số biểu diễn tháng ( từ 01 đến 12 ) DD 2 chữ số biểu diễn ngày ( từ 01 đến 31 ) hh 2 chữ số biểu diễn giờ ( từ 00 đến 23 ) (không cho phép biểu diễn dạng am/pm) mm 2 chữ số biểu diễn phút ( từ 00 đến 59 ) ss.sss 5 chữ số biểu diễn giờ với sai số lấy 3 chữ số thập phân ( từ 00.000 đến 59.999 ) TZD Time Zone Designator 7.2.2 Kiểu Reference, Path và Name Property có kiểu Name dùng để chứa các thuộc tính сủa namespace, nó là một giá trị kiểu string chứa một phần của namespace. Property có kiểu Path đại diện cho một đường dẫn trong một workspace bao gồm cả đường dẫn tuyệt đối và tương đối. Path không phải là kiểu tham chiếu, nó có thể chứa một đường dẫn chỉ đến một Item không tồn tại trong workspace.
  • 80. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 71 Đặng Đình Vương Property có kiểu Reference dùng để tham chiếu đến một node trong workspace. Giá trị của property này là một UUID của node mà nó tham chiếu. Nó không cho phép xóa bất kỳ một node nào có trong đích đến của nó. Nếu muốn xoá node, trước tiên phải xoá các tham chiếu đến node đó. 8. Node 8.1 Quan hệ giữa các node cùng tên và cùng cha ( Same-Name Siblings ) Một node có thể chấp nhận các node khác có cùng cha và cùng tên với nó. Trong trường hợp này, một đường dẫn không xác định duy nhất một node mà là một mảng các node. Chỉ mục của các node trong mảng các node này có thể bị thay đổi khi ta xóa hay thêm một node mới vào. Phương thức chuẩn để lấy về tập hợp các Node là Node.getNodes(String namePattern). Phương thức này trả về một mảng các node con của đối tượng Node. Khác với node, một property có thể có nhiều giá trị chứ không tồn tạiquan hệ này. 8.2 Các kiểu của Node Nét đặc biệt của JCR là khả năng hỗ trợ kiểu cho node. Kiểu node quy định các Node con hay các Property mà Node đó có thể có hoặc bắt buộc phải có. Một kiểu node bao gồm các thành phần sau :
  • 81. Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Bùi Vĩnh Phú 72 Đặng Đình Vương • Name: tên của kiểu . JCR quy định sẵn một số kiểu bao gồm các kiểu node chính có tên bắt đầu với “nt:” và các kiểu node phụ có tên bắt đầu với “mix:”. • Supertype: mỗi kiểu node có thể là mở rộng của một hay nhiều kiểu node khác và kiểu node được mở rộng là Supertype của kiểu node mở rộng. • Property Definitions: mỗi kiểu node quy định một tập các thuộc tính mà Node có kiểu này có thể có hay bắt buộc phải có. Đồng thời kiểu node cũng quy định những đặc điểm mà các thuộc tính này phải có, những đặc điểm này gọi là Property Definition. • Child Node Definitions: mỗi kiểu node quy định một tập các Node con mà Node có kiểu này có thể có hay bắt buộc phải có. Đồng thời kiểu node cũng quy định những đặc điểm mà các Node con của Node này phải có, những đặc điểm này gọi là Node Definition. • Mixin Status: JCR quy định mỗi kiểu node chỉ có thể là kiểu node chính hay kiểu node phụ..