3.4.2. Đặc tả Use-Case của bài toán
3.4.2.1. Tác nhân
a) User: Người dùng thông thường, được quyền duyệt bản đồ mạng lưới trường học, tra cứu thông tin các điểm trường, góp ý và liên hệ với ban quản trị hệ thống hoặc các đơn vị giáo dục (Sở Giáo dục và Đào tạo tỉnh, Phòng Giáo dục và đào tạo các huyện thị, các trường học).
b) User-Register: Là các thành viên của hệ thống (chính là những người dùng có tài khoản trong cơ sở dữ liệu của cổng thông tin điện tử ngành Giáo dục và Đào tạo tỉnh Ninh Bình), ngoài quyền truy cập giống như người dùng thông thường còn được quyền truy cập các điểm trường hoặc các thông tin chỉ dành cho thành viên. Trong thiết kế, hệ thống cho phép người quản trị tự tạo ra các bản đồ mạng lưới trường học theo mục đích riêng, ngoài bản đồ mặc định sẽ được hiển thị tại khu vực chính của giao diện người dùng để phục vụ yêu cầu tra cứu và quản lý toàn bộ mạng lưới trường học trong tỉnh, người quản trị có thể tạo ra các bản đồ theo những yêu cầu đặc biệt ví dụ bản đồ có các thông tin đặc biệt chỉ dành cho công tác quản lý, bản đồ giáo dục chi tiết hơn đối với một huyện (dùng cho Phòng Giáo dục và Đào tạo các huyện, thị). Chỉ các thành viên đăng ký, với mức độ quyền hạn của mình có thể truy cập và thao tác trên các dữ liệu riêng này. Thành viên của hệ thống được chia thành các mức quyền hạn khác nhau:
- Thành viên thông thường: Mức thấp nhất của các thành viên trong hệ thống, được quyền truy cập và sử dụng các chức năng giống người dùng thông thường; được truy cập thêm một số thông tin trong phạm vi cho phép; được gửi bài cho các trường, các Phòng Giáo dục và Đào tạo, Sở Giáo dục và Đào tạo.
- Thành viên quản trị điểm trường: Ngoài các chức năng như thành viên thông thường, thành viên quản trị điểm trường có thêm khả năng cập nhật thông tin điểm trường của mình.
- Thành viên quản trị cấp huyện: Ngoài chức năng như thành viên thông thường, thành viên này có quyền hạn cập nhật các điểm trường và thông tin các điểm trường trong phạm vi huyện, thị mà mình phụ trách.
- Thành viên quản trị cấp tỉnh: Ngoài chức năng như thành viên thông thường, thành viên này còn được quyền cập nhật các điểm trường và thông tin các điểm trường trong phạm vi toàn tỉnh.
- Thành viên quản trị hệ thống: Được toàn quyền truy cập hệ thống, chỉnh sửa, cấu hình, cài đặt hệ thống, tạo các bản đồ và cập nhật điểm trường và thông tin điểm trường trên toàn tỉnh.
3.4.2.2. Use-case Duyệt bản đồ: Duyệt bản đồ:
- Xem bản đồ toàn cảnh;
- Xem bản đồ ở dạng mặc định hoặc dạng ảnh vệ tinh, dạng hỗn hợp; - Phóng to, thu nhỏ bản đồ;
- Điều hướng bản đồ, di chuyển bản đồ;
- Tìm vị trí một điểm trường, một địa danh, trung tâm một xã, một huyện trên bản đồ;
- Xem thông tin chi tiết tại một điểm trường trên bản đồ.
Gửi bài đến thành viên quản trị của trường, Phòng và Sở GD&ĐT:
- Đăng nhập hệ thống;
- Gửi bài viết, thông tin đến thành viên lựa chọn qua email hoặc hệ thống tin nhắn nội bộ.
Quản trị điểm trường:
- Duyệt bản đồ, xác định vị trí điểm trường;
- Cập nhật thông tin chi tiết của điểm trường qua hệ thống quản trị.
Quản trị các điểm trường trong phạm vi huyện, thị:
- Duyệt bản đồ, di chuyển tâm vùng hiển thị đến trung tâm huyện;
- Cập nhật các điểm trường và thông tin chi tiết của các điểm trường trong phạm vi huyện.
Quản trị điểm trường trong phạm vi toàn tỉnh:
- Duyệt bản đồ, di chuyển tâm vùng hiển thị đến trung tâm tỉnh hoặc duyệt bản đồ ở chế độ mặc định;
- Cập nhật các điểm trường và thông tin chi tiết của các điểm trường trong phạm vi toàn tỉnh.
Quản trị hệ thống:
- Duyệt bản đồ, di chuyển tâm vùng hiển thị đến trung tâm tỉnh hoặc duyệt bản đồ ở chế độ mặc định;
- Cập nhật các điểm trường và thông tin chi tiết của các điểm trường trong phạm vi tỉnh;
3.4.3. Xây dựng mã nguồn cho ứng dụng
3.4.3.1. Cơ sở dữ liệu
Do được xây dựng dưới dạng một thành phần ứng dụng bổ sung cài đặt vào hệ thống quản trị nội dung Joomla, ứng dụng được phép sử dụng các tài nguyên và dữ liệu có sẵn của Joomla, chúng ta chỉ cần tạo thêm các bảng để lưu trữ cơ sở dữ liệu riêng của ứng dụng. Trong phiên bản thứ hai của ứng dụng, có 08 bảng được bổ sung vào cơ sở dữ liệu Joomla. Thông tin xây dựng cơ sở dữ liệu của các bảng này được mô tả chi tiết tại Phụ lục 1 của luận văn, sau đây chúng ta sẽ tìm hiểu sơ bộ về các bảng này.
Hình 3.7: Mô hình thiết kế cơ sở dữ liệu ứng dụng
- nb_gmaps_adapters: Bảng lưu dữ liệu bổ sung từ bên ngoài vào bản đồ.
- nb_gmaps_category: Bảng lưu dữ liệu liên quan tới việc phân loại trong ứng dụng bản đồ, cụ thể trong ứng dụng này là các loại hình trường học.
- nb_gmaps_config: Bảng lưu dữ liên quan tới cấu hình ứng dụng, bao gồm các thông số cài đặt ứng dụng, các thông số mặc định của bản đồ.
- nb_gmaps_icons: Bảng lưu dữ liệu quản lý hình ảnh, biểu tượng dùng trong bản đồ.
- nb_gmaps_maps: Bảng chứa dữ liệu quản lý các bản đồ trong ứng dụng.
- nb_gmaps_markers: Bảng chứa dữ liệu liên quan tới tầng dữ liệu bổ sung cho bản đồ như điểm đánh dấu, đường, khoanh vùng, … Trong ứng dụng cụ thể này, bảng dùng để lưu trữ các điểm trường.
- nb_gmaps_points: Bảng lưu dữ liệu quản lý các thẻ trong cửa sổ thông tin điểm trường, bổ trợ cho bảng nb_gmaps_markers.
- nb_gmaps_sysadapters: Bảng lưu trữ các dữ liệu bổ sung từ các ứng dụng khác trong cùng hệ thống.
3.4.3.2. Kiến trúc mã nguồn
Theo mô hình kiến trúc Joomla và khung làm việc Joomla, các ứng dụng bổ sung được hỗ trợ xây dựng theo mô hình kiến trúc Model-View-Controller (MVC). Như vậy, để phát triển ứng dụng WebGIS quản lý trường học tích hợp vào Joomla dưới dạng một thành phần ứng dụng bổ sung, tác giả xây dựng mã nguồn từ khung làm việc Joomla tuân theo kiến trúc MVC. Trong giai đoạn đầu nghiên cứu về Google Maps API, tác giả sử dụng Javascript API phiên bản 2 để phát triển ứng dụng. Sau khi Google công bố Javascript API phiên bản 3 với những cải thiện đáng kể, tác giả đã chuyển sang xây dựng ứng dụng phiên bản 2 hoàn toàn mới sử dụng Google Map Javascript API phiên bản 3. Đây là một ứng dụng WebGIS động, mã API của Google được nhúng trong mã lập trình PHP chạy phía máy chủ, toàn bộ dữ liệu hiển thị khi chạy ứng dụng được chuyển cho quản trị hệ thống tạo ra và được lưu trong cơ sở dữ liệu MySQL. Như vậy, chúng ta có thể sử dụng phần mềm để tạo ra các ứng dụng với mục đích khác nhau, không những là thành phần ứng dụng bổ sung cho Joomla phục vụ việc quản lý mạng lưới trường học mà phần mềm có thể xây dựng cá ứng dụng bản đồ khác theo mục đích của người quản trị hệ thống.
Mã nguồn của ứng dụng tuần theo mô hình MVC và quy tắc xây dựng ứng dụng bổ sung cho Joomla. Joomla hỗ trợ 3 lớp theo mô hình MVC gồm
Jmodel, Jview và Jcontroller [15].
- Kiến trúc của một thành phần ứng dụng bổ sung đơn giản: Giả sử ta đặt tên cho một ứng dụng mới tạo là hello, như vậy khi cài đặt vào hệ thống, Joomla sẽ tạo ra các thư mục con cùng mang tên com_hello đặt trong thư mục components của cả trang chủ và trang quản trị. Thư mục com_hello trong trang
chủ và trang quản trị có kiến trúc giống nhau, tuy nhiên chúng thực hiện nhiệm vụ khác nhau, kiến trúc mã nguồn cơ bản gồm các thư mục và tập tin:
+ com_hello/hello.php là tập tin tiếp nhận yêu cầu và gọi các thành phần thực thi trong ứng dụng.
+ com_hello/controller.php là tập tin chứa các thành phần điều khiển cơ bản cho ứng dụng.
+ com_hello/views/hello/view.html.php là tập tin khai thác dữ liệu cần thiết và nạp vào các tập tin giao diện.
+ com_hello/views/hello/tmpl/default.php là tập tin chứa các đoạn mã kết xuất được về dạng HTML sử dụng làm giao diện hiển thị.
+ hello.xml là tập tin giao tiếp với Joomla để cung cấp các tham số giúp Joomla cài đặt ứng dụng.
Đối với các ứng dụng thực tế, ta có thể sử dụng lớp JViews linh hoạt để tiện cho việc hỗ trợ đổi giao diện và ngôn ngữ cho hệ thống, cũng theo đó kiến trúc thư mục và tập tin có một số thay đổi để phù hợp với mô hình MVC.
- Xây dựng một Model cho ứng dụng: Trong thư mục chính của ứng dụng, chúng ta cần tạo thư mục con models và tạo tập tin mô hình có tên trùng với tên của ứng dụng, cụ thể là com_hello/models/hello.php, ví dụ nhỏ về tập tin này như sau:
<?php
//Hello Model for Hello World Component // No direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.model' ); // Hello Model
class HelloModelHello extends JModel {
function getGreeting() {
return 'Hello, World!'; }
} ?>
Khi lập trình hệ thống, khung làm việc Joomla hỗ trợ các trình điều khiển để tự động tải mô hình cùng tên với ứng dụng thông qua phương thức
JView::getModel().
- Sử dụng cơ sở dữ liệu:Toàn bộ cơ sở dữ liệu của ứng dụng được lưu trữ trong cơ sở dữ liệu chung của Joomla thông qua việc sử dụng các đối tượng dữ liệu và các lớp thao tác trên cơ sở dữ liệu đã có của Joomla, dữ liệu của ứng dụng được lưu tại các bảng được tạo thêm trong cơ sở dữ liệu của Joomla.
Sử dụng phương thức getDBO trong lớp Jfactory để truy cập các đối tượng cơ sở dữ liệu trong hệ thống, đoạn mã dưới đây là ví dụ về việc tạo và thao tác với dữ liệu trong cơ sở dữ liệu hệ thống
Tạo bảng __hello trong cơ sở dữ liệu Joomla:
DROP TABLE IF EXISTS `#__hello`;
CREATE TABLE `#__hello` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `greeting` VARCHAR(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'), ('Bonjour, Monde!'), ('Ciao, Mondo!');
Thao tác với cơ sở dữ liệu:
function getGreeting() {
$db =& JFactory::getDBO();
$query = 'SELECT greeting FROM #__hello'; $db->setQuery( $query );
$greeting = $db->loadResult();
return $greeting; }
- Tạo giao diện quản trị hệ thống: Như quản điểm đã trình bày liên quan tới yêu cầu về tính động của ứng dụng, toàn bộ cài đặt và cơ sở dữ liệu ứng dụng phía người dùng được tạo ra bởi người quản trị hệ thống, lập trình viên chỉ xây dựng phần mềm có các chức năng cần thiết để người quản trị có thể thực hiện các yêu cầu xây dựng dữ liệu cho ứng dụng. Một ứng dụng bổ sung cho Joomla thường có cấu trúc thư mục như sau:
Thư mục chứa ứng dụng người dùng: <root>/components/com_hello Thư mục chứa ứng dụng quản trị:
<root>/administrator/components/com_hello
Hai thư mục này có cùng kiến trúc và nguyên tắc xây dựng, chúng có liên hệ với nhau, cùng sử dụng môi trường ứng dụng người dùng và quản trị của Joomla [15].
3.5. Cài đặt và chạy thử ứng dụng
Yêu cầu tối thiểu để cài đặt và sử dụng phần mềm bao gồm máy chủ đã được cài đặt PHP 5.2.x hoặc cao hơn, MySQL 5.0.x, do đây là ứng dụng viết dưới dạng thành phần bổ sung cho Joomla nên máy chủ cần phải được cài đặt sẵn hệ quản trị nội dung Joomla 1.5.x. Ngoài ra, trong quá trình chạy, ứng dụng dùng dữ liệu bản đồ Google Map, thư viện Google Map Javascript API và các
thư viện liên quan, vì vậy nếu cài đặt ứng dụng tại máy cá nhân để thử nghiệm thì máy đó cần phải có kết nối Internet. Sau đây chúng ta sẽ tiến hành các công việc cần thiết để cài đặt và chạy thử nghiệm ứng dụng tại máy tính cá nhân.
Do Joomla là phần mềm mã nguồn mở, viết trên các công cụ mã nguồn mở thông dụng nên hệ quản trị nội dung này có thể chạy trên nhiều môi trường hệ điều hành khác nhau, tương thích với các máy chủ web thông dụng như IIS hoặc Apache, để tiết kiệm thời gian cài đặt và cấu hình, trong thử nghiệm này tác giả sử dụng phần mềm XAMPP 1.6.4 đã tích hợp đủ các phần mềm cần thiết để cài đặt Joomla bao gồm máy chủ web Apache 2.x cho windows, PHP 5.2.4, MySQL server 5.0.45. Tải miễn phí XAMPP cho Windows tại địa chỉ http://www.apachefriends.org/en/xampp-windows.html, sau khi cài đặt XAMPP theo hướng dẫn đi kèm, chúng ta đã có một máy chủ hoàn chỉnh phục vụ cho việc thử nghiệm [12].
3.5.1. Cài đặt ứng dụng
- Trước khi cài đặt ứng dụng, ta cần cài đặt Joomla làm website chính của hệ thống. Tải Joomla tại địa chỉ http://joomla.org sau đó cài đặt vào máy chủ localhost theo địa chỉ http://localhost/ninhbinh. Sau khi cài đặt Joomla, chúng ta cần cấu hình Joomla theo những hướng dẫn đi kèm bao gồm các tùy chỉnh về giao diện, ngôn ngữ, các thành phần ứng dụng đi kèm [15].
- Ứng dụng đóng gói hoàn chỉnh được cài đặt vào Joomla thông qua chức năng cài đặt thành phần ứng dụng bổ sung. Việc cài đặt ứng dụng thực được thực hiện tự động thông qua tập tin .xml nằm trong ứng dụng. Sau khi cài đặt xong ứng dụng, chúng ta cần sử dụng chức năng quản lý trình đơn của Joomla để bổ sung liên kết truy cập ứng dụng trong menu của website chính. Trong thực nghiệm này, tác giả lựa chọn ứng dụng quản lý trường học là ứng dụng hiển thị mặc định trên trang chính của Joomla tại địa chỉ http://localhost/ninhbinh; khu vực quản trị của Joomla tại địa chỉ http://localhost/ninhbinh/administrator cũng sẽ hiển thị mặc định giao diện quản trị ứng dụng sau khi người dùng đăng nhập.
3.5.2. Cập nhật dữ liệu
Sau khi cài đặt thành công ứng dụng WebGIS, chúng ta chưa có dữ liệu hiển thị, các chức năng xây dựng dữ liệu hiển thị phía người dùng đã được cung cấp sẵn trong khu vực quản trị hệ thống để người quản trị hoàn toàn chủ động tạo ra dữ liệu theo mục đích cụ thể. Để xây dựng dữ liệu hiển thị phía người dùng, người quản trị hệ thống cần tạo ra một hoặc một số bản đồ theo các nhóm
khác nhau; tạo ra các điểm trường và gắn các điểm trường với các bản đồ, cụ thể quy trình cập nhật dữ liệu trong khu vực quản trị ứng dụng như sau:
3.5.2.1. Bảng công cụ quản trị ứng dụng
Khu vực quản trị ứng dụng cung cấp một bảng gồm các công cụ cho phép người quản trị có thể thực hiện các thao tác cấu hình, cập nhật dữ liệu bản đồ, điểm trường, loại hình trường, …
Hình 3.8: Bảng công cụ quản trị ứng dụng
Tùy vào quyền hạn của người quản trị mà họ có thể được sử dụng một trong các chức năng được cung cấp trong khu vực này.
3.5.2.2. Cấu hình ứng dụng
Chức năng cấu hình ứng dụng chỉ dành cho người quản trị tối cao của hệ thống, bao gồm các chức năng cho phép thiết lập các thông số cơ bản sử dụng mặc định trong ứng dụng, các thông số này được lưu trong bảng
nb_gmaps_config thuộc cơ sở dữ liệu, cụ thể các nhóm chức năng thiết lập cấu hình bao gồm:
- Cấu hình địa chỉ ứng dụng dạng URL, ví dụ: http://localhost/ninhbinh. - Các thông số mặc định của bản đồ dùng trong ứng dụng: Bao gồm các thông số cung cấp cho Google Map API hiển thị bản đồ cho ứng dụng như kiểu bản đồ, độ phóng đại, kích thước mặc định của bản đồ, …