Spring Framework là một ứng dụng mã nguồn mở phổ biến cho Java EE phát triển dễ dàng hơn. Nó bao gồm một container, một framework cho các thành phần quản lý, và một bộ các snap-in dịch vụ cho các giao diện ngƣời dùng web, giao dịch,…. Một phần của Spring Framework là Spring Web MVC, một mô hình MVC mở rộng để tạo các ứng dụng web [30].
MVC Framework thì cài đặt đầy đủ đặc tính của MVC pattern để xây dựng các ứng dụng Web. MVC framework thì cấu hình thông qua giao diện và chứa đƣợc một số kỹ thuật view bao gồm: JSP, Velocity, Tiles và generation of PDF và Excel file. . Spring MVC framework cung cấp sự phân biệt rõ ràng giữa domain model và web form.
51
Lý do sử dụng:
Tất cả các framework đã đƣợc tích hợp rất tốt vào Spring.
Hoạt động rất tốt khi áp dụng theo kiến trúc MVC.
Sử dụng cơ chế plug-in.
Kết hợp rất tốt với các O/R (object-relational) Mapping frameworks nhƣ là Hibernate.
Dễ Testing ứng dụng.
Ít phức tạp hơn so với các framework khác.
Cộng đồng ngƣời sử dụng rất nhiều, nhiều sách mới đƣợc xuất bản.
Spring Web MVC.
Mô hình MVC.
Hình 4.3: Mô hình Spring MVC [26]
Model (Mô hình): Mô hình gồm các lớp java có nhiệm vụ:
Biểu diễn data và cho phép truy cập tới để get và set data trong (JAVABEAN), Thƣờng thì phần layer này mô phỏng 1 cách đầy đủ đối tƣợng từ thế giới thực.
52
Thi hành các yêu cầu đó (tính toán, kết nối CSDL …)
Trả về các giá trị tính toán theo yêu cầu của Controller
View (khung nhìn): Bao gồm các mã tƣơng tự nhƣ JSP, HTML, CSS, XML, Javascript, JSON… để hiển thị giao diện ngƣời dùng, các dữ liệu trả về từ Model thông qua Controller…
Controller (Bộ điều khiển): Đồng bộ hoá giữa Khung nhìn và Mô hình. Tức là với một trang JSP này thì sẽ tƣơng ứng với lớp java nào để xử lý nó và ngƣợc lại, kết quả sẽ trả về trang jsp nào. Nó đóng vai trò điều tiết giữa View và Model. Nhƣ vậy, chúng ta có thể tách biệt đƣợc các mã java ra khỏi mã html. Do vậy, nó đã giải quyết đƣợc các khó khăn đã nêu ra trong Mô hình 1. Ngƣời thiết kế giao diện và ngƣời lập trình java có thể mang tính chất độc lập tƣơng đối. Việc debug hay bảo trì sẽ dễ dàng hơn, việc thay đổi các theme của trang web cũng dễ dàng hơn …
Spring MVC.
Framework Spring nhƣ thùng chứa nhẹ và hỗ trợ nhiều framework và các thƣ viện. Nó cho phép các nhà phát triển trộn và kết hợp nhiều framework khi phát triển và triển khai các ứng dụng. Các Spring MVC có những lợi thế từ Spring framework và cung cấp một lần tốt nhất cho framework và hiệu quả cho sự phát triển của các ứng dụng web.
Các MVC Spring là một framework phát triển web dựa trên các mẫu thiết kế MVC (Model View Controller). Các tính năng của framework Spring MVC là Pluggable công nghệ View và Injection dịch vụ vào điều khiển.
4.1.2. Angular JS
Angular là một bộ thƣ viện javascript rất mạnh và thƣờng đƣợc sử dụng để xây dựng project Single Page Application (SPA) [32]. Nó hoạt động dựa trên các thuộc tính mở rộng HTML (các thuộc tính theo quy tắc của Angular). Đây là một bộ mã nguồn mở hoàn toàn miễn phí và đƣợc hàng ngàn các lập trình viên trên thế giới ƣa chuộng và sử dụng. Thƣ viện này đƣợc thế hệ Web 2.0 phát triển khá mạnh ở
53
nƣớc ngoài, tuy nhiên ở Việt Nam thì vẫn chƣa thông dụng lắm. Sau đây là các tính năng cốt lõi quan trọng trong AngularJS:
Data-binding: (liên kết dữ liệu) tự động đồng bộ dữ liệu giữa model và view
Scope: (Phạm vi) Đây là những đối tƣợng kết nối giữa Controller và view
Controller: Đây là những hàm javascript xử lý kết hợp với bộ điều khiển Scope
Service: Nhƣ tôi đề cập ở trên, AngularJS sử dụng các API đƣợc xây dựng
từ các web service (PHP, ASP) để thao tác với DB.
Filters: Bộ lọc lọc ra các thành phẩn của một mảng và trả về mảng mới
Directives: đánh dấu vào các yếu tố của DOM, nghĩa là sẽ tạo ra các thẻ HTML tùy chỉnh
Templates: hiển thị thông tin từ controller, đây là một thành phần của views
Routing: chuyển đổi giữa các action trong controller
MVC: Mô hình chia thành phần riêng biệt thành Model, View, Controller. Đây là một mô hình khá hay nhƣng trong Angular thì nó đƣợc chế biến lại một chút gần giốn với MVVM (Model View View Model)
Deep Linking: Liên kết sâu, cho phép bạn mã hóa trạng thái của ứng dụng trong các URL để nó có thể đánh dấu đƣợc với công cụ tìm kiếm.
Dependency Injection: Angular giúp các nhà phát triển tạo ứng dụng dễ dàng hơn để phát triển, hiểu và thử nghiệm dễ dàng.
54
Hình 4.4: Mô hình các thành phần của Angu arJS [32]
4.2. Chƣơng trình ứng dụng
4.2.1. Xây dựng ứng dụng
4.2.1.1. Mô hình 3 lớp
Nhằm mục đích phát triển lên và sửa lỗi sau này nên hệ thống đƣợc xây dựng dựa trên mô hình 3 lớp: Repositories (lớp DataLayer), Services (lớp BusinessLayer), WebLayer. Và xây dựng sự hỗ trợ của Spring Framework với cơ chế trọng tâm là Dependency Injection.
55
Lớp Repositories sẽ là lớp kết nối và tƣơng tác trực tiếp với bộ từng vựng. Cụ thể, nó làm nhiệm vụ tạo và quản lý Ontology thông qua hỗ trợ của bộ thƣ viên OWLAPI. Nó là nhân của toàn bộ hệ thống, cung cấp các phƣơng thức hỗ trợ cho lớp Service sử lý.
Lớp Services là lớp thao tác, xử lý dữ liệu nhƣ : Quá trình thu thập dữ liệu, quá trình tìm kiếm dữ liệu,… Và nó sử dụng các phƣơng thức từ lớp Repositories để truy vấn đến bộ từ vựng.
Lớp WebLayer : Cụ thể là Controllers, có có nhiệm vụ điều khiển và quản lý truy xuất ngƣời dùng, render thông tin cho ngƣời dùng sử dụng. Và nó sử dụng những phƣơng thức đƣợc cung cấp từ Services để truy xuất dữ liệu.
4.2.1.2. Mô tả các lớp
Lớp OntFactory : Là lớp cung cấp các chức năng kết nối đến Database cơ bản của hệ thống và thao tác thêm, xóa, sửa trực tiếp lên file database.
Lớp OntVocabularies : Bộ từ vựng mô tả các Class, ObjectProperty, DataProperty có trong Database
Lớp OntNode : Đối tƣợng đại diện cho một keypharse, chứa toàn bộ thông tin về một node và danh sách tất cả các quan hệ mà có liên kết với nó.
Lớp OntEdge : Đại diện cho một liên kết cơ bản giữa 2 OntNode với nhau.
Lớp OntData : Đại diện cho node mang thông tin bổ xung cho OntNode chính.
Lớp OntRepositories: Ánh xạ toàn bộ quan hệ dữ liệu dƣới dạng Ontology do OWLAPI cung cấp thành mối quan hệ giữa các Node với nhau. Cụ thể, mỗi từ vựng sẽ ứng với một node và quan hệ giữa 2 node với nhau sẽ tao thành liên kết. Nếu thông qua tầng này thì toàn bộ Ontology sẽ đƣợc sử dụng nhƣ các Concept Map chỉ bao gồm 2 khái niệm là Node (Keypharse) Và Egde(liên kết giữa 2 keyphares). Mô tả các chức năng :
OntNode getNode(String label): Truy vấn đến node có nhãn tƣơng ứng, nếu không tồn tại thì trả về null.
56
OntNode getNode(String label, IRI type): Truy vấn đến node có nhãn tƣơng ứng nhƣng nếu không tồn tại thì tạo mới Node có kiểu Type truyền vào.
OntData createData(String value, IRI type): Tạo node dữ liệu mới dùng để thêm thông tin mô tả cho Node chính.
Set<OntNode> getAllNode(): Truy vấn danh sách toàn bộ các node thực thể tồn tại trong bộ từ vựng.
List<OntEgde> getAllEgde(String key): Truy vấn danh sách toàn bộ các quan hệ tồn tại trong bộ từ vựng
OntNode get(String id): Truy vấn đến node có id tƣơng ứng.
Lớp OntServices: Cung cấp các chức năng cơ bản để quan lý bộ tự vựng, đáp yêu cầu từ phía tầng WebLayer.
List<OntKeyword> getKeywords (String key): Cung cấp danh sách sách các từ khóa tƣơng tự key nhằm hỗ trợ tìm kiếm
Set<OntSearchResult> getResults(List<OntKeyword> key): Trả về danh sách các công văn ứng với danh sách các từ khóa nhập từ ngƣời dùng
OntDocDetail getDoc(String id): Truy vấn đến thông tin cơ bản của một công văn theo id của nó
OntDetail getDetail(String id): Truy vấn thông tin của một node thông tin bất kỳ theo id
void trainingAuto(String webpage): Tự động thu thập thông tin từ một đƣờng dẫn đến trang chứa dữ liệu cần thu thập.
4.2.2. Trang chủ hệ thống
Sau khi cài đặt chƣơng trình thì giao diện màn hình chính tƣơng tác giữa ngƣời dùng và hệ thống nhƣ sau:
57
Hình 4.6: Giao diện trang chủ của hệ thống
Hình thức tìm kiếm :
Ngƣời dùng có thể nhập nhiều từ khóa khác nhau để giới hạn vùng tìm kiếm công văn chính xác hơn.
Có 2 loại từ khóa :
o Từ khóa đề nghị : Là những từ khóa nằm trong bộ từ vựng đang sở hữu của hệ thống.
o Từ khóa tự do : Nhóm từ khóa không tƣơng đồng với bất cứ từ vựng nào của hệ thống.
58
Hình 4.7: Trang tìm kiếm thông tin công văn