Trong quá trình xây dựng hệ thống intranet, các công nghệ và kỹ thuật sau đã
được sử dụng:
• Multi-platform: Linux, Solaris, Windows
• Platform : .NET, J2EE
• XML, SOAP, HTTP, RMI-IIOP, WSRP...
• Hệ quản trị cơ sở dữ liệu: Hypersonic, MySQL, PostgreSQL, SQL Server.
• Web application server: JBoss, TomCat, Sun ONE, webLogic, Jonas.
4. Các chuẩn dùng để phát triển hệ thống
Trong quá trình phát triển hệ thống intranet của Công ty, Công ty đã quyết định các thành phần được xây dựng cần tuân theo các chuẩn trên thế giới nếu có thểđược. Sự phát triển các thành phần dựa trên các chuẩn này có các lợi ích như sau:
• Sử dụng một chuẩn để phát triển sẽ cần ít thời gian và chi phí hơn.
• Trên thế giới đều biết đến chuẩn được sử dụng để phát triển, do đó sẽ có nhiều sự hỗ trợ hơn trong quá trình xây dựng các thành phần.
• Có nhiều mã nguồn mở được xây dựng dựa trên các tiêu chuẩn, do đó có thể tận dụng các thành phần này cho portal.
• Các thành phần được xây dựng dựa trên các chuẩn sẽ tích hợp dễ dàng hơn vào hệ thống hiện tại.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
• Để mở rộng hệ thống hiện tại trong tương lai, cần phải xây dựng các thành phần theo chuẩn.
Sau đây là các chuẩn được yêu cầu sử dụng trong quá trình phát triển hệ thống thông tin của công ty:
• Chuẩn JSR 168 dùng để xây dựng các portlet.
• Chuẩn JSR 170 để xây dựng hệ CMS.
5. Nhu cầu của công ty TMA khi xây dựng một hệ CMS
Hệ CMS được xây dựng để sử dụng trong công ty TMA phải bao gồm các chức năng của một hệ CMS thông thường. các chức năng này được mô tả như sau:
• Quản lý nội dung.
Tạo, xoá và sửa đổi nội dung.
Cập nhật nội dung.
• Quản lý vai trò
Tạo, xoá, sửa đổi vai trò.
Cập nhật thông tin của vai trò.
Cho phép vai trò đăng nhập vào hệ thống.
Ngăn cấm vai trò đăng nhập vào hệ thống.
• Phân quyền cho các vai trò.
Mỗi vai trò có thể có nhiều quyền khác nhau và các quyền này được gán cho vai trò bởi người quản lý web site.
Các quyền này có thể là đọc, ghi, đọc và ghi…
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Tạo, xoá bỏ, sửa đổi thông tin người sử dụng.
Cập nhật thông tin người sử dụng.
Cho phép người sử dụng đăng nhập vào hệ thống.
Ngăn cấm người sử dụng đăng nhập vào hệ thống.
• Gán các vai trò cho người sử dụng.
Do trong một tổ chức tồn tại rất nhiều phòng ban và vị trí công việc khác nhau, do đó cần phải phân chia vai trò cho từng người sử dụng khác nhau trên hệ thống tuỳ thuộc vào từng phòng ban và vị trí công việc của họ.
Một người sử dụng có thể có nhiều vai trò khác nhau trong hệ thống và các vai trò này được gán bởi người quản lý web site.
• Sử dụng các template cho các trang web: các trang web cần phải đồng bộ
với nhau về cách thức hiển thị, do đó cần phải sử dụng các template giống nhau cho toàn bộ web site.
• Phân loại nội dung: điều này là cần thiết để tránh tình trạng dữ liệu bị sắp xếp không theo trật tự và để có thể tìm kiếm dễ dàng thông tin cần thiết.
• Tìm kiếm thông tin: do nội dung trang web và các thông tin liên quan ngày càng nhiều, do đó cần phải có cơ chế tìm kiếm thông tin để hỗ trợ
các nhân viên trong các trường hợp cần thiết.
• Thay đổi các thông số cấu hình: hệ thống này cho phép thay đổi các thông tin cấu hình để tối ưu hoá hoạt động của hệ thống.
Ngoài các nhu cầu cầu của một hệ CMS thông thường, công ty TMA còn có 2 nhu cầu như sau:
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
5.1 Nhu cầu chia sẻ thông tin giữa các dự án và các vị trí công việc việc
Trong công ty TMA có rất nhiều dự án và trong mỗi dự án lại tồn tại nhiều vị trí công việc khác nhau, bao gồm có 3 vị trí như sau:
• Quản lý dự án.
• Quản lý nhóm.
• Thành viên bình thường.
Mỗi dự án sở hữu các thông tin riêng về dự án đó và các công việc họđang thực hiện. Một phần các thông tin này có thể cho phép mọi người trong công ty đều có thể
xem được. Phần còn lại chỉ cho phép các thành viên trong nhóm có thể truy cập vào thôi.
Mỗi dự án có một người phụ trách cập nhật thông tin về dự án đó. Người này thông thường là trưởng dự án hoặc trưởng nhóm. Người này có quyền thực hiện một số
thao tác như: tạo, xoá bỏ, sửa đổi…các thông tin của nhóm trên intranet. các thành viên khác của nhóm chỉ có quyền xem trên các thông tin của nhóm.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
5.2 Xây dựng hệ CMS dưới dạng một portlet có thể được sử
dụng bởi các ứng dụng và các thành phần khác
Như đã trinh bày như trên, chúng ta biết rằng hệ CMS xây dựng là một thành phần phi chức năng dùng để cung cấp chức năng cho các ứng dụng, các dịch vụ, các thành phần chức năng khác. Do đó, cần phải xây dựng hệ CMS dưới dạng một portlet
để có thể sử dụng bởi các ứng dụng và các thành phần khác trên intranet.
5.3 Các kỹ thuật sử dụng trong quá trình phát triển
Do hệ CMS này được xây dựng để tích hợp vào hệ thống thông tin có sẵn của công ty TMA dưới dạng một portlet. Do đó, có một số quy định trong quá trình phát triển hệ CMS này như sau:
• Hệ CMS này phải được xây dựng dưới dạng một portlet: điều này cần thiết để tích hợp vào portal hiện tại của Công ty.
• Hệ CMS này phải tuân theo chuẩn JSR 168: do chuẩn JSR 168 là chuẩn dùng để tích hợp một portlet vào portal.
• Hệ CMS phải được lập trình bằng Java: portal hiện tại của công ty được lập trình bằng Java và các portlet trên portal tuân theo chuẩn JSR 168.
• Hệ CMS phải được xây dựng dựa trên các giải pháp mã nguồn mở và miễn phí.
• Sử dụng chuẩn JSR 170 để xây dựng hệ thống này nếu có thể được: do chuẩn JSR 170 là chuẩn dùng để hỗ trợ việc xây dựng các hệ CMS, việc xây dựng hệ thống này nên tuân theo chuẩn JSR 170 để có thể mở rộng hệ thống này trong tương lai nếu có nhu cầu.
• Hệ thống này phải có khả năng hoạt động trên nền Linux: portal hiện tại của công ty hoạt động trên Linux.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
• Hệ thống này phải có khả năng họat động trên application server JBoss: do portal hiện tại của công ty hoạt động trên JBoss.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Chương 5
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
1. Giới thiệu về chuẩn JSR 168
Chuẩn JSR 168 dùng để định nghĩa portlet và cách thức giao tiếp giữa portlet và portal.
Phiên bản hiện tại của chuẩn này là 1.0 được đưa ra bởi Sun Microsystems vào ngày 29/08/2003. (http://jcp.org/en/jsr/detail?id=168)
Hình 15: Mô hình chuẩn JSR 168
Hình trên mô tả sự giao tiếp giữa portal và các portlet. Sự giao tiếp này được thực hiện thông qua các API được cung cấp bởi chuẩn JSR 168.
Portlet Portlet Portlet Portlet Portlet API API API AP I API JSR-168
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
2. Một số khái niệm chính 2.1 Portal
Portal là một ứng dụng Web dùng để tích hợp các nội dung từ các nguồn khác nhau vào cùng một trang Web. Các nội dung có thểđược cấu hình tùy thuộc vào từng người sử dụng khác nhau mà Portal cho phép. Một Portal có thể chứa nhiều Portlet
2.2 Portlet
Portlet là một thành phần (component) dựa trên nền Web sử dụng các công nghệ
của Java. Portlet được quản lý bởi một Portlet Container. Portlet dùng để xử lý các yêu cầu và tạo ra các thành phần dữ liệu động để phản hồi yêu cầu.
Portlet có thể tích hợp vào Portal và Portal sẽ cung cấp một tầng trình diễn cho các thành phần của Portlet.
Nội dung được tạo ra bởi Portlet được gọi là Fragment. Một Fragment là một mảnh dữ liệu được tạo bởi các ngôn ngữ như: HTML, XHTML, WML… theo một
định dạng được quy định. Các Fragment này có thểđược kết hợp với các Fragment của các Portlet khác để hình thành trang Web của Portal.
Người sử dụng tương tác với Portlet thông qua cơ chế yêu cầu/phản hồi được cung cấp bởi Portlet. Nội dung phản hồi yêu cầu được Portlet tạo ra và nội dung này cũng tùy thuộc vào cấu hình ứng với từng người sử dụng.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
2.3 Portlet Container
Porlet Container cung cấp một môi trường lúc Runtime chứa đựng và quản lý chu kỳ sống của một Portlet.
Portlet Container nhận yêu cầu từ Portal và chuyển yêu cầu này đến Portlet tương ứng để Portlet xử lý yêu cầu và tạo nội dung phản hồi.
3. So sánh Portlet và Servlet
3.1 Điểm giống nhau giữa Portlet và Servlet
• Cùng là thành phần Web sử dụng công nghệ của Java.
• Được chứa đựng và quản lý bởi một Container.
• Tạo ra nội dung dữ liệu động để phản hồi lại yêu cầu.
• Cùng tương tác với người sử dụng thông qua cơ chế yêu cầu/phản hồi.
3.2 Điểm khác nhau giữa Portlet và Servlet
• Portlet chỉ tạo ra các Fragment chứ không tạo ra toàn bộ tài liệu. Portal sẽ
tập hợp các Fragment do Portlet tạo ra thành nội dung của trang Web trên Portal..
• Không cần phải kết hợp một Portlet với một địa chỉ URL như Servlet
• Người sử dụng tương tác với Portlet thông qua Portal.
• Portlet có thể được sử dụng nhiều nơi trên cùng một trang Web của Portal.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
3.3 Đặc trưng của Portlet mà không có ở servlet
• Portlet cho phép truy cập và lưu trữ cầu hình và tối ưu hoá dữ liệu.
• Portlet cho phép truy cập vào các thông tin về người sử dụng.
• Portlet hỗ trợ chức năng viết lại URL ( URL Rewriting Function ) cho phép tạo ra liên kết trong nội dung của nó.
• Portlet có thể lưu trữ dữ liệu tạo thời trong phiên làm việc của Portlet ở 2 phạm vi: Phạm vi ứng dụng và Phạm vi cá nhân.
4. Giao diện portlet
Giao diện Portlet khai báo các API cơ bản nhất của một Portlet. Mọi Portlet
được xây dựng đều phải hiện thực hoá trực tiếp hoặc gián tiếp giao diện Portlet.
Lớp GenericPortlet hiện thực hoá giao diện Portlet và định nghĩa các chức năng cơ bản nhất mà một Portlet cần có. Do đó, khi xây dựng Portlet, lập trình viên nên mở
rộng trực tiếp hoặc gián tiếp lớp GenericPorlet này.
Một Portlet được quản lý thông qua chu trình sống của nó, bắt đầu từ lúc Portlet
được tải lên, tạo thể hiện của nó và khởi tạo, hoạt động để phản hồi yêu cầu của người sử dụng đến lúc nó được loại bỏ. Các phương thức được gọi đến trong chu trình sống của Portlet là:
• Gọi phương thức init trong quá trình khởi tạo của Portlet
• Nếu yêu cầu do máy khách gởi tới là yêu cầu hành động (Action Request) thì phương thức processAction được gọi. Nếu yêu cầu do máy khách gởi tới là yêu cầu biểu hiện (Render Request) thì phương thức processAction được gọi.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
• Khi Portlet Container xác định một Portlet không còn sử dụng nữa thì gọi
đến phương thức destroy của Portlet đó. Khi phương thức destroy được gọi thì Portlet sẽ giải phóng tài nguyên hệ thống mà nó đang sử dụng và lưu lại trạng thái hiện thời của nó.
5. Portlet URL
Một Portlet có thể tạo ra URL tham chiếu đến chính Portlet đó. Khi đó các URL này được gọi là Portlet URL.
Để tạo ra một Portlet URL thì Porlet cần phải sử dụng đối tượng PorletURL. Nếu phương thức createActionURL được gọi thì sẽ tạo ra một URL hành động và nếu phương thức createRenderURL được gọi thì tạo ra một URL trình diễn.
6. Portlet Mode
Kiểu Portlet xác định chức năng mà Portlet hiện đang thực hiện. Thông thường, Portlet thực hiện các tác vụ và tạo ra nội dung tùy thuộc vào chức năng hiện thời. Kiểu Portlet cho biết những tác vụ nào một Portlet cần thực hiện và những nội dung nào Portlet cần phải tạo ra.
Có 3 kiểu Portlet được quy định là:
• VIEW
Chức năng chính của Portlet khi sử dụng kiểu VIEW là tạo ra nội dung cho biết trạng thái của Portlet
Lập trình viên sẽ hiện thực hóa kiểu VIEW bằng cách định nghĩa lại phương thức doView của lớp GenericPortlet.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Mọi Portlet đều phải hỗ trợ kiểu VIEW
• EDIT
Trong kiểu EDIT, một Portlet sẽ cung cấp nội dung và cấu hình các thành phần của nó để người sử dụng có thể tối ưu hóa họat động của Portlet
Lập trình viên sẽ hiện thực hóa kiểu EDIT bằng cách định nghĩa lại phương thức doEdit của lớp GenericPortlet.
Mọi Portlet không nhất thiết phải hỗ trợ kiểu VIEW
• HELP
Trong kiểu HELP, Portlet cung cấp những thông tin giúp đỡ người sử
dụng về Portlet. Những thông tin này có thể là những thông tin chung về toàn bộ Portlet hoặc là các giúp đỡ cảm ngữ cảnh (Context- sensitive help)
Các hằng số tượng trưng cho 3 kiểu Portlet được khai báo trong lớp PortletMode
7. Window State
Trạng thái cửa sổ cho biết khoảng không gian trên trang Web Portal dành cho nội dung của Portlet.
Có 3 trạng thái cửa sổđược định nghĩa :
• NORMAL: cho biết Porlet có thể chia sẻ trang Portal với các Portlet khác. Ngoài ra, trạng thái này còn cho biết giới hạn hiển thị của thiết bị
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
• MAXIMIZED: cho biết chỉ có một Portlet hiển thị trên trang Portal hoặc Portlet được ưu tiên hiển thị nội dung nhiều hơn các Portlet còn lại.
• MINIMIZED: Cho biết nội dung của Portlet chỉ được hiển thị ít nhất có thểđược hoặc không được hiển thị.
Các trạng thái cửa sổđược định trong lớp WindowState.
8. Portlet Request
Một yêu cầu gởi đến Portlet chứa các thông tin về yêu cầu từ phía máy khách, các tham số của yêu cầu, nội dung dữ liệu yêu cầu, kiểu Portlet, trạng thái cửa sổ…
Yêu cầu được đại diện bởi một đối tượng và đối tượng này được truyền vào như
là đối số của phương thức processAction hay render.
Mỗi đối tượng yêu cầu chỉ có thể họat động trong phạm vi của một phương thức processAction hay render
Các chức năng cần thiết của đối tượng PortletRequest được khai báo trong giao diện PortletRequest.
9. Portlet Response
Một phản hồi của Portlet bao gồm những thông tin được tạo ra bởi Portlet gởi trả về cho Portlet Container dựa trên yêu cầu được gởi đến như: sự thay đổi kiểu Portlet, tiêu đề, nội dung… Portlet Container sẽ sử dụng những thông tin này để tạo ra phản hồi đến người sử dụng, thông thường là một trang Web Portal.
Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA
Mỗi đối tượng phản hồi chỉ có thể họat động trong phạm vi của một phương thức processAction hay render
Các chức năng cần thiết của đối tượng Portlet Response được khai báo trong giao diện PortletResponse.
10. Portlet Preferences
Portlet thông thường được cấu hình cho phù hợp với từng người sử dụng. Các thông tin về cấu hình của Portlet được gọi là Portlet Preference. Và Portlet Container