TÊN ĐỀ TÀI: Nghiên cứu công nghệ JSF 2.0 và ICEFaces để xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal II.. NHIỆM VỤ VÀ NỘI DUNG Nhiệm vụ: Nghiên cứu công nghệ JS
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU CÔNG NGHỆ JSF 2.0
Đoàn Bảo Trung
TP.HỒ CHÍ MINH, tháng 8 năm 2011
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU CÔNG NGHỆ JSF 2.0
Tô Thị Thùy Trang Đoàn Bảo Trung
Trang 3CÔNG TRÌNH HOÀN TẤT TẠI TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
Giáo viên hướng dẫn: TS Phạm Văn Tính
Phản biện: Công ty cổ phần phần mềm Sài Gòn mới
Luận văn kỹ sư được bảo vệ tại HỘI ĐỒNG CHẤM LUẬN VĂN KỸ
SƯ TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM ngày 31 tháng 08 năm 2011
Trang 4NHIỆM VỤ LUẬN VĂN CỬ NHÂN
I TÊN ĐỀ TÀI: Nghiên cứu công nghệ JSF 2.0 và ICEFaces để xây dựng ứng
dụng quản lý hồ sơ hành chính trên nền Liferay Portal
II NHIỆM VỤ VÀ NỘI DUNG
Nhiệm vụ: Nghiên cứu công nghệ JSF 2.0 và ICEFaces để xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
Nội dung: Dựa trên nền tảng các công nghệ đã tìm hiểu xây dựng module quản
lý hồ sơ lao động trong hệ thống quản lý hồ sơ hành chính một cửa cho chính phủ điện tử trên nền Liferay Portal
III NGÀY GIAO NHIỆM VỤ: 01/04/2011
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15/08/2011
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS PHẠM VĂN TÍNH
Ngày / / KHOA CNTT
Ngày / / CHỦ NHIỆM CHUYÊN NGÀNH
Ngày / /
CÁN BỘ HƯỚNG DẪN
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập-Tự Do-Hạnh Phúc
Bộ Giáo Dục và Đào Tạo
Trường ĐH NÔNG LÂM TpHCM
Họ tên sinh viên: PHẠM VĂN NAM
Ngày tháng năm sinh: 02/01/1988
Chuyên ngành: Mạng máy tính truyền thông
Phái: Nam
Nơi sinh: Gia Lai Ngành: Công nghệ thông tin
Họ tên sinh viên: NGUYỄN THỊ BÍCH THỦY
Ngày tháng năm sinh: 28/06/1989
Chuyên ngành: Mạng máy tính truyền thông
Phái: Nữ
Nơi sinh: Đồng Tháp Ngành: Công nghệ thông tin
Họ tên sinh viên: TÔ THỊ THÙY TRANG
Ngày tháng năm sinh: 19/09/1898
Chuyên ngành: Mạng máy tính truyền thông
Phái: Nữ
Nơi sinh: Đồng Tháp Ngành: Công nghệ thông tin
Họ tên sinh viên: ĐOÀN BẢO TRUNG
Ngày tháng năm sinh: 01/12/1989
Chuyên ngành: Mạng máy tính truyền thông
Phái: Nam
Nơi sinh: Tiền Giang Ngành: Công nghệ thông tin
Trang 5Sau thời gian nghiên cứu luận văn, chúng em cũng đã đạt được những kết quả nhất định Để đạt được điều này thì ngoài sự cố gắng và nổ lực của từng thành viên trong nhóm, chúng em còn nhận được rất nhiều sự quan tâm và chỉ bảo của nhà trường, quý thầy cô, gia đình, bạn bè, …
Chúng em xin chân thành cám ơn Khoa Công nghệ thông tin Đại học Nông Lâm Thành phố Hồ Chí Minh đã tạo điều kiện cho chúng em thực hiện đề tài này
Chúng em chân thành cám ơn quý thầy cô là những người đã tận tình chỉ bảo và truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian qua
Chúng em xin chân thành biết ơn Thầy Phạm Văn Tính đã tận tình hướng dẫn, chỉ bảo và giúp đỡ chúng em trong suốt quá trình thực hiện đề tài nghiên cứu này
Chúng em chân thành cám ơn Công ty cổ phần phần mềm Sài Gòn mới đã tận tình giúp đỡ chúng em trong suốt quá trình nghiên cứu và thực hiện đề tài này
Ngoài ra chúng em còn xin gửi lời cảm ơn tới nhà Trường, văn phòng Khoa Công nghệ thông tin và bạn bè là những người đã chân thành giúp
đỡ chúng em trong thời gian qua
Trong quá trình thực hiện đề tài nghiên cứu, mặc dù các thành viên
đã cố gắng nỗ lực thực hiện nhưng chúng em chắc không thể tránh được những sai sót nhất định Kính mong sự thông cảm và tận tình chỉ bảo của quý Thầy Cô
Sinh viên thực hiện:
Phạm Văn Nam Nguyễn Thị Bích Thuỷ
Tô Thị Thuỳ Trang Đoàn Bảo Trung
LỜI CẢM ƠN
Trang 6Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhI SVTH: Nam, Thuy, Trang, Trung
DANH SÁCH CHỮ VIẾT TẮT
JDK Java Development Kit
Bộ nhân phát triển Java
API Application Programming Interface
Giao diện lập trình ứng dụng
HTML HyperText Markup Language
Ngôn ngữ đánh dấu siêu văn bản
XML EXtensible Markup Language
Ngôn ngữ đánh dấu mở rộng
DCOM Distributed Component Object Model
Mô hình đối tượng thành phần kết hợp
HTTP HyperText Transfer Protocol
Giao thức truyền tải siêu văn bản
CPĐT Chính phủ điện tử
ICT Information and Comunication Technologies
Thông tin và truyền thông
LAN Local Area Network
Mạng nội bộ
UBND Uỷ ban nhân dân
CNTT Công nghệ thông tin
CSDL Cơ sở dữ liệu
HQSLDB HyperSQLDataBase
Hệ quản trị CSDL hướng đối tượng
IBM DB2 Hệ quản trị CSDL của hãng IBM
J2EE Java 2 Platform Enterprise Edition
WSRP Web Services for Remote Portlets
IOC International Olympic Committee
HQT CSDL Hệ quản trị CSDL
JSTL JavaServer Pages Standard Tag Library
RIA Rich Internet Applications
Trang 7
Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhII SVTH: Nam, Thuy, Trang, Trung
DANH MỤC CÁC HÌNH
Hình 3 1Portlet container thi hành 7
Hình 3 2Mô hình xử lý request 9
Hình 3 3Renderer parameter 11
Hình 3 4Resource Request Handling Sequence 14
Hình 3 5Vòng đời xử lý của request 16
Hình 3 6 Mô hình kiến trúc JSF 26
Hình 3 7Mô hình Faces lifecycle 28
Hình 3 8Mô hình portlet lifecycle 29
Hình 3 9Mô hình Faces lifecycle trong portlet 1 29
Hình 3 10Mô hình Faces lifecycle trong portlet 2 29
Hình 3 11Màn hình đăng nhập của Liferay 31
Hình 3 12Giao diện trang chủ 31
Hình 3 13Màn hình chọn loại Liferay Project 32
Hình 3 14Màn hình xóa Page 35
Hình 3 15Màn hình hộp thoại khi chọn xóa Page 35
Hình 3 16Màn hình chọn xóa Page 35
Hình 3 17 Chọn Configuration 37
Hình 3 18Màn hình cấu hình navigate 37
Hình 3 19Màn hình customize navigate 38
Hình 3 20Mô hình xử lý trong JSF 40
Hình 3 21Vòng đời xử lý request của JSF 41
Hình 3 22Server-side UI component tree. 42
Hình 3 23Áp dụng giá trị của request. 43
Hình 3 24Xảy ra lỗi khi conversion và validation. 43
Hình 3 25Cập nhật thuộc tính của Model. 44
Hình 3 26Gọi logic tuỳ chỉnh ứng dụng. 45
Hình 3 27Hiển thị kết quả trả về và lưu lại trạng thái 45
Hình 3 28Kết quả hiển thị 48
Hình 3 29Mô hình thiết kế Model – View – Controller 53
Hình 3 30 Màn hình bắt đầu. 55
Hình 3 31 Màn hình câu hỏi trắc nghiệm. 55
Hình 3 32 Màn hình tổng kết điểm. 55
Hình 3 33Sơ đồ các màn hình của ứng dụng trắc nghiệm. 55
Trang 8Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhIII SVTH: Nam, Thuy, Trang, Trung
Hình 3 34Màn hình “Bắt đầu” thi trắc nghiệm 57
Hình 3 35Màn hình hiển thị câu hỏi đầu tiên 58
Hình 3 36Màn hình câu hỏi trắc nghiệm tiếp theo. 58
Hình 3 37Màn hình hiển thị câu hỏi cuối cùng. 58
Hình 3 38Màn hình kết quả thi trắc nghiệm. 59
Hình 3 39Kiến trúc cơ bản của ICEFaces-enabled 64
Hình 3 40Kiến trúc ICEFaces 65
Hình 3 41Mô hình Direct-to-DOM 65
Hình 3 42Direct-to-DOM Rendering Via Ajax Bridge 66
Hình 3 43Synchronous and Asynchronous Updates 66
Hình 3 44Server-initiated Rendering (Ajax Push) 66
Hình 3 45Partial Submit – Intelligent Form Processing 67
Hình 3 46Giao diện Project ICEFaces mới tạo. 73
Hình 3 47 Deploy ICEFaces portlet bằng ant 76
Hình 3 48: Thông báo deploy portlet thành công 76
Hình 3 49: Kết quả tạo portlet ICEFaces 76
Hình 3 50CSS trực tiếp cho component 77
Hình 3 51Kết quả khi dùng CSS trực tiếp 77
Hình 3 52File main.css 77
Hình 3 53Khai báo jsf css resource 77
Hình 3 54Kết quả dùng Class CSS JSF 78
Hình 3 55Khai báo CSS qua thẻ link 78
Hình 3 56Khai báo IDCSS 78
Hình 3 57 Áp dụng ID CSS lên component 78
Hình 3 58File css chính của liferay theme 79
Hình 3 59Cấu hình css cho portlet 80
Hình 3 60Màn hình cấu trúc thư mục 83
Hình 3 61Màn hình qui định navigate 84
Hình 3 62Màn hình tạo outcome 84
Hình 3 63Màn hình nhập tên cho outcome 84
Hình 3 64Màn hinh tạo thu muc resource-actions 89
Hình 3 65Màn hình tạo file default.xml 90
Hình 3 66Màn hình tạo file cấu hình phân quyền 90
Hình 3 67Màn hình tạo file portlet.properties 92
Hình 3 68Mô hình xử lý Ajax Push 94
Trang 9Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhIV SVTH: Nam, Thuy, Trang, Trung
Hình 3 69Màn hình JSF Life-cycle 96
Hình 3 70Màn hình ví dụ sử dụng Standar Converter 98
Hình 3 71Màn hình ví dụ sử dụng Standar Converter 98
Hình 3 72 Mô hình kiến trúc RTF Template 102
Hình 3 73 Chức năng các lớp trong Lucene 119
Hình 3 74 Mô tả giao diện 121
Hình 3 75Tìm kiếm tất cả trong Lucene 121
Hình 3 76Tìm kiếm bất kỳ trong Lucene 121
Hình 3 77Sử dụng Liferay Service Builder tạo file service.xml 121
Hình 3 78 Menu quản trị Liferay 131
Hình 3 79 Đánh lại chỉ mục trong Lucene 132
Hình 3 80 Xoá bộ nhớ đệm 132
Hình 4 1Mô hình use case user 136
Hình 4 2Mô hình use case admin 137
Hình 4 3 Mô hình use case chuyên viên thụ lý 137
Hình 4 4Lược đồ activity của cập nhật đăng ký sử dụng lao động 140
Hình 4 5Lược đồ activity của tra cứu đăng ký sử dụng lao động 142
Hình 4 6Lược đồ activity của in đăng ký sử dụng lao động 143
Hình 4 7Lược đồ activity của in danh sách đăng ký sử dụng lao động 143
Hình 4 8Lược đồ activity của xem danh sách đăng ký sử dụng lao động 144
Hình 4 9Lược đồ activity của cập nhật tăng giảm lao động 147
Hình 4 10Lược đồ activity của tra cứu tăng giảm lao động 148
Hình 4 11Lược đồ activity của in tăng giảm lao động 149
Hình 4 12Lược đồ activity của in danh sách tăng giảm lao động 150
Hình 4 13Lược đồ activity của xem danh sách tăng giảm lao động 151
Hình 4 14Lược đồ activity của cập nhật nội quy lao động 152
Hình 4 15Lược đồ activity của tra cứu nội quy lao động 154
Hình 4 16Lược đồ activity của in nội quy lao động 155
Hình 4 17Lược đồ activity của in danh sách nội quy lao động 155
Hình 4 18Lược đồ activity của xem chi tiếtnội quy lao động 156
Hình 4 19Lược đồ activity cập nhật thẩm định đề xuất 158
Hình 4 20Lược đồ activity tra cứu thẩm định đề xuất 159
Hình 4 21Lược đồ activity in thẩm định đề xuất 160
Hình 4 22Lược đồ activity in danh sách thẩm định đề xuất 160
Hình 4 23Lược đồ activity chi thiết thẩm định đề xuất 161
Trang 10Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhV SVTH: Nam, Thuy, Trang, Trung
Hình 4 24 Lược đồ activity của cập nhật thang lương bảng lương 163
Hình 4 25Lược đồ activity của tra cứu thang lương bảng lương 165
Hình 4 26Lược đồ activity của in thang lương bảng lương 166
Hình 4 27Lược đồ activity của in danh sách thang lương bảng lương 166
Hình 4 28Lược đồ activity của xem danh sách thang lương bảng lương 167
Hình 4 29Lược đồ activity của cập nhật thỏa ước lao động 169
Hình 4 30Lược đồ activity của tra cứu thỏa ước lao động 170
Hình 4 31Lược đồ activity của in thỏa ước lao động 171
Hình 4 32Lược đồ activity của in danh sách thỏa ước lao động 172
Hình 4 33Lược đồ activity của xem chi tiết thỏa ước lao động 172
Hình 4 34Mô hình cơ sở dữ liệu 173
Hình 4 35Tìm chính xác từ khóa 174
Hình 4 36Tìm tiếng Vệt không dấu 174
Hình 5 1 Tìm kiếm quốc gia cơ bản 181
Hình 5 2Tìm kiếm quốc gia nâng cao 181
Hình 5 3Thêm mới quốc gia 181
Hình 5 4 Xoá, chỉnh sửa quốc gia 182
Hình 5 5 Tìm kiếm dân tộc cơ bản 182
Hình 5 6 Tìm kiếm dân tộc nâng cao 182
Hình 5 7 Thêm mới dân tộc 182
Hình 5 8 Xoá chỉnh sửa dân tộc 182
Hình 5 9 Tìm kiếm thành phố cơ bản 183
Hình 5 10 Tìm kiếm thành phố nâng cao 183
Hình 5 11 Thêm mới thành phố 183
Hình 5 12 Xoá, chỉnh sửa thành phố 183
Hình 5 13 Tìm kiếm quận huyện cơ bản 184
Hình 5 14 Tìm kiếm quận huyện nâng cao 184
Hình 5 15 Thêm mới quận huyện 184
Hình 5 16 Xoá chỉnh sửa quận huyện 184
Hình 5 17 Tìm kiếm phường xã cơ bản 185
Hình 5 18 Tìm kiếm phường xã nâng cao 185
Hình 5 19 Thêm mới phường xã 185
Hình 5 20 Xoá chỉnh sửa phường xã 185
Hình 5 21 Tìm kiếm đường cơ bản 186
Hình 5 22 Tìm kiếm đường nâng cao 186
Trang 11Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhVI SVTH: Nam, Thuy, Trang, Trung
Hình 5 23 Thêm mới đường 186
Hình 5 24 Xoá chỉnh sửa đường 186
Hình 5 25 Tìm kiếm ngày lễ cơ bản 187
Hình 5 26 Tìm kiếm ngày lễ nâng cao 187
Hình 5 27 Thêm mới ngày lễ 187
Hình 5 28 Xoá chỉnh sửa ngày lễ 187
Hình 5 29 Tìm kiếm nghề nghiệp cơ bản 187
Hình 5 30 Tìm kiếm nghề nghiệp nâng cao 188
Hình 5 31 Thêm mới nghề nghiệp 188
Hình 5 32 Xoá chỉnh sửa nghề nghiệp 188
Hình 5 33 Tìm kiếm mẫu mã phát sinh cơ bản 188
Hình 5 34 Tìm kiếm mẫu mã phát sinh nâng cao 188
Hình 5 35 Thêm mới mẫu mã phát sinh 189
Hình 5 36 Xoá chỉnh sửa mẫu mã phát sinh 189
Hình 5 37 Tìm kiếm class phát sinh mã cơ bản 189
Hình 5 38 Tìm kiếm class phát sinh mã nâng cao 189
Hình 5 39 Thêm mới class phát sinh mã 189
Hình 5 40 Xoá chỉnh sửa class phát sinh mã 189
Hình 5 41Màn hình thêm mới hồ sơ sử dụng lao động 190
Hình 5 42Màn hình chỉnh sửa nội dung hồ sơ sử dụng lao động 190
Hình 5 43 Màn hình xem chi tiết hồ sơ đăng ký sử dụng lao động 191
Hình 5 44Màn hình tra cứu cơ bản hồ sơ đăng ký sử dụng lao động 191
Hình 5 45Màn hình tra cứu nâng cao hồ sơ đăng ký sử dụng lao động 191
Hình 5 46Màn hình thêm mới hồ sơ tăng giảm lao động 192
Hình 5 47Màn hình chỉnh sửa hồ sơ tăng giảm lao động 192
Hình 5 48 Màn hình xem chi tiết hồ sơ đăng ký tăng giảm lao động 193
Hình 5 49Màn hình tra cứu cơ bản hồ sơ tăng giảm lao động 193
Hình 5 50Màn hình tra cứu nâng cao hồ sơ tăng giảm lao động 193
Hình 5 51Màn hình thêm mới nội quy lao động 194
Hình 5 52Màn hình chỉnh sửa nội quy lao động 194
Hình 5 53 Màn hình xem chi tiết nội quy lao động 194
Hình 5 54Màn hình tra cứu cơ bản hồ sơ nội quy lao động 195
Hình 5 55Màn hình tra cứu nâng cao hồ sơ nội quy lao động 195
Hình 5 56Màn hình thêm mới thang lương bảng lương 195
Hình 5 57Màn hình chỉnh sửa thang lương bảng lương 196
Trang 12Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhVII SVTH: Nam, Thuy, Trang, Trung
Hình 5 58 Màn hình xem chi tiết thang lương bảng lương 196
Hình 5 59Màn hình tra cứu cơ bản thang lương bảng lương 196
Hình 5 60Màn hình tra cứu nâng cao thang lương bảng lương 197
Hình 5 61Màn hình thêm mới hồ sơ thỏa ước lao động 197
Hình 5 62 Màn hình xem chi tiết thoả ước lao động 197
Hình 5 63Màn hình tra cứu cơ bản hồ sơ thỏa ước lao động 198
Hình 5 64Màn hình tra cứu nâng cao hồ sơ thỏa ước lao động 198
Hình 5 65Màn hình thêm mới thẩm định đề xuất 198
Hình 5 66Màn hình chỉnh sửa thẩm định đề xuất 199
Hình 5 67 Màn hình xem chi tiết thẩm định đề xuất 199
Hình 5 68Màn hình tra cứu cơ bản hồ sơ thẩm định đề xuất 199
Hình 5 69Màn hình tra cứu nâng cao hồ sơ thẩm định đề xuất 200
Hình 1 Chạy file cài đặt SDK 1 1
Hình 2 Chạy file cài đặt SDK 2 1
Hình 3 Cấu hình biến môi trường Java 1 2
Hình 4 Cấu hình biến môi trường Java 2 2
Hình 5 Cấu hình biến môi trường Java 3 2
Hình 6 Cấu hình biến môi trường Java 4 2
Hình 7 Cấu hình biến môi trường Java 5 3
Hình 8 Cấu hình biến môi trường Java 6 3
Hình 9 Cấu hình biến môi trường Java 7 3
Hình 10 Cấu hình biến môi trường Ant 1 4
Hình 11 Cấu hình biến môi trường Ant 2 4
Hình 12 Cấu hình biến môi trường Ant 3 4
Hình 13 Cấu hình biến môi trường Ant 4 4
Hình 14 Cấu hình biến môi trường Ant 5 5
Hình 15 Cấu hình biến môi trường Ant 6 5
Hình 16 Cấu hình biến môi trường Ant 7 5
Hình 17 Eclipse flash screen 6
Hình 18 Install new eclipse plugin 6
Hình 19 Add new eclipse plugin site 6
Hình 20 Install Liferay plugin SDK 7
Hình 21 Liferay SDK configuration 1 7
Hình 22 Liferay SDK configuration 2 7
Hình 23 Liferay SDK configuration 3 8
Trang 13Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhVIII SVTH: Nam, Thuy, Trang, Trung
Hình 24 Configure Liferay Server 1 8
Hình 25 Configure Liferay Server 2 8
Hình 26 Configure Liferay Server 3 9
Hình 27 Chọn chức năng cấu hình biến môi trường 9
Hình 28 Cấu hình biến môi trường 9
Hình 29 Cấu hình server 10
Hình 30 Màn hình đăng nhập của Liferay 11
Hình 31 Giao diện chính của liferay 11
Hình 32 Màn hình tạo Liferay Project mới 14
Hình 33 Màn hình nhập thông tin cho Liferay project 15
Hình 34 Màn hình chọn loại Liferay Project 15
Hình 3 81Download plugin ICEFaces cho Eclipse 16
Hình 3 82Tạo thêm plugin ICEFaces vào Eclipse 16
Hình 3 83Chấp nhận cài đặt Plugin 17
Hình 3 84Tạo project ICEFaces 17
Hình 3 85Chọn cấu hình ICEFaces 18
Hình 3 86Download thư viện ICEFaces 18
Hình 3 87Chọn loại thư viện để download. 19
Hình 3 88Chọn thư viện cho project 19
Hình 3 89Cấu hình ICEFaces 19
Hình 3 90Cấu trúc project ICEFaces 20
Hình 3 91Giao diện Project ICEFaces mới tạo. 20
Trang 14Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhIX SVTH: Nam, Thuy, Trang, Trung
TÓM TẮT
TÊN ĐỀ TÀI
NỘI DUNG NGHIÊN CỨU
Đề tài tập trung nghiên cứu các công nghệ Liferay Portal, JSF 2.x (JavaServer Faces 2.x), ICEFaces, Lucene, RTF template, PostgreSQL Dựa trên nền tảng các công nghệ đã tìm hiểu xây dựng module quản lý hồ sơ lao động trong hệ thống quản
lý hồ sơ hành chính một cửa cho chính phủ điện tử trên nền Liferay Portal
HƯỚNG TIẾP CẬN VÀ GIẢI QUYẾT VẤN ĐỀ
Phân tích yêu cầu, quy trình giải quyết hồ sơ một cửa cho chính phủ điện tử,
từ đó xây dựng các mô hình giải pháp “Module quản lý hồ sơ lao động trong
hệ thống quản lý hồ sơ hành chính một cửa cho chính phủ điện tử”
Lựa chọn các công nghệ sẽ sử dụng cho từng mục đích
Dựa vào phân tích đánh giá điểm mạnh và yếu sẽ quyết định sử dụng công nghệ nào
Triển khai cài đặt mô hình chính phủ điện tử với các công nghệ đã chọn lọc
Kết hợp vớiCông ty cổ phần phần mềm Sài Gòn mới và các sở ban ngành trong thành phố để triển khai mô hình
MỘT SỐ KẾT QUẢ ĐẠT ĐƯỢC
VỀ PHẦN CƠ SỞ LÝ THUYẾT
Đã tìm hiểu và nắm bắt được các vấn đề sau:
Công nghệ Liferay Portal
Nắm khái quát được các vấn đề liên quan đến chính phủ điện tử
Tham gia trực tiếp vào quá trình xây dựng và triển khai phần mềm “Hồ Sơ Hành Chính” một cửa cho chính phủ điện tử của Công ty Cổ phần phần mềm Sài Gòn mới
Nắm vững quy trình giải quyết hồ sơ một cửa của chính phủ điện tử
Áp dụng các công nghệ đã tìm hiểu xây dựng “Module quản lý hồ sơ lao động một cửa cho chính phủ điện tử”
Triển khai hoàn chỉnh hệ thống mô phỏng cho mô hình Chính Phủ Điện Tử với bài toánquản lý hồ sơ lao động một cửa trên nền Liferay Portal
Trang 15Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhX SVTH: Nam, Thuy, Trang, Trung
MỤC LỤC
LỜI CẢM ƠN V
DANH SÁCH CHỮ VIẾT TẮT I
DANH MỤC CÁC HÌNH II
TÓM TẮT IX
MỤC LỤC X
Chương 1 MỞ ĐẦU 1
1.1 LÝ DO CHỌN ĐỀ TÀI 1
1.2 MỤC TIÊU ĐỀ TÀI 1
1.3 PHẠM VI NGHIÊN CỨU 1
1.3.1 VỀ THỜI GIAN 1
1.3.2 VỀ KHÔNG GIAN 2
1.3.3 VỀ NỘI DUNG 2
Chương 2 TỔNG QUAN 3
2.1 ĐẶT VẤN ĐỀ 3
2.2 SƠ LƯỢC VỀ CHÍNH PHỦ ĐIỆN TỬ 3
2.3 TÌNH HÌNH ỨNG DỤNG CPĐT TRONG NƯỚC TA 4
2.4 KẾT LUẬN 5
Chương 3 NỘI DUNG NGHIÊN CỨU 6
3.1 PORTAL 6
3.1.1 KHÁI NIỆM PORTAL 6
3.1.2 SỰ KHÁC NHAU CƠ BẢN GIỮA PORTAL VÀ WEBSITE 6
3.1.3 KHÁI NIỆM PORTLET 6
3.1.4 SO SÁNH GIỮA PORTLET VÀ SERVLET 7
3.1.5 PORTLET CONTAINER 7
3.1.6 PORTLET INTERFACE 8
3.1.7 VÒNG ĐỜI CỦA PORTLET 8
3.2 LIFERAY 8
3.2.1 TỔNG QUAN LIFERAY 8
3.2.2 JSR168 VÀ JSR286 9
3.2.3 JSR314 15
3.2.4 JSR301 VÀ JSR329 25
3.2.5 CÀI ĐẶT LIFERAY 30
3.2.6 CẤU HÌNH LIFERAY 33
Trang 16Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhXI SVTH: Nam, Thuy, Trang, Trung
3.3 JSF 2.0 38
3.3.1. KHÁI NIỆM 38
3.3.2. ĐẶC ĐIỂM 39
3.3.3. CÁC THÀNH PHẦN CHÍNH 40
3.3.4. VÒNG ĐỜI XỬ LÝ REQUEST 41
3.3.5. PHẠM VI CỦA BEAN 45
3.3.6. JSF Scope 46
3.3.7. MÔ HÌNH MVC JSF 53
3.3.8. VÍ DỤ 55
3.4 ICEFACES 63
3.4.1 GIỚI THIỆU ICEFACES 63
3.4.2 ƯU ĐIỂM CỦA ICEFACES 63
3.4.3 KIẾN TRÚC ICEFACES 64
3.4.4 MỘT SỐ KHÁI NIỆM 65
3.4.5 MỘT SỐ THẺ CƠ BẢN CỦA ICEFACES 67
3.4.6 CÀI ĐẶT PLUGIN ICEFACES VÀO ECLIPSE 72
3.4.7 TẠO PROJECT ICEFACES 72
3.4.8 TẠO ICEFACESPORTLET 73
3.5 HƯỚNG DẪN CHUNG VỀ CÁC CÔNG NGHỆ 76
3.5.1 CSS 76
3.5.2 ICEFACES NAVIGATION 83
3.5.3 NAVIGATE TRONG PORTLET 85
3.5.4 XỬ LÝ SỰ KIỆN 86
3.5.5 RESOURCE ACTION 89
3.5.6 AJAX PUSH 94
3.5.7 CONVERTER VÀ VALIDATOR 96
3.6 RTF TEMPLATE 102
3.6.1 KIẾN TRÚC 102
3.6.2 HƯỚNG DẪN SỬ DỤNG 103
3.7 LUCENE 119
3.7.1 CHỨC NĂNG CÁC LỚP CỦA THƯ VIỆN LUCENE 119
3.7.2 CÁC ĐỐI TƯỢNG TRONG LUCENE 120
3.7.3 SỬ DỤNG TÌM KIẾM LUCENE TRONG LIFERAY 120
3.7.4 LƯU Ý KHI TÌM KIẾM LUCENE TRONG LIFERAY 132
Chương 4ỨNG DỤNG ICEFACES XÂY DỰNG CHÍNH PHỦ ĐIỆN TỬ 133
Trang 17Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn TínhXII SVTH: Nam, Thuy, Trang, Trung
4.1 MÔ TẢ BÀI TOÁN 133
4.1.1 BÀI TOÁN 133
4.1.2 QUY TRÌNH ĐĂNG KÝ HỒ SƠ LAO ĐỘNG 133
4.2 PHÂN TÍCH BÀI TOÁN 135
4.2.1. MÔ HÌNH USECASE 135
4.2.2. PHÂN TÍCH CƠ SỞ DỮ LIỆU 173
4.3 NHỮNG VẤN ĐỀ GẶP PHẢI VÀ GIẢI PHÁP 173
4.3.1. TÌM CHỮ IN HOA BẰNG LUCENE TRONG LIFERAY 173
4.3.2. BỎ DẤU TIẾNG VIỆT KHI TÌM KIẾM BẰNG LUCENE 174
4.3.3. CLEAR FORM 176
4.3.4. PHÂN BIỆT GIỮA SINGLE SUBMIT VÀ PARTIAL SUBMIT 178
Chương 5KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN 180
5.1 KẾT QUẢ ĐẠT ĐƯỢC 180
5.1.1. KIẾN THỨC 180
5.1.2. SẢN PHẨM 180
5.2 HƯỚNG PHÁT TRIỂN 200
Chương 6TÀI LIỆU THAM KHẢO 201
6.1 SÁCH THAM KHẢO 201
6.2 TRANG WEB THAM KHẢO 201
Trang 18Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính1 SVTH: Nam, Thuy, Trang, Trung
Chương 1 MỞ ĐẦU
1.1 LÝ DO CHỌN ĐỀ TÀI
Trong thời đại đổi mới ngày nay sự phát triển về kinh tế và xã hội ngày càng tăng cao, đòi hỏi hệ thống pháp luật cũng phải được Nhà Nước quan tâm phát triển và áp dụng chặt chẽ hơn, yêu cầu mọi văn bản giấy tờ phải hợp thức hóa pháp luật Vì vậy nhu cầu xử lý thủ tục hành chính trong bộ máy Nhà Nước là rất lớn Tuy nhiên quy trình xử lý hành chính còn nhiều hạn chế làm mất nhiều thời gian, không đáp ứng được nhu cầu, lợi ích của nhân dân, gây trì trệ nền kinh tế và
xã hội dẫn tới khoảng cách của nhân dân và chính phủ ngày càng xa, gây mất lòng tin của nhân dân Bộ máy chính quyền tại các tỉnh, thành phố và các quận huyện hiện nay đã được trang bị tin học tương đối hoàn chỉnh, trình độ tin học của nhân dân cũng nâng cao, đã tạo điều kiện thuận lợi áp dụng công nghệ thông tin – truyền thông vào quá trình xử lý hành chính của bộ máy nhà nước để các cơ quan chính phủ đổi mới, làm việc hiệu lực, hiệu quả và minh bạch hơn, cung cấp thông tin, phục vụ tốt hơn cho người dân, doanh nghiệp và các tổ chức, đồng thời tạo điều kiện thuận lợi hơn cho người dân thực hiện quyền dân chủ của mình trong việc tham gia quản lý nhà nước Điều này trở thành động lực để ngành công nghệ thông tin áp dụng, phát triển các công nghệ mới của thế giới sao cho phù hợp, xây dựng các phần mềm hỗ trợ quá trình xử lý thủ tục hành chính của Nhà Nước được nhanh chóng, thuận tiện và rõ ràng hơn Hiện nay có rất nhiều tổ chức đã xây dựng và triển khai phần mềm hỗ trợ chính phủ trong quá trình xử lý hồ sơ trên các nền tảng công nghệ như: JSP servlet, Portal, JSF, ICEFaces,…
1.2 MỤC TIÊU ĐỀ TÀI
Nghiên cứu các công nghệ Liferay Portal, JSF, ICEFaces, Lucene… Kết hợp với Công ty cổ phần phần mềm Sài Gòn Mới xây dựng module quản lý hồ sơ lao động của hệ thống quản lý hồ sơ hành chính một cửa cho Chính Phủ Điện Tử triển khai đến các cơ sở ban ngành trực thuộc TP HCM
Các chức năng xây dựng trong module quản lý hồ sơ lao động bao gồm:
Quản lý đăng ký sử dụng lao động
Quản lý tăng giảm lao động
Quản lý đăng ký nội quy lao động
Quản lý thẩm định đề xuất
Quản lý thang lương, bảng lương
Quản lý thỏa ước lao động
1.3 PHẠM VI NGHIÊN CỨU
1.3.1 VỀ THỜI GIAN
Đề tài được thực hiện trong khoảng thời gian từ 01/04/2011 đến 15/08/2011 Trong thời gian làm luận văn luôn phân tích và triển khai khi có thay đổi về yêu cầu
Trang 19Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính2 SVTH: Nam, Thuy, Trang, Trung
1.3.2 VỀ KHÔNG GIAN
Đề tài được thực hiện tại Công ty cổ phần phần mềm Sài Gòn Mới dưới
sự hướng dẫn của TS Phạm Văn Tính, khoa Công nghệ Thông tin, Đại học Nông Lâm TP Hồ Chí Minh
1.3.3 VỀ NỘI DUNG
Đề tài tập trung nghiên cứu về công nghệ Liferay Portal và ICEFaces, và một số công nghệ khác như Lucene, RTF Template… Để xây dựng module quản lý hồ sơ lao động của hệ thống quản lý hồ sơ hành chính một cửa cho Chính Phủ Điện Tử
Trang 20Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính3 SVTH: Nam, Thuy, Trang, Trung
Chương 2 TỔNG QUAN
2.1 ĐẶT VẤN ĐỀ
Ngày nay, việc xây dựng hệ thống Chính Phủ Điện Tử là một trong những mục tiêu quan trọng trong công cuộc cải cách thủ tục hành chính, nhằm nâng cao hiệu quả hoạt động của Chính phủ, giúp người dân và doanh nghiệp làm việc với các cơ quan, Chính phủ nhanh chóng thuận tiện, tiết kiệm và hiệu quả hơn Tuy nhiên, đó cũng là một thách thức to lớn để có thể thiết lập hệ thống thông tin thống nhất, có tính liên kết cao, mang tính dùng chung trong bộ máy Nhà Nước
Hệ thống Chính Phủ Điện Tử đòi hỏi phải đáp ứng rất nhiều yêu cầu khác như quản lý tập trung các dịch vụ chính phủ điện tử, điều khiển các quy trình nghiệp
vụ, hỗ trợ hàng đợi, cung cấp đa giao thức kết nối, xây dựng hệ thống cổng thông tin điện tử, bảo mật, …
2.2 SƠ LƯỢC VỀ CHÍNH PHỦ ĐIỆN TỬ
Khái niệm CPĐT:
Chính Phủ Điện Tử (e-Government) là tên gọi của một chính phủ mà mọi hoạt động của nhà nước được "điện tử hóa", "mạng hóa" Tuy nhiên, chính phủ điện tử không đơn thuần là máy tính, mạng Internet; mà là sự đổi mới toàn diện các quan
hệ (đặc biệt là quan hệ giữa chính quyền và công dân), các nguồn lực, các quy trình, phương thức hoạt động và bản thân nội dung các hoạt động của chính quyền trung ương và địa phương, và ngay cả các quan niệm về các hoạt động đó
CPĐT là ứng dụng công nghệ thông tin và truyền thông (ICT) để các cơ quan của chính quyền từ trung ương và địa phương đổi mới, làm việc có hiệu lực, hiệu quả và minh bạch hơn Cung cấp thông tin, dịch vụ tốt hơn cho người dân, doanh nghiệp và các tổ chức, tạo điều kiện thuận lợi hơn cho người dân thực hiện quyền dân chủ và tham gia quản lý Nhà nước
Chức năng CPĐT
Mặc dù còn có những quan niệm khác nhau, song có thể hiểu một cách đơn giản: CPĐT là chính phủ hoạt động hiệu lực, hiệu quả hơn, cung cấp dịch vụ tốt hơn trên cơ sở ứng dụng công nghệ thông tin – truyền thông
CPĐT với các đặc trưng
Thứ nhất, CPĐT đã đưa chính phủ tới gần dân và đưa dân tới gần chính phủ
Thứ hai, CPĐT làm minh bạch hóa hoạt động của chính phủ, chống tham nhũng, quan liêu, độc quyền
Thứ ba, CPĐT giúp chính phủ hoạt động có hiệu quả trong quản lý và phục vụ dân (cải cách hành chính và nâng cao chất lượng dịch vụ công)
Mục tiêu CPĐT
Tạo môi trường kinh doanh tốt hơn
Khách hàng trực tuyến, không phải xếp hàng
Tăng cường sự điều hành có hiệu quả của chính phủ và sự tham gia rộng rãi của người dân
Nâng cao năng suất và tính hiệu quả của các cơ quan chính phủ
Trang 21Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính4 SVTH: Nam, Thuy, Trang, Trung
Nâng cao chất lượng cuộc sống cho các cộng đồng vùng sâu vùng xa
Lợi ích CPĐT
Lợi ích của CPĐT là đáp ứng mọi nhu cầu của công dân bằng việc nâng cao chất lượng hoạt động của bộ máy chính quyền từ trung ương tới cơ sở như quản lý nhân sự, quy trình tác nghiệp, v.v CPĐT đem lại kết quả những thuận tiện, như cung cấp dịch vụ một cách hiệu quả và kịp thời cho người dân, doanh nghiệp, các
cơ quan và nhân viên chính phủ Đối với người dân và doanh nghiệp, CPĐT là sự đơn giản hóa các thủ tục và tăng tính hiệu quả của quá trình xử lý công việc Đối với chính phủ, CPĐT hỗ trợ quan hệ giữa các cơ quan của chính quyền nhằm đảm bảo đưa ra các quyết định một cách chính xác và kịp thời
Các dạng giao dịch của CPĐT
Có bốn dạng giao dịch CPĐT:
Chính phủ với Công dân (G2C)
Chính phủ với Doanh nghiệp (G2B)
Chính phủ với người lao động (G2E)
Chính phủ với Chính phủ (G2G)
2.3 TÌNH HÌNH ỨNG DỤNG CPĐT TRONG NƯỚC TA
Tuy còn những hạn chế nhất định, sau bốn năm thực hiện, cùng với sự cố gắng của các bộ, ngành, UBND các tỉnh, thành phố trong việc ưu tiên ứng dụng CNTT trong quản lý Nhà Nướcđã đạt được những kết quả đáng ghi nhận Tạo ra một phương thức làm việc mới có sử dụng công nghệ thông tin trong các cơ quan hành chính Nhà Nước, nâng cao hiệu quả làm việc của cán bộ công chức Nhà Nước Nhiều cơ quan Nhà Nước đã chuyển từ điều hành thủ công truyền thống sang điều hành qua mạng máy tính Lần đầu tiên thiết lập được hệ thống thông tin điện tử trong cả nước, hình thành hệ thống thông tin điện tử của Chính phủ, bao gồm trung tâm tích hợp dữ liệu của các bộ, các tỉnh, mạng cục bộ (LAN) của mỗi cơ quan thuộc cơ cấu bên trong của bộ, tỉnh, mạng diện rộng liên kết các hệ thống tin học của bộ, tỉnh Trong đó điểm hội tụ của toàn hệ thống thông tin điện tử của chính phủ là cổng thông tin điện tử Chính phủ được khai trương và đưa vào vận hành ngày 9-9-2005
Hệ thống thông tin điện tử của các bộ, tỉnh đã vận hành các phần mềm ứng dụng tin học hóa quản lý hành chính nhà nước và cung cấp thông tin phục vụ lãnh đạo của bộ, tỉnh và Thủ tướng Chính phủ Hơn 25 nghìn văn bản quy phạm pháp luật được cập nhật và công bố trên Cổng thông tin điện tử Chính phủ Hơn 300 hệ thống thông tin điện tử được cài đặt tại các bộ, tỉnh, trong đó 35% hệ thống thông tin đã được vận hành trong bộ máy hành chính Hơn 60% số cán bộ công chức biết
sử dụng thư điện tử hành chính (dạng gov.vn) và khai thác mạng internet
Về cơ bản, các hệ thống thông tin đã bắt đầu cung cấp thông tin phục vụ trực tiếp cho công tác chỉ đạo điều hành của các cơ quan cấp bộ, tỉnh Những kết quả của Ðề án 112 kết hợp những kết quả đạt được của Ðề án 169 là những yếu tố cơ bản để triển khai giai đoạn II tin học hóa quản lý hành chính Nhà nước và góp phần quan trọng trong việc hiện đại hóa nền hành chính điện tử của nước ta
Trang 22Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính5 SVTH: Nam, Thuy, Trang, Trung
2.4 KẾT LUẬN
Trước các nhận định đánh giá về tình hình chính phủ như trên, nhóm thực hiện luận văn đã kết hợp với Công ty cổ phần mềm Sài Gòn mới đi sâu tìm hiểu thực tế quy trình xử lý hồ sơ hành chính một cửa cho CPĐT nói chung và cụ thể là quy trình xử lý hồ sơ lao động Tiến hành triển khai module quản lý hồ sơ lao động của
hệ thống quản lý hồ sơ hành chính một cửa cho CPĐT trên nền Liferay Portal
Trang 23Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính6 SVTH: Nam, Thuy, Trang, Trung
Chương 3 NỘI DUNG NGHIÊN CỨU
3.1 PORTAL
3.1.1 KHÁI NIỆM PORTAL
Portal là một hệ thống hoạt động trên Web, định danh và xác thực người dùng đăng nhập, từ đó sẽ cung cấp một giao diện web để người dùng dễ dàng truy cập, khai thác thông tin và dịch vụ cũng như thao tác, tùy biến các công việc của mình một cách nhanh chóng và đơn giản
Theo Portlet Specification thì: “một portal là một ứng dụng web chung cung cấp sự cá nhân hóa, đăng nhập một lần, tích hợp nội dung từ nhiều nguồn và sau đó tổ chức, trình bày trong một hệ thống thông tin Sự tập hợp là hành động tích hợp nội dung từ nhiều nguồn khác nhau trong một trang web.”
3.1.2 SỰ KHÁC NHAU CƠ BẢN GIỮA PORTAL VÀ WEBSITE
Xây dựng hệ thống Portal thay vì Website bởi vì hệ thống Portal cần xây dựng có những ưu điểm so với Website có cùng chức năng như sau:
Hệ thống Portal tạo ra các Website, các Website này có thể tùy biến trực quan (cả về giao diện và dữ liệu), giúp cho người phát triển Website, người quản trị website và người dùng Website có thể xây dựng, quản lý và sử dụng chúng một cách dễ dàng, thuận tiện
Các module trong Portal có tính độc lập cao, hoạt động không ảnh hưởng tới các module khác
Người dùng Portal có khả năng truy cập thông tin có được từ nhiều nguồn
dữ liệu khác nhau
3.1.3 KHÁI NIỆM PORTLET
Portlet là các thành phần web dùng lại được với mục đích hiển thị thông tin liên quan cho người dùng cổng điện tử.Các ứng dụng cho portlet bao gồm việc hiển thị thư điện tử,các báo cáo thời tiết,các diễn đàn thảo luận
Các chuẩn Portlet nhằm cho nhà phát triển phần mềm tạo ra portlets mà có thể cắm vào bất cứ cổng điện tử nào có hỗ trợ các chuẩn đó, dùng để biểu diễn (present) dữ liệu và chức năng của nhiều trình ứng dụng trên một trang web Các Portlet bao gồm lớp trình bày (presentation layer) và cũng liên kết với các nguồn dữ liệu back-end Mỗi nhà sản xuất lại có một cách gọi Portlet khác nhau (Portlet, gadgets, blocks,web modules, web parts) Nhiều nhà sản xuất đã có các Portlet dùng để kết nối với các hệ thống của công ty (ví dụ SAP, Siebel,…) cũng như dùng cho việc cộng tác (collaboration) và các chức năng khác
Tương tự như servlet,portlet là một web component được dùng để triển khai vào trong một portlet container, tạo ra nội dung động Về mặt công nghệ, portlet là một class viết theo chuẩn giao diện javax.portlet.Portlet interface
và được đóng gói, triển khai trong một file war và trong một portlet container
Trang 24Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính7 SVTH: Nam, Thuy, Trang, Trung
3.1.4 SO SÁNH GIỮA PORTLET VÀ SERVLET
Portlet có những điểm giống servlet:
Được quản lí bởi một container chuyên dụng
Khả năng xử lý request và sinh ra nội dung động
Vòng đời được quản lí bởi container
Làm việc với client thông qua mô hình request/response
Portlet có những điểm khác servlet:
Portlet chỉ tạo ra những mảnh nội dung chứ không tạo ra một trang web hoàn chỉnh
Portlet không có URL trực tiếp
Portlet không bị bó buộc vào nội dung tạo ra Nội dung tạo ra có thể là html/text hoặc WML
Portlet có thể tồn tại nhiều lần trong một portal
3.1.5 PORTLET CONTAINER
Portlet container chạy các Portlet và cung cấp cho chúng môi trường thực thi
cần thiết Portlet container bao gồm các Portlet và quản lý chu trình sống của chúng Portlet container nhận các yêu cầu từ Portal và thực thi các yêu cầu trên những Portlet được chứa bởi nó Portlet container không chịu trách nhiệm kết hợp nội dung sản sinh bởi các Portlet Trách nhiệm đó thuộc về Portal Hình 2.5 dưới đây thể hiện kiến trúc Portal điểm hình
Hình 3 1Portlet container thi hành Cách làm việc của Portlet container:
Một người dùng thông qua ứng dụng client (ví dụ trình duyệt web) sau khi
đã được chứng thực, đưa ra 1 yêu cầu HTTP đến cổng điện tử Ứng dụng Portal nhận các yêu cầu của client
Ứng dụng Portal khi đó phát ra lời gọi tới Portlet container cho tất cả các Portlet trên trang hiện tại
Portlet container nắm giữ các preference của người dùng (user’s preferences) khi đó gọi các Portlet thông qua porlet API yêu cầu phân mảnh đánh dấu (markup fragment) từ mỗi porlet và trả fragment này cho Portal
Portal kết hợp đầu ra của các Portlet trên một trang trả về cho client/user
Trang 25Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính8 SVTH: Nam, Thuy, Trang, Trung
3.1.6 PORTLET INTERFACE
Portlet Interface là phần chính của Portlet API Tất cả các Portlet phải
implement interface này(Portlet) hoặc là extends lớp đã implement interface Portlet
Thư viện hàm ứng dụng Portlet API có lớp GenericPortlet đã hiện thực lớp giao diệnPortlet và cung cấp các chức năng cơ bản Các lập trình viên có thể extends trực tiếp hoặc gián tiếp lớp GenericPortlet Mỗi một Portlet đều mở rộng từ lớp
thực thi giao diện Portlet Giao diện Portlet gồm các phương thức sau đây:
init(): phương thức dùng để khởi tạo Portlet Phương thức này chỉ được gọi
1 lần sau khi tạo mẫu Portlet Phương thức này dùng để tạo các nguồn tài nguyên, các đối tượng mà Portlet dùng về sau
destroy(): xác định Portlet không cần tiếp tục hoạt động để giải phóng tài nguyên,cập nhật dữ liệu mà Portlet đó sở hữu
processAction(): thông báo cho Portlet rằng người sử dụng đã gây ra một hành động lên Portlet
Render(): tạo ra mã lệnh ngôn ngữ đánh dấu để hiển thị nội dung Portlet
Để bổ sung các phương thức trên, một lớp GenericPorlet được cung cấp cài đặt phương thức render() và ủy thác gọi các phương thức đặc biệt để hiển thị Portlet dựa trên các mode của nó Người phát triển có thể mở rộng lớp GenericPorlet và cài đặt như nhiều phương thức khác như những phương thức render này Đó là các phương thức:
doView(): Được gọi bởi phương thức render() khi Portlet ở chế độ View
doEdit(): Được gọi bởi phương thức render() khi Portlet ở chế độ Edit
doHelp(): Được gọi bởi phương thức render() khi Portlet ở chế độ Help
3.1.7 VÒNG ĐỜI CỦA PORTLET
Một Portlet được quản lý thông qua 1 chu trình sống được định nghĩa chặt chẽ, làm thế nào chúng được tải về (load), trình bày và khởi tạo, làm thế nào chúng nắm giữ các yêu cầu từ phía máy khách, và làm thế nào chấm dứt 1 dịch
vụ Chu trình sống của Portlet được gói gọn lại thông qua các phương thức init(), processAction(), render(), destroy() của interface Portlet
3.2 LIFERAY
3.2.1 TỔNG QUAN LIFERAY
Liferay là Java portlet container đầu tiên, hỗ trợ hai chuẩn portlet là JSR168
và JSR286.Liferay rất linh hoạt, dùng JavaEE 5 servlet và có thể chạy với các servlet container thông dụng như ache Tomcat, GlassFish, JBoss, Jetty,Jonas, WebSphere, WebLogic, và Resin
Liferay có thể kết nối tới hầu hết các hệ quản trị CSDL như IBM DB2, Apache
Derby, Firebird, Hypersonic, HSQLDB, IBM Informix, Ingres, MySQL, Oracle,PostgreSQL, SAP DB, Microsoft SQL Server, và Sybase
Trang 26feray dùng
ĩa là các poner JSR-286MVC, Java
c ứng dụng lại cho họ
mà không cnghĩa các po
ử dụng các hnào có dùn
là hệ thốnggười dùng, đ
Hình 3
ồ sơ hành chí
SVTH: Na
o phép sử ding (AOP)
ng liferay đề
h thích hợpistributed v
ục đích chuđộc lập vàothể di chuy
có bất kỳ thaortlet API đhàm API n
ều có thể th
và local cac Người lập
ác lớp cach
e, có cả spr
ác công nghrãi các framMVCPortle
uẩn hóa các
o các máy chyển các por
ay đổi mã
để tiện cho vnày để tương
m nền Đốiăng hỗ trợ c
et
c thành phầ
hủ cổng thôrtlet liên tụcviệc tùy biế
g tác và đư với các ITcác ứng dụntăng chi ph
uest
tal
on of controSpring Hầ
o portlet nh
ần pluggablông tin Điề
c từ máy ch
ến, phát triểược deploye
Trang 27Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính10 SVTH: Nam, Thuy, Trang, Trung
Lợi ích của JSR 168
Cổng thông tin tích hợp các thành phần dựa trên các tiêu chuẩn mới sẽ cho phép khả năng tương tác độc lập của các nhà cung cấp giải pháp cổng thông tin và cho phép các doanh nghiệp để dễ dàng sử dụng cổng thông tin nền tảng cho việc cung cấp an toàn của các dịch vụ Web cá nhân hoá và nội dung triển khai cổng thông tin tổng hợp giữa nhiều bên trong và bên ngoài
Đối với phát triển:Tiêu chuẩn mới sẽ cho phép các nhà phát triển để tái sử
dụng các phương pháp tích hợp hiện có để bổ sung dữ liệu nhanh hơn, ứng dụng và dịch vụ từ nhiều phía sau nguồn Phát triển và các nhà cung cấp phần mềm độc lập (ISV) sẽ được hưởng lợi từ thời gian phát triển và giảm chi phí
từ đặc điểm kỹ thuật dựa trên Java API và mở rộng khả năng cho cổng thông tin J2EE
Đối với khách hàng:Doanh nghiệp sẽ được hưởng lợi từ hiệu quả cao hơn và
tỷ lệ hoàn vốn từ cá nhân, nội dung tổng hợp có thể được gửi từ các nền tảng cổng thông tin để người dùng cuối cùng từ vô số nguồn tin trước đây khó khăn để tích hợp
Đối với các nhà tích hợp:Dễ dàng tích hợp và tập hợp nội dung cho khách
hàng Portal của họ, tạo điều kiện cho việc cung cấp các dịch vụ web
Mục tiêu của JSR 168
Xác định môi trường thời gian chạy, hoặc container portlet, cho portlet
Xác định các API giữa portlet container và các portlet
Cung cấp cơ chế để lưu trữ dữ liệu tạm thời và liên tục cho các portlet
Cung cấp một cơ chế cho phép các portlet để bao gồm các servlet và JSP (JavaServer Pages)
Xác định một bao bì của các portlet để cho phép triển khai dễ dàng
Cho phép tính di động trong số nhị phân portlet JSR 168 cổng thông tin
Run JSR 168 portlet như các portlet từ xa bằng cách sử dụng các dịch vụ Web cho Portlet từ xa (WSRP) giao thức
Hạn chế của JSR 168 là JSR 168 không hỗ trợ một vài tính năng sau:
Inter-portlet communication
Serving non-html resources (pdf, doc, images etc.)
Contributing javascript or css to <head>, using cookies
Proper support for common web frameworks
Chạy trên nền Java 5 nhưng vẫn liên kết với J2EE 1.4, WSRP 2.0
Portlet coordination: Public render parameters, Chia sẻ trạng thái session trên ứng dụng, Portlet events
Trang 28Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính11 SVTH: Nam, Thuy, Trang, Trung
Portlet coordination được dùng để chia sẽ dữ liệu trong ứng dụng web ở
phạm vi application scope, chia sẻ trạng thái giữa các portlet, đồng thời gửi
và nhận sự kiện từ portlet khác
Hình 3 3Renderer parameter
Tham số renderTham số render được dùng để chia sẻ trạng thái hiển thị
giữa các portlet Việc sử dụng tham số render để tránh trường hợp người dùng cuối thay đổi hoặc chuyển hướng trình duyệt web và đánh dấu trang nếu portal lưu trữ các tham số trong URL
Cho phép cập nhật trạng thái thể hiện trên những ứng dụng portlet khác
Giới hạn giá trị của chuỗi
Định nghĩa trong file portlet.xml
Ví dụ: một portlet Weather muốn hiển thị thời tiết của một thành phố được
chọn Vì vậy sử dụng tham số render để mã hóa tham số zip code Người dùng có thể thêm portlet vào một trang có zip code là một trong những tham
số render đã được khai báo
Share session stateChia sẻ dữ liệu người dùng trong phạm vi session độc lập với trạng thái của những ứng dụng web
Trang 29Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính12 SVTH: Nam, Thuy, Trang, Trung
Dùng portal để quản lý, không dùng portlet container
Định nghĩa trong file portlet.xml
Phải hiện thực Serializable và có giá trị binding đến JAXB 2.0
Interface HttpSessionBindingListener hỗ trợ nhưng:
Sự kiện được gọi lại trong portlet
void processEvent(EventRequest req, EventResponse resp){ Event event = req.getEvent();
if ( event.getName().equals(“foo”) ){
String payload = (String) event.getValue();
}
Trang 30Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính13 SVTH: Nam, Thuy, Trang, Trung
Để gửi một sự kiện đi ta thực hiện việc khai báo:
<event-definition>
<qname xmlns:x=”http:example.com/events”>x:foo.bar</qname>
private String street;
private String city;
public void setStreet(String s) {street = s;}
public String getStreet() { return street;}
public void setCity(String c) { city = c;}
public String getCity() { return city;}
} void processEvent(EventRequest req, EventResponse resp){
Address sampleAddress = new Address();
Những sự kiện động không khai báo thì cũng được cho phép
Portal/portlet container hoạt động như trung gian
Portal hoặc portlet container chỉ có thể phát ra sự kiện
Có thể được tạo ra từ processAction và processEvent
Trạng thái được phép thay đổi trong phương thức proccessEvent()
Resource serving
Một portlet muốn thực hiện resource serving thông qua URL thì cần phải
thực thi interface ResourceServingPortletvới phương thức serveResource
Đối với các cuộc gọi resource serving trong portal thì chỉ nên hành động như một proxy để truy cập tài nguyên và được xem như một phép logic
Trang 31sử dụng dữ
ilter
ter là một pcủa portlet nse hoặc là
y đổi hay thnse
<p
i trạng thái
số vào URL
và responeliệu nhị phâ
phần có thểrequest và một responhích ứng vớ
phép lọc nhược định ng
portlet-nam lifecycle>E /filter-mapp
he mở rộng
hững thôngxml
portlet>
expiration-c expiration-t
ồ sơ hành chí
SVTH: N
urce Reque
quest handlông tạo ra g
L được đặt
e trên heade
ân hoặc chỉ
tái sử dụnportlet resp
ne đến một
ới các requ
hững thôngghĩa trong f
>Event Filte
>com.acme.E ing>
>Event Filte me>SamplePo VENT</lifec ping>
g tin biến đfile portlet.x
er</filter-nam EventFilter<
er</filter-nam ortlet</port cycle>
ã làm, thay vhích ứng vớ
Trang 32Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính15 SVTH: Nam, Thuy, Trang, Trung
<scope>public</scope>
</expiration-cache>
</portlet>
Hỗ trợ validator dựa trên bộ nhớ ETAG
Hỗ trợ các framwork web phổ biến
Hỗ trợ mạnh các framework của web
Cho phép servlet dispatching trong lifecycle:
Sự thay đổi API
Khi viết JSF theo chuẩn JSR 314 được hỗ trợ các thư viện sau:
package javax.faces package javax.faces.application package javax.faces.component package javax.faces.component package javax.faces.component.html package javax.faces.context
package javax.faces.convert package javax.faces.el package javax.faces.lifecycle package javax.faces.event package javax.faces.render package javax.faces.validator package javax.faces.webapp
Vòng đời xử lý của request
Vòng đời xử lý của request theo một web giao diện người dùng thì người dùng gửi một hoặc nhiều request đến server, cuối cùng gửi tất cả mô tả đến giao diện người dùng Yêu cầu ngày nay, một request dưới dạng GET hoặc POST được khởi tạo ban đầu được gửi đến server, một số response mà trình duyệt cần
xử lý và tự động tạo ra request tiếp theo sau đó gửi đến server Những response cho mỗi yêu cầu cần xử lý thường là images, JavaScript files, CSS StyleSheets… Đáp ứng yêu cầu đó, và bất kỳ yêu cầu tiếp theo được xử lý tự động bởi người dùng, và phản ứng của chúng, được gọi là Faces View Request/Response Được thể hiện trong mô hình sau:
Trang 33es Request tquest tạo raquest tạo ra
Request: M
hư một hypnơi mà các
a Faces Res
a Non-FacesMột responong vòng đờ
nse: Một re
esponse tro
ra bằng S
F, hoặc là mredirect)…
Một resquestperlink hoặ
c URI yêu cnó) để xác
s Responsense được tạ
ời xử lý củaesonse khôong vòng đervlet hoặcmột respons
t được gửi đ
ặc renderedcầu đã đượcđịnh hiển
ính trên nền
Nam, Thuy, T
xử lý của r
g đời xử lý
ạo ra bằng c
a request
ng được tạđời xử lý c
i tạo ra Facponent tronbởi các thànười dùng từ
Trang 34Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính17 SVTH: Nam, Thuy, Trang, Trung
Non-Faces Request: Một yêu cầu được gửi đến một component của ứng
dụng (ví dụ như một servlet hoặc trang jsp) chứ không phải là hướng đến
một Faces view
Các đối tượng component model trên giao diện
JSF hỗ trợ các thành phần giao diện người dùng với các hàm API trợ giúp:
Converters: Pluggable hỗ trợ các class để chuyển đổi về đúng các giá trị
của các component đã được quy định trước
Events and Listeners: lắng nghe những sự kiện và sự thay đổi trên mặt giao
diện được đăng ký trong phần model dựa trên mẫu thiết kế JavaBeans
Specification, version 1.0.1
Validators: hỗ trợ các class để kiểm tra tính đúng đắn đầu vào của các
component trên giao diện (khi nhận được request) và đảm bảo phù hợp với
quy luật được định nghĩa sẵn
Các đối tượng được hỗ trợ:
UIComponent and UIComponentBase
UIComponent là một class abstract cho tất cả các component giao diện,
được cung cấp bởi classjavax.faces.component.UIComponen,class
này xác định các thông tin và những trạng thái của tất cả các component
thông qua một ngôn ngữ lập trình Java API, điều này có nghĩa là các
component này độc lập với công nghệ như JSP
javax.faces.component.UIComponentBase được cung cấp như là một phần của JSF Lớp này cung cấp hữu ích mặc định triển khai thực hiện của
phương pháp gần UIComponent, cho phép các nhà văn thành phần để tập
trung vào duy nhất đặc điểm của một thực hiện UIComponent cụ thể
Component Behavioral Interfaces
Ngoài việc mở rộng các UIComponent, các class component cũng có thể
implement các interface behavioral được mô tả bên dưới Các thành phần
nếu hiện thực các interface này thì cần phải hiện thực lại các phương thức
được định nghĩa: ActionSource, ActionSource2, NamingContainer, StateHolder,
PartialStateHolder,ValueHolder,
EditableValueHolder,SystemEventListenerHolder, ClientBehaviorHolder
Conversion Model
Interface này hỗ trợ các class để chuyển đổi kiểu dữ liệu của các
component trên giao diện
ConverterJSF cung cấp interface
Phương thức này được dùng để chuyển đổi giá trị hiển thị trên giao diện
của các component (kiểu dữ liệu trả về thường là String như một tham số
request )
public String getAsString(FacesContext context, UIComponent
Trang 35Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính18 SVTH: Nam, Thuy, Trang, Trung
component, Object value) throws ConverterException;
Phương thức này được dùng để chuyển đổi giá trị hiển thị trong model của
các component (kiểu dữ là các đối tượng của java )
Standard Converter Implementations
JSF hỗ trợ các class hiện thực Converter gồm:
javax.faces.BigDecimal javax.faces.BigInteger javax.faces.Boolean javax.faces.Byte javax.faces.Character javax.faces.DateTime javax.faces.Double javax.faces.Float javax.faces.Integer javax.faces.Long javax.faces.Number javax.faces.Short
Event and Listener Mode
Validation Model
Composite User Interface Components
Component Behavior Model
Per-Request State Information
FacesContext
abstractjavax.faces.context.FacesContextđại diện cho tất cả các
thông tin được kết hợp với việc truy xuất của request đang đến và tạo ra xử lý
tương ứng Một FacesContext được tạo ra bởi việc hiện thực JSF, trước khi
bắt đầu chu trình xử lý request bằng cách gọi các phương
thứcgetFacesContextcủa đối tượngFacesContextFactory
Application
public Application getApplication();
Attributes
public Map<Object,Object> getAttributes();
Phương thức này trả về một Map chứa các attribute được gởi đi trong request
ELContext
public ELContext getELContext();
Phương thức này trả về đối tượng ELContext và có thời gian sống và phạm
vi giống như FacesContext
ExternalContext
public ExternalContext getExternalContext();
ExternalContext là một đối tượng cần thiết được tích hợp trong API được
cung cấp trong môi trường chạy của JSF, thường được gọi trong quá trình
chạy
Flash
Flash cung cấp một cách để vượt qua các đối tượng giữa giao diện người
dùng được tích hợp bởi faces lifecycle Bất kỳ một nơi nào trong flash điều
Trang 36uốt giai đoạ
e Queue
pub m pub pub pub pub
Kit
public
seStream an
pub pub re pub pub re pub
ontrol Meth
pub pub pub pub
Processing M pubthức này thiện mới hView Conte
To The Cur
public prote
blic Iterator<
c RenderKit
nd Respons
blic Response blic void setR esponseStrea blic Response blic void setR esponseWrite blic void enab
hods
blic void rend blic void resp blic boolean g blic boolean g
Methods blic PartialVtrả về một hoặc trả về mext
rrent FacesC
c static Face ected static v
ồ sơ hành chí
SVTH: N
hiện tiếp the
ot getViewR ewRoot(UIV
View trong
dMessage(Str r<String> ge getMaximum
eWriter getR ResponseWri er);
bleResponse
derResponse ponseCompl getRenderR getResponse
ViewContexthể hiện củmột thể hiện
Context Ins
esContext ge void setCurr
age> getMe age> getMe
Kit();
ResponseStr eam(Respons ResponseWri iter(Respons eWriting(boo
essages();
ream();
seStream iter();
seWriter olean enable
;
alViewContiewContextContext
Trang 37ng dụng hooại lệ được
ards Comp
ực một claavax.faces
0 quy địnhhase() và afeJsf2Except
ại.
n thực ngườ
ẻ <factory /eption-hand jaception-han
e getRootCa ExceptionEv dle() throws F sListenerFor essEvent(Sys gException;
patible Ex
ss Exception
webapp.Pre
h bất kỳ mộfterPhase() tionHandler
ời dùng cần/>trong filedler-factoryavax.faces.wndler-factory
ư là kết quả
lệ sau đây idatorExce verterExce MissingReso
ceptionHan
nHandlerFacto
eJsf2Excep
ột exceptionđiều phải đ
r thì cho p
n phải khai
e cấu hình ny>
webapp.PreJy>
ính trên nền
Nam, Thuy, T
ể xử lý các Faces vòng goại lệ xảy
ơi trong đặc
ả của quá trì
y không
eption được eption đượ ourceExcep
ời gian chạy
mentationM
ương thức sa
ptionEvent();
ndledExcept able t);
handledExce tion;
báo Excepnhư sau:
Jsf2Excepti
Liferay Port
Trang, Trung
trường hợpđời Excep
ra trong qu
c tả khuôn ình xử lý vòđược xử
; tionEvents() eptionEvents ent) throws
ng thời gia
ện của claserFactory.Ctung ra tro
ht, logged, v
ữ khả năng ptionHandle
ionHandler
tal
g
p ngoại lệ bptionHandle
uá trình khởmặt yêu cầòng đời bìn
lý bởi cá
cụ thể đượ
cụ thể đượthrow tronđược quản lthực th
; ts();
Trang 38Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính21 SVTH: Nam, Thuy, Trang, Trung
Mỗi message nằm trong hàng đợi của một FacesContext là một thể hiện của class javax.faces.application.FacesMessage Nó hỗ trợ cho các constructor sau:
Những phương thức được hỗ trợ để get và set các thuộc tính của một message:
public String getDetail();
public void setDetail(String detail);
public Severity getSeverity();
public void setSeverity(Severity severity);
public String getSummary();
public void setSummary(String summary);
Những thuộc tính của message được định nghĩa như sau:
Detail: thể hiện thông tin chi tiết của một FacesMessage, giúp cho người dùng hiểu rõ vấn đề màn FacesMessage muốn thông báo
Severity: định nghĩa mức độ nghiêm trọng của thông báo đến người dùng Bốn tiêu chuẩn đánh giá mức độ nghiêm trọng của FacesMessages là: SEVERITY_INFO, SEVERITY_WARN, SEVERITY_ERROR, và SEVERITY_FATAL
Sumary: tóm tắt nội dung của một FacesMessage
ResponseStream:Là một class abstract đại diện cho một output stream dạng
binary dành cho những phản hồi hiện thời Nó có tất cả các phương thức mà một class java.io.OutputStreamcung cấp
ResponseWriter: ResponseWriterlà một classabstract đại diện cho một output stream dạng character Một thể hiện của ResponseWriterđược gọi thông qua phương thức củaRenderKit Các phương thức hỗ trợ gồm:
public void close() throws IOException;
public void flush() throws IOException;
public void write(char c[]) throws IOException;
public void write(char c[], int off, int len) throws IOException;
public void write(int c) throws IOException;
public void write(String s) throws IOException;
public void write(String s, int off, int len) throws IOException;
ClassResponseWriterkế thừa classjava.io.Writer do đó kế thừa tất
cả những phương thức của một low-level output
public abstract String getContentType();
public abstract String getCharacterEncoding();
public void startCDATA();
public void endCDATA();
public void startDocument() throws IOException;
public void endDocument() throws IOException;
public void startElement(String name, UIComponent
componentForElement) throws IOException;
public void endElement(String name) throws IOException;
public void writeComment(Object comment) throws IOException;
public void writeAttribute(String name, Object value, String
componentPropertyName) throws IOException;
public void writeURIAttribute(String name, Object value, String
Trang 39Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính22 SVTH: Nam, Thuy, Trang, Trung
componentPropertyName) throws IOException;
public void writeText(Object text, String property) throws IOException;
public void writeText(char text[], int off, int len) throwsIOException;
public abstract ResponseWriter cloneWithWriter(Writer writer);
FacesContextFactory:Trong JSF hỗ trợ FacesContextFactory được chạy
trong servlet hoặc portlet container Cách get FacesContextFactory trong JSF như sau:
FacesContextFactory factory = (FacesContextFactory)
FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
ExceptionHandlerFactory:Một thể hiện của
javax.faces.context.ExceptionHandlerFactoryphải được hiện thực trong các ứng dụng JSFtrong servlet hoặc portlet container, cách để get đối tượng ExceptionHandlerFactory như sau:
ExceptionHandlerFactory factory = (ExceptionHandlerFactory)
FactoryFinder.getFactory(Factory-Finder.EXCEPTION_HANDLER_FACTORY);
javax.faces.context.ExternalContextFactoryphải được hiện thực trong các ứng dụng JSFtrong servlet hoặc portlet container, cách để get đối tượng ExternalContextFactorynhư sau:
ExternalContextFactory factory = (ExternalContextFactory)
FactoryFinder.getFactory(Factory-Finder.EXTERNAL_CONTEXT_FACTORY);
Rendering Model: JavaServer Faces hỗ trợ hai mô hình lập trình choviệc mã
hóa giá trị của các component request gửi đến và giải mã giá trị của các component nhận về được thực hiện theo một redirect đi và nhận về
Khi thực hiện một model dưới hình thức redirect thì các component cần phải được mã hóa và giải mã, để hiện thực mô hình này các hoạt động được giao cho một đối tượng là Renderer cho các component
RenderKit: RenderKit là một thể hiện kết hợp với view và hỗ trợ cho các
component việc mã hóa và giải mã giá trị của chúng Đồng thời RendererKit cũng hỗ trợ Behavior đến các client và giải mã cho các BehaviorEvents trong hàng đợi.Các phương thức hỗ trợ gồm:
public Renderer getRenderer(String family, String rendererType);
public ClientBehaviorRenderer getClientBehaviorRenderer(String type);
public void addRenderer(String family, String rendererType, Renderer renderer); public void addClientBehaviorRenderer(String type,ClientBehaviorRenderer renderer);
public Iterator<String> getClientBehaviorRendererTypes();
public ResponseWriter createResponseWriter(Writer writer, String
contentTypeList, String characterEncoding);
public ResponseStream createResponseStream(OuputStream out);
public ResponseStateManager getResponseStateManager();
public Iterator<String> getComponentFamilies();
public Iterator<String> getRendererTypes(String componentFamily);
Trang 40Xây dựng ứng dụng quản lý hồ sơ hành chính trên nền Liferay Portal
GVHD: TS Phạm Văn Tính23 SVTH: Nam, Thuy, Trang, Trung
Renderer: Một Renderer thực hiện việc mã hóa và giãi mã chức năng của
các component, trong suốt giai đoạn chấp nhận giá trị của request và render response trong vòng đời xử lý của request khi có thành phần có giá trị không
là null.Các phương thức hỗ trợ gồm:
public void decode(FacesContext context, UIComponent component);
public void encodeBegin(FacesContext context, UIComponent component) throws IOException;
public void encodeChildren(FacesContext context, UIComponent component) throws IOException;
public void encodeEnd(FacesContext context, UIComponent component) throws IOException;
public String convertClientId(FacesContext context, String clientId);
public boolean getRendersChildren();
public Object getConvertedValue(FacesContext context,UIComponent component, Object submittedValue) ThrowsConverterException;
ClientBehaviorRenderer: ClientBehaviorRenderer tạo ra những ứng xử
của client đến các component từ nội dung của một đoạn script Nó cũng tham gia giải mã nên cũng được dùng trong BehaviorEvents ở server
trongjavax.faces.application.StateManagerđể hiểu rõ hơn về quá trình tạo ra một Response, đó là một class abstract singleton Class này cho biết cơ chế lưu các trạng thái cho dù đó là các trường hidden hoặc sesion, hoặc kết hợp cả hai.Các phương thức hỗ trợ
public Object getState(FacesContext context);
public void writeState(FacesContext context, Object state) throwsIOException;