Hiện tại phương pháp phân quyền sử dụng dựa trên vai trò Role-based security được sử dụng như một tiêu chuẩn trong các hoạt động xác định quyền truy cập và cung cấp thông tin cho các đối
Trang 1Đồ án tốt nghiệp Giới thiệu cổng giao tiếp
điện tử
Trang 2
Lời nói đầu
Chúng ta đã biết, website đã và đang đóng góp rất lớn vào việc phổ cập thông tin, như giới thiệu tin tức, các cơ sở dữ liệu, và một số chương trình ứng dụng trên mạng, đã làm thay đổi cả thế giới từ khi xuất hiện vào đầu những năm
90 của thế kỷ trước Ngày nay, mọi giao tiếp thông qua website đã trở thành phổ biến Tuy nhiên chúng ta có thể mạnh dạn gọi một số lớn các website là “website truyền thống” bởi những mặt tồn tại do công nghệ cũ để lại như: sự quá tải thông tin; thông tin không được phân lọai; khó khăn trong việc duy trì bảo quản; khó tích hợp thông tin, dịch vụ; không có khả năng cung cấp một nền tảng để có thể phát triển và mở rộng
Công nghệ Portal (Cổng điện tử) phát triển sau thời kỳ này khoảng 7-8 năm như một tất yếu xuất phát từ nhu cầu thực tế Portal là một bước tiến hóa của website truyền thống Nó ra đời để giải quyết những vấn đề mà website truyền thống gặp phải
Là “siêu website”, gọi đầy đủ là Portal Website, gọi tắt là Portal, đối với người dùng vẫn chỉ là trang web qua browser
Là đích quy tụ hầu hết các thông tin và dịch vụ cho người sử dụng cần Thông tin và dịch vụ được phân loại nhằm thuận tiện cho tìm kiếm và vùi lấp các thông tin
Bảo toàn đầu tư lâu dài Có nền tảng công nghệ đảm bảo
Môi trường chủ động dùng cho việc tích hợp ứng dụng
Sự ra đời và phát triển của Portal đã dẫn tới sự phát triển tất yếu của các chuẩn được sử dụng hoạt động trên nền Portal, đó là các chuẩn Ichannel, Portlet, và giới thiệu về chuẩn Portlet JSR 168 của Java Community
Trang 3Chương I: Giới thiệu cổng giao tiếp điện tử
1 Định nghĩa
Cổng giao tiếp điện tử - Portal: Là một khái niệm thường được nhắc đến
nhiều trong những năm gần đây của thị trường tin học Bởi vì phạm vi áp dụng của Portal là rất rộng, bao gồm các hệ thống bên trong (internal), bên ngoài (external), đằng sau bức tường lửa và nằm rải rác khắp nơi trên internet, do vậy khó có được định nghĩa hoàn chỉnh và chính xác về Portal Một cách chung nhất,
có thể tạm định nghĩa portal như sau:
Portal là một phần mềm ứng dụng cung cấp một giao diện mang tính cá nhân hóa cho người sử dụng Thông qua giao diện này, người dùng có thể khám phá, tìm kiếm, giao tiếp với các ứng dụng, với các thông tin, và với những người khác
Sự ra đời và phát triển của portal đã dẫn tới sự phát triển tất yếu của các chuẩn được sử dụng để xây dựng các ứng dụng hoạt động trên nền Portal, đó là chuẩn Ichannel, Portlet ,
2 Lịch sử phát triển
Website đã và đang đóng góp rất lớn vào việc phổ cập thông tin, như giới thiệu tin tức, các cơ sở dữ liệu, và một số chương trình ứng dụng trên mạng, đã làm thay đổi cả thế giới từ khi xuất hiện vào đầu những năm 90 của thế kỷ trước Ngày nay mọi giao dịch thông qua web đã trở nên phổ biến
Công nghệ Portal (Cổng điện tử) phát triển sau thời kỳ này khoảng 7-8 năm như là một tất yếu xuất phát từ nhu cầu thực tế Portal là một bước tiến hóa của web truyền thống Nó ra đời để giải quyết những vấn đề mà website truyền thống gặp phải
- Portal (cổng giao tiếp điện tử) là một bước tiến hóa của website truyền thống
- Là “siêu website”, gọi đầy đủ là Portal Website, gọi tắt là Portal, đối với người dùng vẫn chỉ là sử dụng trang web thông qua trình duyệt (tức
là web browser), nhưng đằng sau nó là sự thay đổi thuật ngữ và quan
Trang 4niệm mới về triết lý phục vụ thay cho cách hiểu “tuyên truyền“ thông qua website như trước đây
- Là điểm đích quy tụ hầu hết các thông tin và dịch vụ cho người sử dụng cần, là điểm đích đến thực sự Thông tin và dịch vụ được phân loại nhằm thuận tiện cho tìm kiếm và hạn chế vùi lấp các thông tin
- Bảo toàn đầu tư lâu dài Có nền tảng công nghệ đảm bảo, do công Internet đã phát triển rất cao so với thời kỳ xuất hiện Word Wide Web vào đầu những năm 90 của thế kỷ trước Những công nghệ tạo nên thời đại portal đều hỗ trợ tính mở và kế thừa rất mạnh, sao cho việc mở rộng quy mô phục vụ bằng các phần mềm ứng dụng mới được “lắp rắp” vào Portal đang có mà không phải hủy bỏ hoặc sửa chữa lớn như những website trước đây
- Môi trường chủ động dùng cho việc tích hợp ứng dụng
- Xu hướng “tiến hóa” chung của website theo hướng tiến đến Portal được trình bày trong hình vẽ:
Hình 1.1: Lịch sử phát triển của Portal
3 Phân loại Portal
Sau đây là một vài kiểu điển hình của Portal
- Vertical portal Thuật ngữ này được sử dụng để chỉ những Portal mà
nội dung thông tin cùng các dịch vụ của nó được thiết kế để phục vụ cho một lĩnh vực xác định, cho một chuyên ngành xác định, do vậy khách hàng của nó là diện hẹp Theo đánh giá, hiện nay trên thế giới, Vertical portal là loại hình Portal có tốc độ phát triển nhanh nhất
Trang 5- Horizontal portal Thuật ngữ này được sử dụng để chỉ những Portal mà
nội dung thông tin cùng các dịch vụ của nó bao trùm nhiều chủ đề, nhiều lĩnh vực, do vậy nó mang tính diện rộng, phục vụ cho nhiều loại khách hàng khác nhau Các Portal nổi tiếng như Yahoo, NetCenter, Altavista,
- Information portal Xây dựng hệ thống cung cấp thông tin trên cơ sở
thu gom số liệu từ nhiều nguồn khác nhau Các nguồn dữ liệu này nằm rải rác trên mạng toàn cầu Internet, từ các CSDL của các mạng nội bộ Intranet, và thậm chí cả từ các Portal khác
- Community portal Xây dựng “một vị trí ảo” trên Internet cho các cá
nhân, các doanh nghiệp “tụ tập” để giúp đỡ lẫn nhau và để hợp tác với nhau trong cùng một mục đích xác định Community portal mang lại cơ hội cộng tác cho các cá nhân, tổ chức doanh nghiệp mà ranh giới địa lý không có ý nghĩa ở đây
- Corporate portal (or Enterprise portal) Corporate portal thường được
dùng bởi các nhân viên trong một cơ quan hay tổ chức sử dụng để chia
sẻ thông tin với nhau, cộng tác với nhau để cùng giải quyết một công việc, qua đó nâng cao năng suất lao động và hiệu quả giải quyết công việc của mình
- Commercial portal Cung cấp “chợ điện tử” (e-mail) trong thị trường
thương mại điện tử
- Goverment portal Cung cấp các “cổng hành chính công điện tử” để
chính quyền (Trung ương và địa phương) thực hiện các chức năng của mình đối với dân chúng thông qua việc cung cấp thông tin và các dịch
vụ hành chính công
4 Thuộc tính cơ bản của Portal
- Cá nhân hóa giao diện người sử dụng (Personalization)
- Tổ chức phân loại thông tin (Categoize)
- Hỗ trợ khả năng tìm kiếm nhanh thông tin (Search)
- Thông tin được tích hợp từ nhiều nguồn khác nhau (Intergration)
- Hỗ trợ mô hình làm việc cộng tác (Collaboration)
- Hỗ trợ mô hình tự động xử lý công việc theo quy trình đã xác định từ trước (Workflow)
Trang 6- Khả năng bảo mật cao, hỗ trợ đăng nhập hệ thống một lần duy nhất (Single-Sign-On)
5 Chức năng của Portal
- Khả năng cá nhân hóa (Customization hay Personalization) :
Cho phép thiết đặt các thông tin khác nhau cho các loại đối tượng sử dụng khác nhau theo yêu cầu Tính năng này dựa trên hoạt động thu thập thông tin về người dùng và cộng đồng người dùng, từ đó cung cấp các thông tin chính xác tại thời điểm được yêu cầu
- Tích hợp và liên kết nhiều loại thông tin (Content aggregation):
Cho phép xây dựng nội dung thông tin từ nhiều nguồn khác nhau cho nhiều đối tượng sử dụng Sự khác biệt giữa các nội dung thông tin sẽ được xác định qua các ngữ cảnh của người dùng
- Xuất bản thông tin (Content syndication):
Thu thập thông tin từ nhiều nguồn khác nhau, cung cấp cho người dùng thông qua các phương pháp hoặc giao thức (protocol) một cách thích hợp Một
hệ thống thông tin chuyên nghiệp phải có khả năng xuất bản thông tin với các định dạng quy chuẩn
- Hỗ trợ nhiều môi trường hiển thị thông tin (Multidevice support):
Cho phép hiển thị cùng một nội dung thông tin trên nhiều loại thiết bị khác nhau như: màn hình máy tính (PC), thiết bị di động (Mobile phone, PDA ) sử dụng để in hay cho bản fax một cách tự động bằng cách xác định thiết bị hiển thị thông qua các thuộc tính khác nhau
- Khả năng đăng nhập một lần (Single Sign On):
Cho phép dịch vụ xuất bản thông tin hoặc các dịch vụ khác của portal lấy thông tin về người dùng khi hoạt động mà không phải yêu cầu người dùng đăng nhập lại mỗi khi yêu cầu Đây là một tính năng rất quan trọng vì các ứng dụng và dịch vụ trong portal sẽ phát triển một cách nhanh chóng khi xuất hiện nhu cầu,
mà các ứng dụng và dịch vụ này tất yếu sẽ có nhu cầu về xác thực hoặc truy xuất thông tin người dùng
- Quản trị portal (Portal administration):
Xác định cách thức hiển thị thông tin cho người dùng cuối Tính năng này không chỉ đơn giản là thiết lập các giao diện người dùng với các chi tiết đồ họa (look-and-feel), với tính năng này người quản trị phải định nghĩa được các thành
Trang 7phần thông tin, các kênh tương tác với người sử dụng cuối, định nghĩa nhóm người dùng cùng với các quyền truy cập và sử dụng thông tin khác nhau
- Quản trị người dùng (Portal user management):
Cung cấp các khả năng quản trị người dùng cuối, tùy thuộc vào đối tượng
sử dụng của portal Tại đây, người sử dụng có thể tự đăng ký trở thành thành viên tại một công thông tin công cộng (như Yahoo, MSN .)hoặc được người quản trị tạo lập và gán quyền sử dụng tương ứng đối với các công thông tin doanh nghiêp Mặt khác, tùy thuộc vào từng kiểu Portal mà số lượng thành viên
có thể từ vài nghìn tới hàng triệu Hiện tại phương pháp phân quyền sử dụng dựa trên vai trò (Role-based security) được sử dụng như một tiêu chuẩn trong các hoạt động xác định quyền truy cập và cung cấp thông tin cho các đối tượng khác nhau trong các Portal cũng như các ứng dụng web
6 Kiến trúc của Portal
Hình 1.2: Mô hình kiến trúc Portal
Trang 8Được xây dựng dựa trên mô hình Web ba tầng (Web Application 3-tier): tầng trình diễn (Client), tầng ứng dụng (Portal Server) và tầng cơ sở dữ liệu (Enterprise Resources)
6.1 Tầng trình diễn (Client):
Người dùng có nhiều lựa chọn về nền trình diễn (Internet, Mobile, PDA, ).Hệ thống sẽ tự động gọi các tệp cấu hình sẵn cho tầng nền thông qua lớp Presentation Services.Tầng trình diễn chịu trách nhiệm về cung cấp giao diện cho nhiều loại người dùng khác nhau, có nhiệm vụ lấy các yêu cầu, dữ liệu từ người dùng, có thể định dạng nó theo những qui tắc đơn giản (dùng các ngôn ngữ Script) và gọi các thành phần thích hợp từ tầng Business Logic để xử lý các yêu cầu Kết quả sau xử lý được trả lại cho người dùng
6.2 Tầng ứng dụng (Portal Server):
Là môi trường hoạt động và là nơi chứa các ứng dụng của Cổng giao tiếp điện tử Là đầu mối tiếp nhận và xử lý yêu cầu của người dùng đầu cuối, phân tích, tiền xử lý yêu cầu và chuyển yêu cầu đã xử lý cho phần ứng dụng tương ứng xử lý Tầng này bao gồm 3 thành phần chính: dịch vụ phục vụ trình diễn, phần ứng dụng, kiến trúc hạ tầng
- Dịch vụ phục vụ trình diễn (Persentation Services): Đảm nhận nhiệm
vụ đón các yêu cầu từ tầng trình diễn (yêu cầu phía client) và trả về kết quả cho phía client Đồng thời có nhiệm vụ thực thi các thành phần điều khiển trình diễn của ứng dụng chủ cũng như thực thi các modules giao tiếp với các Server khác (Email, LDAP server)
- Phần ứng dụng (Bussiness Logic): Thực hiện các quy trình xử lý
nghiệp vụ và điều khiển Phần này bao gồm tập các API để thực hiện các luồng công việc, tập các API dùng để tạo ra các dữ liệu và sau đó thông qua Presentation Services xuất ra XHTML, HTML, WML, … tùy theo nền trình diễn
mà phía client yêu cầu Phần này bao gồm các khối chức năng chính sau:
+ Khối bảo mật (Sercurity & SSO – Single Sign-On): Khối này bao gồm
các chức năng cơ bản liên quan đến việc đăng ký, quản lý tài khoản (tạo mới, sửa đổi, xóa, ) của người sử dụng hoặc nhóm người sử dụng, phân quyền cho người dùng hoặc nhóm người dùng truy cập tới tài nguyên và dịch vụ của hệ thống Với quan điểm thông tin và dịch vụ chỉ được truy nhập bởi người dùng hợp lệ, Portal cần thiết duy trì hệ thống kiểm tra và xác thực người dùng truy cập Thêm nữa để tránh cho người dùng phải
Trang 9nhớ quá nhiều tên và mật khẩu khi truy nhập tài nguyên của mình, Portal cũng được cài đặt khả năng xác thực một cửa theo đó người sử dụng (đã được đăng ký và có tài khoản) chỉ cần đăng nhập một lần, nhưng có thể truy cập tới thông tin và dịch vụ (theo quyền truy cập) có trên Portal
+ Cá nhân hóa người dùng (Personalization): Một trong những đặc tính
của Portal là khả năng cá nhân hóa Một người dùng sau khi đăng nhập vào hệ thống thì có thể tự thay đổi giao diện trình bày như bố cục và giao diện trình bày, thành phần thông tin hiển thị, …
+ Khối tổ chức, quản lý và tìm kiếm nội dung thông tin (Search & Categorize): Để giảm thiểu tình trạng quá tải thông tin của người sử dụng,
thông tin cần được quản lý bởi Portal phải được phân loại và sắp xếp theo các chủ đề (topics, subtopics, ) sao cho người dùng có thể nhanh chóng tìm thấy thông tin mà mình cần Trong mục quản lý nội dung còn có các chức năng xuất bản thông tin bao gồm các bước tạo, phê duyệt và xuất bản thông tin, nhưng do vai trò quan trọng của khối này nên đã tách riêng
+ Khối xuất bản thông tin (Publish & Subscribe): Khối này cung cấp các
chức năng cơ bản thể hiện qui trình xuất bản thông tin với sự tham gia của các bộ phận khác nhau như: tạo lập, biên tập nội dung bằng một hệ soạn thảo văn bản, và phê duyệt xuất bản
+ Khối tích hợp ứng dụng (Intergration): Cung cấp các giao thức chuẩn,
mà thông qua đó các ứng dụng được tích hợp vào Portal, hoặc tạo lập các mối liên kết (links) với các trang thông tin điện tử/website khác
+ Khối mô hình làm việc cộng tác (Collaboration): Khối này cung cấp và
thực hiện quản lý các phần mềm công cụ nhằm tăng cường khả năng trao đổi thông tin 2 chiều giữa các thành viên của Portal, giữa thành viên và người quản trị Poral trong quá trình xử lý công việc
+ Khối mô hình xử lí công việc theo qui trình định trước (Applications & Workflow): Khối này cho phép xây dựng nên các quy trình xử lý công việc
theo các bước định trước, và áp dụng các quy trình này vào xử lý các công việc một cách tự động
+ Khối ứng dựng xây dựng (Portlets/Channels): Là khối bao gồm các
ứng dựng xây dựng theo các chuẩn Portlets và Channels là những chuẩn ứng dụng Portal hỗ trợ để thực hiện những chức năng cụ thể, riêng biệt
- Kiến trúc hạ tầng (Portal Infrastructure): Là những kiến trúc bên dưới
Trang 10giúp cho Portal giao tiếp với tầng Cơ sở dữ liệu, các ứng dụng bên ngoài Portal
và với người dùng khác
6.3 Tầng cơ sở dữ liệu (Enterprise Reources):
Bao gồm các hệ thống CSDL lưu trữ dữ liệu chính của Portal, CSDL chuyên nghành và CSDL tích hợp sẵn sàng phục vụ cho các hoạt động truy cập,
xử lý, kiết xuất và trình diễn thông tin ở các tầng trên
- CSDL Portal (Portal Database): gồm hệ thống CSDL chính của Portal
phục vụ lưu trữ các thông tin dữ liệu về cấu hình, các tham số của hệ thống, dữ liệu người dùng, dữ liệu bản tin, các thông tin, dữ liệu phục vụ điều hành,… Các CSDL này được liên thông với nhau và tạo thành một hệ thống phục vụ điều hành, quản lý Portal
- CSDL ứng dụng (Structured & Unstructured Database): là hệ thống
các CSDL phục vụ quản lý một lĩnh vực hoặc đối tượng đặc thù của từng Đơn vị
sử dụng hệ thống Portal Đây cũng chính là hệ thống CSDL chung phục vụ một ngành dọc liên quan đến Đơn vị đó Khi có yêu cầu, hệ thống sẵn sàng cho việc kết xuất và tổng hợp thông tin để cung cấp cho Portal
- CSDL tích hợp (Intergrated Database): Đây là hệ CSDL của Portal và
các hệ thống khác cần liên thông dữ liệu với nhau Hệ CSDL hoạt động theo nhiều cơ chế (như LDAP, Active Directory, …), cho phép tích hợp thông tin hệ thống của các hệ CSDL nền khác nhau
7 Các mô hình phát triển
7.1 Portal theo chuẩn Ichannel
IChannel là một chuẩn phát triển kênh ứng dụng dựa trên mô hình kiến trúc MVC, và áp dụng công nghệ XML/XSLT trong trình diễn và chuyển đổi dữ liệu IChannel được dùng trong framework uPortal để phát triển các kênh ứng dụng, chúng ta sẽ đi sâu nghiên cứu về framework uPortal trong những phần dưới đây:
a uPortal
- Giới thiệu
uPortal là một dự án được bắt đầu và phát triển bởi JA-SIG Mục đích chính của uPortal là đưa ra một bộ khung (framework) cho phép tích hợp các thông tin, ứng dụng vào trong một giao diện web nhằm tạo ra một cổng truy
Trang 11nhập duy nhất đáp ứng yêu cầu sử dụng của một cộng đồng người dùng muốn chia sẻ, trao đổi các thông tin trực tuyến trên Internet
Công nghệ nền tảng mà uPortal tuân theo là các chuẩn được đặc tả trong kiến trúc hệ thống mở J2EE, bao gồm Applet, Servlet, JSP, EJB, JTA, JMS, uPortal thao tác với các object của một web-page theo đặc tả DOM (Document Object Model), và sử dụng Java, XML, XSLT
Công nghệ XML/XSLT được sử dụng cho phần trình diễn đối với người
sử dụng Công nghệ này cho phép trình diễn cùng một nội dung thông tin trên nhiều thiết bị khác nhau như máy vi tính cá nhân PC, các thiết bị di động cầm tay như Mobile, PDA, và v.v
Kiến trúc trong đặc tả J2EE làm uPortal trở thành một hệ thống mở và mềm dẻo, có khả năng tích hợp với các hệ thống hạ tầng và các ứng dụng dịch
vụ hay các nguồn dữ liệu khác nhau Theo như kiến trúc đó, uPortal cung cấp một tập các giao diện để tích hợp với các hệ thống và ứng dụng bên ngoài
Công nghệ Java là một công nghệ cho phép xây dựng các phần mềm “viết một lần, chạy mọi nơi” tức là các ứng dụng được viết bằng Java chạy được trên nhiều nền hệ thống khác nhau Windows, Linux, Unix,… Do đó uPortal cũng là một hệ thống mà chạy được trên nhiều môi trường hệ điều hành khác nhau Nó cũng có thể chạy với nhiều web server và kết nối đến nhiều hệ cơ sở dữ liệu khác nhau như Oracle, SQL Server, My SQL, DB2,… nhờ vào một lớp (một thành phần) chuyên đảm nhận kết nối cơ sở dữ liệu để đảm bảo các lớp phía trên của uPortal hoạt động độc lập không phụ thuộc vào loại cơ sở dữ liệu
- Lịch sử của uPortal
Phiên bản đầu tiên của uPortal – uPortal 1.0 với tên gọi Monterey 1.0 được đưa ra vào năm 2000 Sau đó đến phiên bản uPortal 1.5 với tên gọi Destin với việc bổ sung hệ thống kiểm soát quyền truy cập Ở các phiên bản uPortal 1.x, việc biểu diễn nội dung nhờ vào các thành phần JSP Các thành phần này nhận trực tiếp dữ liệu và sinh ra các trang HTML
Nhưng đến các phiên bản uPortal 2.x đưa ra một kiến trúc mới dựa trên chuẩn XML/XSLT Đồng thời các mẫu thiết kế (design pattern) được áp dụng nhiều hơn để tổ chức các thành phần phần mềm của uPortal mang tính mềm dẻo
và tính mở cao Từ phiên bản uPortal 2.1.3 được đưa ra ngày 23 tháng 6 năm
2003 đã tăng cường thêm nhiều tính tăng như quản lý nhóm, kênh từ xa (remote
Trang 12channel),… Và đến phiên bản 2.3.5 ra ngày 14 tháng 9 năm 2004 đã hỗ trợ chuẩn portlet JSR-168
Các phiên bản và thời điểm phát hành có thể tóm tắt bằng bảng dưới đây
Phiên bản Thời điểm phát hành
Trang 13Hình 1.3:Mô hình của Portal
- Công nghệ xử lý dựa trên mô hình kiến trúc MVC
uPortal là web-based application, được kiến trúc dựa trên mô hình MVC Khi triển khai Portal được đóng gói lại theo dạng web archive(.war) và được đặt trong một thư mục trên web server Mối liên hệ giữa web server và các vai trò của mô hình MVC trong uPortal được mô tả trong hình vẽ sau:
Trang 14Hình 1.4: Mối liên hệ giữa web server và các vai trò của mô hình MVC
+ Controller có nhiệm vụ nhận các request từ người dùng do web server chuyển tới, nhận model là kết quả từ các business logic, sau đó gọi View để tạo response trả lời request
+ View trong uPortal là các stylesheet Controller gọi view để hiển thị dữ liệu XML trong Model Dữ liệu XML của model được tạo ra từ domain logic layer
+ uPortal sử dụng các bộ thư viện mã nguồn mở như xalan.jar, xerces.jar (Apache Group – www.apache.org) và JAXP (Sun – www.sun.com) để chuyển đổi các dữ liệu từ domain-logic thành XML và từ XML thành HTML
- Sử dụng công nghệ XML/XSLT trong trình diễn, chuyển đổi dữ liệu
uPortal áp dụng công nghệ XML/XSLT trong trình diễn và chuyển đổi dữ liệu, hình dưới đây mô phỏng cho cơ chế trình diễn này
: Nguoi dung Web Server Controller Modul lay du lieu - Http
Request
Modul xu li du lieu - Object Model
Modul hien thi - View 1: Yeu cau - Http request
2: Chuyen yeu cau
3: Lay du lieu nhap vao tu nguoi dung internet
4: Thuc hien cac chuc nang he thong
5: Tao du lieu - XML data 6: Chon kieu hien thi - stylesheet
7: Goi modul hien thi qua Web Server
9: Lay du lieu 8: Gui yeu cau hien thi den modul hien thi
10: T ao trang web tra loi 11: T ra loi - Http reponse
Trang 15Hình 1.5: Sơ đồ mô phỏng cơ chế trình diễn thông tin của
uPortal
+ Tạo trình diễn
Bộ khung phần mềm uPortal là một bộ khung để phân phối các thông tin/dịch vụ tích hợp được thu thập từ các loại nguồn thông tin được phân loại Chức năng chính của bộ khung là cung cấp một bộ máy hiệu quả và mềm dẻo cho việc tạo một trình diễn Cho trước một tập nguồn tài nguyên thông tin (các kênh), và một chỉ dẫn cách sắp xếp và bộ khung trình diễn (stylesheets), bộ khung uPortal sẽ phối hợp để tạo thành một tài liệu tổ hợp cuối cùng
Điểm bắt đầu cho bất cứ một sự tạo trình diễn luôn là một tổ chức trừu
tượng của các kênh: tài liệu bố cục người dùng (user layout document) Tiến
trình tạo trình diễn tổ hợp chuyển đổi user layout document theo ba giai đoạn chính để đạt được tài liệu cuối cùng dưới dạng một ngôn ngữ đánh dấu XML (markup language):
Giai đoạn đầu là chuyển một hệ thống trừu tượng bố cục của người dùng
(user layout) sang dạng một trình diễn có cấu trúc - gọi là chuyển đổi cấu trúc (structure transformation), và lôgic của nó được định nghĩa bởi structure stylesheet (sử dụng XSL) Ví dụ, the structure stylesheet cho biểu diễn “tab và
cột” mặc định sẽ chuyển cấu trúc user layout trừu tượng thành một cấu trúc của
Channel 3 Render
Channel 1 Render
Channel 2 Render
XML
Layout XML
XSLT
Trang 16các yếu tố “tab” và “cột” Sau chuyển đổi cấu trúc, hệ thống khởi tạo vòng đời trình diễn của các kênh mà sẽ được hợp thành vào trong trình diễn cuối cùng
Giai đoạn thứ hai của tiến trình sẽ chuyển kết quả của giai đoạn chuyển
đổi cấu trúc sang giao thành một ngôn ngữ đánh dấu (như HTML) Chuyển đổi này gọi là chuyển đổi nền (theme transformation) và lôgic của nó được định
nghĩa bởi theme stylesheet
Nội dung được cung cấp bởi mỗi kênh riêng biệt sẽ được sát nhập vào trong kết quả của chuyển đổi cấu trúc
Giai đoạn cuối cùng là xuất bản kết quả của chuyển đổi nền với nội dung
của kênh vào trong một luồng các ký tự theo các luật của ngôn ngữ đánh dấu và phương tiện biểu diễn
Hình 1.6: Các giai đoạn tạo trình diễn
+ Chuyển đổi
uPortal là framework, trong đó các thực thể tạo nên framework được thiết
kế và implement như một kênh độc lập trong kiến trúc hệ thống Cụ thể, các chức năng của uPortal được kiến trúc như một kênh trong hệ thống Người dùng
hệ thống sử dụng kênh phụ thuộc vào vai trò và quyền Một kênh được implement theo mô hình MVC, controller thực hiện business logic của kênh, kết quả của business logic được mô hình trong model, và controller gọi view để hiển thị kết quả trong model Business logic của kênh được mô hình hoá trong Model dưới dạng dữ liệu XML, view được mô tả trong các stylesheet bằng XSL
Trang web trong kiến trúc portal được thiết kế dựa trên việc bố trí các kênh trên một kiểu layout Có hai engine chính được thực hiện khi tạo một trang web trong kiến trúc portal:
content presentation
Trang 17* Channel Renderer Engine: Liên quan đến từng kênh cụ thể trong hệ thống Engine này sử dụng mô hình Two step view để chuyển đổi dữ liệu kênh
từ domain logic sang XML, tiếp đó từ thực hiện chuyển đổi từ XML sang dữ liệu HTML Dưới đây là mô hình thể hiện cơ chế chuyển đổi này
Hình 1.7: Mô hình chuyển đổi theo cơ chế Channel Renderer Engine
* Layout Renderer Engine: Liên quan đến từng layout của kênh cụ thể trong hệ thống Engine này cũng sử dụng mô hình Two step view để chuyển đổi
dữ liệu layout từ domain logic sang XML, tiếp đó từ thực hiện chuyển đổi từ XML sang dữ liệu HTML
Channel Data (From Domain logic)
Channel Data (HTML)
Channel Data (XML) First stage: using XML parser
Second stage: using XSLT processor
Trang 18Hình 1.8: Mô hình chuyển đổi theo cơ chế Layout Renderer Engine
Layout data (oriented - XML)
Layout data (oriented - HTML)
First stage: using XML parser input: business logic data
Second stage: using XSLT processor input: XML data, XSL location Layout data (from Domain Logic)
Trang 19Chương II: Tìm hiểu về Portlet
1 Định nghĩa
Là một thành phần web có khả năng gắn nối (plugable) được quản lý bởi một portlet container, cái cung cấp một cách linh động nội dung như là một phần của sự kết hợp giao diện người dùng Portlet là một thành phần nhỏ của ứng dụng web, chạy bên trong trang portal cùng với một số lượng bất kỳ các thực thể nào đó khác, nó có thể xử lý các request và tạo ra các nội dung động
Một server portal quản lý các yêu cầu của client Giống như một ứng dụng web phía máy chủ có một web container để quản lý việc “chạy” các thành phần web (như serverlet bộ lọc filters ), một portal có một portlet container để quản
lý việc chạy các portlets
Portlet là một thành phần web riêng biệt, có một hay một vài chức năng cụ thể nào đó, giúp portal hoàn thành chức năng, nhiệm vụ của mình Mọi yêu cầu của người sử dụng đối với portlet đều phải thông qua giao diện của portal
Các máy khách truy cập web tương tác với portlet thông qua mô hình yêu cầu/trả lời(request/reponse) Với một chu kỳ yêu cầu xác định, từng portlet sinh
ra nội dung riêng biệt được gọi là đoạn nội dung (fragment).Các đoạn nội dung được trình bày bằng một ngôn ngữ đánh dấu (markup) như HTML hoặc XHTML… sẽ được kết hợp với nhau thành một tài liệu trả lời hoàn chỉnh
Một portlet được hiển thị trên một trang portal như là một cửa sổ đơn Portlet cung cấp nội dung chứa trong cửa sổ nhưng nó không phải là bản thân cửa sổ đó
Các portlet có thể được xây dựng thành nhiều mức và ngữ cảnh của portal cho phép người dùng giao tiếp với portlet để hoàn thành mục đích của mình
2 Định dạng chung của một Portlet
Trong hệ thống tích hợp có rất nhiều portlet khác nhau, mỗi portlet mang một nội dung khác nhau Tuy nhiên, định dạng của các portlet là giống nhau Có thể chia portlet làm 2 loại : portlet rộng và portlet hẹp Portlet rộng có độ rộng là 536 pixel, còn portlet hẹp có độ rộng là 214 pixel Chiều dài của các portlet này tùy thuộc vào chức năng mà nó thực hiện Dưới đây là minh hoạ cho một portlet:
Trang 20): nếu bạn nút này, đ Bạn có th
1: Ví dụ về
ortlet iêu đề và cdung: hiển khi nhấn và
ác portlet k: khi nhấn
nh công cụtừng port
ng có thể t
n thị cho po
ại
ạn nhấn vnày được d
muốn di cđồng thời k
hể click vào
ề một Portl
ác nút thaothị nội dun
ào nút nàykhác sẽ đượnút này th
tlet sẽ có thay đổi mortlet đó,
ào nút hoặdùng để kh
chuyển porkéo chuột đ
ặc thì các hôi phục lạ
rtlet đến mđến vị trí mhận được tr
ortlet rtlet
ổ portlet sẽportlet sẽ t
rợ giúp
ẽ có độ thu nhỏ
là các ạng như hiển thị
sẽ được ban đầu khác thì
ra
Trang 213 Giới thiệu về chuẩn JSR 168
JSR 168 – viết đầy đủ là Java Specification Request 168 Đây là chuẩn được phê chuẩn tháng 10 năm 2003, phát triển bởi Java Community Process nhằm hoàn tất các thao tác giữa các bộ phận của Portal và Portlet, chuẩn này giúp đơn giản hóa việc phát triển các ứng dụng portlet và cho phép các nhà phát triển tạo các thành phần ứng dụng có khả năng “cắm và chạy” trên bất kỳ nền
tảng hệ thống J2EE Portal nào
3.1 Những nền tảng chung của Portlet
Một server portal quản lý các yêu cầu của client Giống như một ứng dụng Web phía máy chủ có một web container để quản lý việc "chạy" các thành phần web (như servlets, jsps, bộ lọc filters, v.v ), một portal có một portlet container
để quản lý việc chạy các Portlets Chú ý rằng hầu hết các ứng dụng web phía máy chủ, chẳng hạn như Tomcat, có thêm các tính năng bổ sung bên cạnh web container (console quản lý, CSDL người dùng, v.v), còn bao gồm vài ứng dụng web đặc biệt (chẳng hạn ứng dụng web administration)
Portal được cho là một mẫu tương tự, cung cấp ở mức cao hơn các chức năng bao quanh portlet container chúng gắn chặt với đặc tả, cho phép ứng dụng portlet trở nên khả chuyển, giống như ứng dụng web
Portlet API là một mở rộng của đặc tả servlet, điều đó có nghĩa là một portlet container cũng vậy, theo định nghĩa một web container Hình 2.2 chỉ ra stack Portal, nó xác nhận làm thế nào các phần khác nhau được xây dựng phía trên nhau để cung cấp một portal server
Trang 22Hình 2.2: Stack Portal
3.2 Định nghĩa
- Portlet một thành phần web có khả năng gắn nối (plugable) được quản
lý bởi một portlet container, cái cung cấp một cách linh động nội dung như là một phần của sự kết hợp giao diện người dùng
- Fragment Kết quả việc thực thi một portlet, một đoạn các ngôn ngữ
đánh dấu (HTML, XML ) nó gắn với một vài qui tắc
- Portlet Container Môi trường thực thi của một portlet Nó quản lý vòng
đời của portlet và quản lý các yêu cầu từ portal bằng cách triệu gọi các portlets
bên trong container
3.3 Portlets và Servlets
Portlet API là một mở rộng của servlet API Thế nên, có cả sự tương đồng
và sự khác biệt giữa các thành phần Điều này là quan trọng để hiểu những nét độc đáo (đặc thù) này để hiểu tại sao lại có một portlet đặc
Điểm tương đồng
- Portlet và Servlet đều là thành phần web J2EE
- Cả 2 được quản lý bởi container, điều khiển sự tương tác giữa chúng và vòng đời
- Mỗi cái sản sinh nội dung web động thông qua cơ chế request/response
Điểm khác biệt
Trang 23- Portlet sinh ra framents trong khi servlets sinh ra một tài liệu hoàn chỉnh
- Không giống servlet, portlet không nhảy tới trực tiếp một URL
- Portlet có một lược đồ request phức tạp hơn với 2 loại yêu cầu là: action (hành động) render (đáp ứng)
- Portlet gắn chặt đến một tập chuẩn hóa các trạng thái, modes chúng định nghĩa các thao tác ngữ cảnh và những qui tắc đáp ứng (render)
Điểm vượt trội
- Portlet có một cơ chế phức tạp hơn để truy cập và cố gắng cấu hình thông tin
- Portlet phải truy cập đến hiện trạng (profile) thông tin người dùng, ngoại trừ người dùng cơ sở và giữ chức năng cung cấp thông tin đặc tả servlet
- Portlet có thể thực hiện việc viết lại portlet, vì thế để tạo một liên kết thì nó độc lập với việc cài đặt ứng dụng portal server (nó có rất nhiều phương thức để theo dõi thông tin phiên làm việc .)
- Portlet có 2 đích sessions khác nhau trong đó lưu trữ các đối tượng: ứng dụng chung và portlet riêng tư
Điểm yếu hơn
- Portlet không thể thay đổi HTTP header hay thiết lập mã hóa các trả lời (response)
- Portlet không thể truy xuất URL mà client dùng để khởi tạo các request trên portal
- Các ứng dụng portlet là mở rộng của ứng dụng WEB Vì thế cả 2 ứng dụng được triển khai (deploy) trong file WAR (Web Archive file) và cả 2 bao gồm một file mô tả triển khai ứng dụng web (web.xml) Tuy nhiên một ứng dụng portlet còn bao gồm một file mô tả triển khai ứng dụng portlet (portlet.xml)
- Vì một ứng dụng portlet là một mở rộng của ứng dụng web, nên logic mà nói nó có thể bao gồm những thành phần ứng dụng web khác Portlet có thể sử dụng JSPs và servlets để cài đặt những tính năng của nó
3.4 Những tương tác trong Portal
Ta sẽ chỉ ra rằng làm thế nào một tương tác portal điển hình xuất hiện trước khi đi vào chi tiết làm thế nào một portlet có thể tự hoàn trả (render) với JSPs và servlet
Trang 24Hình 2.3 ở dưới chỉ ra một chuổi các sự kiện xuất hiện bên trong portal để quản lý một hồi đáp (render) điển hình của client Bên trong portal là Portlet API – phục tùng mệnh lệnh của portlet container chúng quản lý trạng thái thực thi của portlet
Hình 2.3: Sự kiện trong Portal
Container đánh giá những portlet đó thành các framents, hoặc là tạo yêu cầu (request) của portlet hoặc là lấy một fragment trong cache Sau đó, container nắm fragment đến portal server để kết hợp chúng vào trong trang portal
3.4.1 Portlet Interface và lớp GenericPortlet
Giao diện portlet định nghĩa (cách thức) thái độ mà tất cả các portlet phải thực hiện Một cách cụ thể, chúng ta nên kế thừa (extend) lớp GenericPortlet để
Trang 25xây dựng portlet, bởi nó cung cấp kiến trúc chứa tất cả những phương thức cài đặt portlet điển hình, không chỉ đơn giản những cái mình cần
3.4.2 Vòng đời Portlet
Rất giống như servlet, vòng đời một portlet được quản lý bởi container,
và có phương thức init (khởi tạo) nó được dùng để quản lý những yêu cầu khởi tạo (tạo tài nguyên, cấu hình, vv ) Portlet chỉ được tải về khi cần đến, trừ khi bạn cấu hình container để tải chúng ngay khi khởi động Phương thức init lấy một đối tượng object đã cài đặt (implement) lớp giao tiếp interface PortletConfig, cái quản lý các tham số khởi tạo và bó tài nguyên của Portlet: ResourceBundle Đối tượng này có thể được sử dụng để lấy tham chiếu đến Object đã cài đặt (implement) lớp giao tiếp PortletContext interface
Nhà phát triển portlet không hoàn toàn mất thì giờ lo lắng về sự phức tạp của biệt lệ khởi tạo (exception) portlet container, bởi thông thường chúng được lấy ra, và nhà phát triển tác động trở lại lên chúng (gỡ rối những tình huống có thể dẫn đến biệt lệ exception và sửa chúng cho chúng nếu có thể) Tuy nhiên, đáng chú ý là một unavailableException có thể xác định thời gian mà portlet sẽ không thích hợp Cả 2 đều có ích (giữ cho portlet container luôn cố gắng liên tục tải portlet) và làm không vừa lòng nhà phát triển (tại sao portlet container không tải lại portlet của tôi ?)
Phương thức destroy cung cấp một cơ may để xoá hết các tài nguyên được thiết lập ở phương thức init (khởi tạo) Điều này tương tự với portlet destroy trong servlet, và được gọi mỗi khi container tống khứ portlet Khi một exception được đưa ra trong phương thức init của portlet, thì phương thức destroy được đảm bảo là không được gọi
Tuy nhiên, nếu tài nguyên được tạo trong phương thức init() trước khi exception được đưa ra, nhà phát triển không thể mong đợi phương thức destroy dọn dẹp chúng, và phải quản lý chúng trong khối try - catch exception
3.4.3 Các trạng thái thực thi portlet (Portlet Runtime States)
Khi một portlet đang chạy, nó có một đối tượng Preferences kết hợp cho phép tuỳ biến portlet Những giá trị khởi tạo của Preferences được xác định trong
mô tả triển khai (deployment descriptor), nhưng portlet có một sự truy cập đầy
đủ một cách hệ thống đến tham chiếu của nó Khi một portlet được đặt vào một trang, một Preferences sẽ tham chiếu đến nó Sự kết đôi của portlet và đối tượng Preferences trên một trang được biết đến như là của sổ portlet
Trang 26Một trang có thể bao gồm rất nhiều những của sổ portlet như nhau bên trong hiển thị của nó Trước khi bạn bắt đầu thắc mắc tại sao tất cả các đối tượng tham chiếu Preferences Object này là cần thiết, hãy hình dung rằng điều đó cung cấp khả năng để thao tác cho tính năng chủ yếu của portal - customization (khả năng tuỳ biến)
Trong khi đối tượng tham chiếu khởi tạo portlet (Preferences Object) được tạo để xác định cấu hình và trạng thái thực thi của portlet, việc ngắt trạng thái để quản lý tuỳ biến giao diện của portlet là điều cần thiết Chẳng hạn, nói bạn có một portlet thư mục làm công (employee directory portlet) Hiển nhiên là, nó cần một vài tham chiếu mới có thể chạy được Tuy nhiên, khi employee directory portlet được nhúng vào trong trang chủ của "Hanoi Portal", nên không chỉ có một giao diện tuỳ biến, nhưng cũng có tham chiếu liên quan đến thực tế trên trang, chẳng hạn chỉ hiển thị các nhân viên của Hanoi Portal
3.4.4 Quản lý yêu cầu portlet (Portlet Request Handling)
Có 2 loại yêu cầu (request) có thể đưa ra đối với một portlet: action request
và render request (yêu cầu hành động và yêu cầu hồi đáp) Không ngẫu nhiên mà những yêu cầu (request) này đi cùng với các loại URL tương ứng: action URLs
và render URLs Một action URL nhắm tới phương thức processAction của portlet trong khi render URL hướng tới phương thức render của nó
3.4.4.1 “Chỉ có thể là một”
Nếu yêu cầu của client là action request, thì nó chỉ hướng đến một portlet, cái sẽ phải thực thi trước tiên Không có các action request khác có thể được thực thi trên portlet còn lại, chỉ có render request Hình 2.4 minh hoạ làm thế nào một portal container có thể quản lý một action request
Chúng ta đã biết, portlet container sẽ thực thi phương thức processAction() trên portlet đích, chờ đợi cho đến khi nó kết thúc trước khi nó thực thi hồi đáp (render) của những portlets còn lại trên trang Việc gọi phương thức hồi đáp render trên các portlets còn lại có thể hoàn tất theo thứ tự, và có thể hoàn tất song song
Phương thức processAction() chịu trách nhiệm việc thay đổi trạng thái trên một portlet cho trước, trong khi phương thức render chịu trách nhiệm sản sinh nội dung trình bày tương ứng (thích hợp) của portlet
Vì thế, hoàn toàn hợp lý khi một user có thể thay đổi chỉ một portlet tại một thời điểm (bạn chỉ có thể click trên một hộp), và rằng tất cả các portlets phải
Trang 27gọi hồi đáp (render) để sản sinh lại nội dung của chúng trên kết quả của action Tuy nhiên, đó không phải để nói rằng tất cả các portlet không thể thay đổi tại thời qian đã cho
Hãy xem xét ví dụ chung sau: một portal cho Simpsons Một trong những portlet cho phép bạn chọn các đặc tính của Simpson ở những trang mà bạn muốn xem Những portlet khác chứa đựng những thông tin đặc tính, hình thức vừa rồi, những câu trích dẫn lớn nhất Khi bạn chọn một đặc tính mới, bạn sẽ thay đổi trạng thái mà những đặc tính đã chọn hay portlet thông qua phương thức processAction() Trong phương thức này, qua nó, bạn sẽ soạn thảo thuộc tính chia sẽ cho trước nó xác định đặc tính của trang mà bạn tác động, chúng sẽ là nguyên nhân tất cả các portlets tự hồi đáp cho những đặc tính trên khi bạn triệu gọi phương thức render của chúng
Ghi nhớ một biệt lệ (exception) để khi một phương thức hồi đáp (render) của portlet được gọi, và khi nội dung của portlet bị giữ Portlet API cho phép những containers chọn lựa để sử dụng bản copy nội dung được lưu giữ, thay vì gọi phương thức render Portlet container không là nơi cung cấp một cách dễ dàng cache, nhưng là nguồn đầu cơ cung cấp dễ dàng nơi lưu trữ kết thúc, mà được cấu hình trong mô tả triển khai ứng dụng portlet (deployment descriptor) Người triển khai cung cấp một yếu tố kết thúc-lưu trữ trong đó user xác định số giây lưu trữ (hoặc -1 nếu không kết thúc)
Nơi lưu trữ là 1 client = 1 portlet, và không thể chia sẽ thông qua những yêu cầu của client Tất nhiên là một nhà phát triển có thể implement portlet của
họ do cache quản lý trong phương thức render, lưu trữ dữ liệu thường được yêu cầu trong PortletContext
Trang 28Hình 2.4: Minh hoạ làm thế nào một portal container có thể quản lý một action request
ActionRequest:
Như đã đề cập ở trên trong phần thảo luận về quản lý yêu cầu portlet, những yêu cầu hành động (action request) nắm giữ việc thay đổi trạng thái của một portlet dựa trên tham số yêu cầu hành động (action request) Nó được hoàn tất bằng cách sử dụng phương thức processAction(), nó lấy tham số là 2 đối tượng ActionRequest và ActionResponse Đối tượng ActionRequest tương tự như đối tượng ServletRequest cho biết
- Các tham số yêu cầu hành động (action request)
- Chế độ portlet
- Phiên làm việc của portlet
- Trạng thái cửa sổ
Trang 29- Các đối tượng tham chiếu portlet
- Ngữ cảnh portal
Để thay đổi chế độ portlet hay trạng thái cửa sổ, bạn gọi phương thức tương ứng trong đối tượng ActionResponse Sự thay đổi trở nên hiển nhiên khi phương thức render được gọi tiếp sau khi kết thúc quá trình xử lý trong phương thức processAction() Bạn cũng có thể truyền các tham số render bằng cách sử dụng đối tượng ActionResponse
- Các đối tượng tham chiếu portlet
Cũng có phương thức RenderResponse() đi kèm, nó cung cấp phương tiện cần thiết để hồi đáp nội dung Bạn có thể gọi getOutputStream() hay getWriter() như từng làm trong servlet, hay bạn có thể gửi đi (dispatch) sự sản sinh nội dung cho một servlet hay JSP
Các đối tượng request và response đều không là luồng an toàn Điều đó có nghĩa là một nhà phát triển nên tránh chia sẽ các tham chiếu cho chúng với những luồng thực thi khác Hầu hết các nhà phát triển sẽ không chú ý đến vấn đề này, nhưng hãy nhớ ghi chú nhỏ lý thú này lần sau khi bạn quyết định cố gắng làm điều gì đó không hợp lý
3.4.4.2 Lớp GenericPortlet
Lớp GenericPortlet là một lớp trừu tượng được cài đặt (implement)của giao diện portlet (interface) Đó là con đường chung nhất mà hầu hết users sẽ sử dụng để viết portlets - bằng cách kế thừa lớp này Lớp GenericPortlet kế thừa phương thức render bằng cách cài đặt tiêu đề của portlet, và sau đó gọi phương thức doDispatch() của nó, và đến lượt nó, xác định chế độ của portlet, và gọi phương thức thích hợp: doEdit() để EDIT, doView() để VIEW Ta sẽ thảo luận
về chế độ portlet sau Đoạn mã sau mô tả một lớp kế thừa GenericPortlet :