C ƢƠNG 1 KỸ T UẬ TP ÁT TRIỂN ỨNG DỤNG WEB ƢỚNG MÔ ÌN
P Ụ LỤC B
B.2 Cách sử dụng UWE để thiết kế ứng dụng web
Mục đích chính của phương pháp MDA trong việc tạo ra ứng dụng Web là thu hẹp khoảng cách giữa các khái niệm trừu tượng hiện nay trong các mô hình thiết kế (nội dung, điều hướng, quy trình, trình bày) với các nền tảng Web. Trong thực tế với phương pháp UWE, khoảng cách này là khá gần giữa Content và mô hình Presentation. Cấu trúc tĩnh UML được sử dụng để mô tả Content trong UWE (nếu có thể bỏ qua các mô hình phức tạp hơn như các mẫu nâng cao, kết hợp gói và các loại tương tự) gần như mô tả lại giống hệ các phần bên trong của ứng dụng như mô
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
hình cơ sở dữ liệu quan hệ, mô hình quan hệ hướng đối tượng, hoặc Java Bean. Tương tự, mô hình UWE Presentation, cũng vẫn dựa trên các cấu trúc UML tĩnh, có thể được xem như là một khái niệm trừu tượng trong việc thiết kế trang web,... mô tả lại các kỹ thuật Plain HTML, Dynamic HTML, hoặc Java Server Pages (JSP). Khoảng cách trừu tượng này có thể so sánh với những cấu trúc UWE Navigation chỉ sử dụng các node navigation và truy cập thô sơ. Tuy nhiên trong trường hợp này, thay đổi để mô tả luồng xử lý nghiệp vụ theo UWE, nó sử dụng phép biểu diễn các quy trình làm việc. Đặc biệt, dựa vào các dấu hiệu, giống như việc làm sáng tỏ các hoạt động của UML và kiểm soát sự kết hợp của chúng với luồng dữ liệu, việc đó đặc biệt thích hợp cho việc khai báo truyền đi dữ liệu, khác biệt đáng kể với phương pháp truyền thống, khái niệm ngôn ngữ lập trình điều khiển trung tâm được hỗ trợ bởi nền tảng Web hiện tại.
Vì vậy, để tạo ra một ứng dụng Web từ một mô hình thiết kế UWE, một mặt ta ánh xạ và mặt khác làm sáng tỏ phương pháp tiếp cận: Quy tắc chuyển đổi thích hợp để tạo ra mô hình dữ liệu và lớp giao diện cho một ứng dụng Web từ UWE Content, cấu trúc điều hướng và những mô hình giao diện, ở đây ít có sự khác biệt trong mô hình và nền tảng trừu tượng. Các khác biệt cao hơn trong trừu tượng, hình thức rõ ràng trong các mẫu mô hình quy trình có thể dễ dàng hơn trong việc diễn giải các mô hình thực thi trực tiếp trong máy ảo. Cụ thể, mô tả quá trình tạo ứng dụng Web từ Mô hình UWE bằng một nền tảng Web độc lập, sử dụng framework Spring, nhưng, nếu muốn thay đổi nền tảng, các mô hình chuyển đổi đổi và tùy biến với các máy ảo, ta có thể dễ dàng chuyển sang các công nghệ Web khác như sử dụng một nền tảng đơn giản Java Server Pages (JSP) hay một nền tảng nặng hơn, ASP.NET.
Spring là một framework đa năng dựa trên nền tảng Java theo mô đun tích hợp MVC 2-based Web framework với khả năng dễ dàng truy cập phần mềm trung gian, bền bỉ và quản lý giao dịch. Tách biệt các mô hình, view, và các phần điều khiển trực tiếp phản ánh cấu trúc chung của các mô hình tiếp cận theo hướng UWE và cũng hỗ trợ việc bổ sung sử dụng các quy tắc chuyển đổi, thực hiện engine trong
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
sinh ra ứng dụng Web: yêu cầu tối thiểu là sử dụng framework Spring trên công nghệ mô hình hóa; trong thực tế, bất kỳ loại Plain Old Java Objects (POJO) đều có thể được sử dụng, và việc tiếp cận với các mô hình từ view hoặc phần controller chỉ là gọi các hàm chức năng get- và set-. Để mô hình hóa cho định nghĩa quy tắc chuyển đổi từ một mô hình nội dung UWE sang Java Beans. Công nghệ View được tách ra từ model và Controller bởi một cơ chế cấu hình được cung cấp bởi Spring; do đó các công nghệ như Faces JSP, Tiles, hoặc Java Server có thể được sử dụng. Ta định nghĩa cách chuyển đổi từ mô hình giao diện UWE sang JSP. Cuối cùng, Controller cung cấp mọi thứ cho việc xây dựng một máy ảo để thể hiện luồng xử lý nghiệp vụ, cũng như nó có thể được tùy chỉnh thông qua bất kỳ lớp Java nào, bổ sung giao diện cụ thể từ các framework Spring. Dữ liệu cấu hình cho máy ảo được tạo ra từ quy trình UWE và mô hình điều hướng.
Tổng quan về cách biến đổi và phương tiện thực hiện được mô tả theo như Hình 2.35. Các máy ảo để thực hiện xử lý nghiệp vụ và mô hình điều hướng được gói gọn trong một môi trường thời gian thực được xây dựng trước khi chuyển sang Spring framework và cũng đóng gói quản lý dữ liệu và các view xử lý.
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
B.2.1. Môi trƣờng thực thi (Runtime Environment)
Cấu trúc của môi trường thực thi được hiển thị trong Hình 26. Framework Spring được cấu hình để thực hiện điều khiển chung có tên MainController. Bộ điều khiển có quyền truy cập vào một tập các đối tượng với những kiểu được tạo ra từ mô hình nội dung và định ra một đối tượng gốc được xem như là một điểm bắt đầu cho các ứng dụng. Mô hình đối tượng được truy cập bởi phương thức get- và set- và các quá trình được định nghĩa trong các mô hình nội dung. Ngoài ra, controller quản lý một tập hợp các đối tượng NavigationClassInfo trong đó có chứa thông tin cấu trúc Navigation với việc thừa kế giữa các lớp navigation và được tạo ra từ các mô hình Navigation. Một bộ của các đối tượng ProcessActivity được tạo ra từ các mô hình xử lý đại diện cho quá trình xử lý Web; với mỗi session nhiều nhất là một quá trình có thể được hoạt động tại một thời điểm.
Có những quan điểm cho rằng, các trang Web không được quản lý một cách rõ ràng bởi các môi trường thực thi , mà chỉ có bộ nhận dạng ký tự hợp lệ. Framework Spring có trách nhiệm phân tích các định dạng này thành các trang web thực sự, được tạo ra từ các mô hình giao diện.
Chức năng handleRequest xử lý các yêu cầu Web bằng cách sửa đổi mô hình và trả về View tương ứng. Khi phương pháp này được gọi, trước tiên nó kiểm tra tiến trình có đang đang hoạt động trong phiên làm việc hiện tại. Nếu có, sau đó việc thực thi được giao cho các môi trường thời gian thực, chi tiết quá trình ở Mục 3.4.3. Nếu không, thì các đối tượng kế tiếp từ mô hình nội dung đó cần được biểu diễn cho người dùng là đã được giải quyết bằng cách được định danh . Cuối cùng , một định dạng được trả lại và trang web tương ứng được hiển thị cho người sử dụng .
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
Hình 0.8 Môi trƣờng thời gian thực B.2.2. Content và Navigation
Sự biến đổi mô hình nội dung thành Java beans là khá đơn giản . Ví dụ minh họa sau đây về kết quả của quy tắc chuyển đổi áp dụng cho dự án ProjectManager :
public class ProjectManager { private List<Project> projects; public List<Project> getProjects() { return projects;
}
public void setProjects(List<Project> projects) { this.projects = projects;
}
public void removeProject(Project project) {
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
} }
Mô hình Navigation không được chuyển trực tiếp vào code vì trong việc chuyển đổi các mô hình Presentation, các tham chiếu đến các phần tử từ các mô hình Navigation được giải quyết để các trang được tạo ra trực tiếp truy cập vào các mô hình nội dung . Tuy nhiên , một kiến thức tối thiểu về các mô hình Navigation là cần thiết trong môi trường thời gian thực để xử lý chuyển hướng một cách năng động. Ví dụ , trong mô hình Navigation của Hình 2.32. liên kết xử lý từ lớp xử lý AddProject đến lớp trừu tượng Navigation, với hai lớp con Navigation là UserProject và ValidationProject. Vì vậy, theo đường dẫn AddProject để tạo một dự án thì lớp giao diện cho lớp con Navigation để hiển thị kiểu đối tượng có nội dung động.
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
B.2.3. Process
Bởi vì trong những thực hiện ngữ nghĩa phức tạp của các hoạt động dựa trên những dòng dấu hiệu tôi tích hợp quy trình xử lý Web chung, vào nền tảng cụ thể môi trường thời gian thực, được trình bày trong Mục 4.1. Cấu trúc cơ bản của cơ chế xử lý Web được đưa ra trong Hình 2.37. Một tiến trình hoạt động bao gồm một danh sách các node hoạt động và thiết lập các hoạt động biên. Các nút hoạt động có thể giữ một mã thông báo đó là dấu hiệu điều khiển, chỉ ra rằng một dòng điều khiển hiện đang ở một nút cụ thể, hoặc một mã thông báo đối tượng chỉ ra rằng một lưu lượng điều khiển đối tượng tại một nút cụ thể. Hoạt động biên đại diện cho lưu lượng có thể có của thẻ từ một nút hoạt động khác. Nhiều thẻ có thể có mặt tại các nút hoạt động khác nhau tại một thời điểm cụ thể. Chức năng acceptsToken của một nút hoạt động hoặc một hoạt động biên được sử dụng để truy vấn nếu một mã thông báo cụ thể được chấp nhận mà sau đó có thể được tiếp nhận theo phương pháp receiveToken. Một hoạt động có một nút tham số đầu vào và tùy chọn một nút tham số đầu ra đáp ứng để giữ đầu vào và đầu ra.
Các nút điều khiển được hỗ trợ bởi các cơ chế xử lý là quyết định và hợp nhất các nút, tham gia và các nút phân nhánh, và các nút cuối cùng. Các nút đối tượng được hỗ trợ là đại diện cho các hành động đầu vào và đầu ra, các nút tham số hoạt động cho đầu vào và đầu ra của quá trình hoạt động, các nút vùng đệm trung tâm cho làm bộ đệm trung gian của đối tượng đặc trưng, và các nút kho dữ liệu đại diện cho một bộ đệm cố định. Việc bổ sung các nút tương ứng với kỹ thuật đặc tả UML 2.0
Trước khi bắt đầu thực hiện một tiến trình hoạt động nó phải được khởi tạo bằng cách gọi phương thức init. Điều này dẫn đến khởi tạo bao hàm tất cả các điểm hoạt động và đặt một mã thông báo đối tượng trong các điểm tham số đầu vào như minh họa bởi những dòng mã Java đơn giản sau đây:
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
// initialize all activity nodes
for (ActivityNode n : activityNodes) n.init();
// place new object token in input parameter node
inputParameterNode.receiveToken(new ObjectToken(inputParameter)); finished = false;
}
Việc thực hiện hoàn thành một tiến trình hoạt động bao gồm việc xử lý tương tác người dùng , như RemoveProjectInput và ConfirmRemoveProjectInput trong Hình 5. Như vậy , khi một quy trình hoạt động có chứa ít nhất một người dùng tương tác sau đó nó có thể không được thực hiện hoàn toàn trong một bước . Phương pháp tiếp theo của một quy trình hoạt động được gọi từ môi trường thời gian thực để thực hiện các tiến trình hoạt động cho đến khi người dùng tương tác tiếp theo gặp phải hay các tiến trình hoạt động đã kết thúc. Hơn nữa , một trong hai đối tượng tương tác người dùng tiếp theo sẽ được trình bày cho người dùng được trả về; hoặc trong trường hợp hoạt động này đã kết thúc với một giá trị trả về , các đối tượng tham số đầu ra được hiển thị . Các dòng mã sau đây đưa ra một phác họa cách thực hiện các phương pháp next :
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
Hình 0.9 Môi trƣờng xử lý activity
public Object next() {
// process input requested after last method call for (ActivityNode n : activityNodes) {
if (n.isWaitingForInput()) { n.processInput();
break; } }
// token passing loop
while (true) {
for (ActivityNode n : activityNodes) { n.next();
// return in case of waiting for user input if (n.isWaitingForInput())
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
else {
// return if the output parameter node has an object token
if (n == outputParameterNode && n.hasToken())
return outputParameterNode.getObjectToken().getObject(); // return in case of activity final node reached
else
if (n instanceof ActivityFinalNode && n.hasToken()) { return null;
} } } }
Chức năng đầu tiên processInput của điểm nút hoạt động đầu tiên được chờ cho đầu vào ở bước cuối cùng gọi để xử lý đầu vào người dùng mà bây giờ đã có trong đối tượng tương tác người dùng. Sau đó, tất cả các điểm nút hoạt động được thông báo để thực hiện hành vi của mình bằng cách gọi chức năng tiếp theo. Nếu một điểm mà chỉ ra rằng nó đang đợi đầu vào chức năng trả về với các đối tượng tương tác người dùng được trả lại bởi điểm nút này. Nếu một mã thông báo đến vào lúc một điểm tham số đầu ra hoạt động hoặc lúc một điểm cuối hoạt động thực hiện các quy trình kết thúc và phương thức quay trở lại.
B.2.4 Presentation
Phác họa những chuyển đổi từ mô hình trình bày cho Java Server Pages. Các hình mẫu ngôn ngữ của JSP được hiển thị trong Hình 2.38. Đối với mọi người sử dụng thành phần giao diện của loại X trong hình mẫu ngôn ngữ trình bày một ứng dụng ATL quy tắc chuyển đổi X2JSP chịu trách nhiệm cho sự chuyển đổi của các yếu tố giao diện người dùng của loại nhất định.
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
Hình 0.10: JSP metamodel
Mỗi lớp trình bày được ánh xạ tới một phần tử gốc bao gồm các cấu trúc bên ngoài của một tài liệu HTML. Tất cả các biểu đồ của các yếu tố giao diện người dùng được bao gồm trong thẻ body.
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA rule PresentationClass2JSP { from pc : UWE!PresentationClass to jsp : JSP!Root(documentName <- pc.name + '.jsp', children <- Sequence{ htmlNode }),
htmlNode : JSP!Element(name <- 'html',
children <- Sequence{ headNode, bodyNode }), headNode : JSP!Element(name <- 'head',
children <- Sequence{ titleNode }), titleNode : JSP!Element(name <- 'title', children <- Sequence{ titleTextNode }),
titleTextNode : JSP!TextNode(value <- pc.name), bodyNode : JSP!Element(name <- 'body',
children <- Sequence{ pc.ownedAttribute->collect(p | p.type) })
}
Mỗi phần tử giao diện người dùng được ánh xạ tới một phần tử HTML form. Tất cả các phần tử giao diện người dùng chứa được bên trong các phần tử form. Các điểm thuộc tính action với mục đích đường dẫn tương ứng liên quan đến các form bằng cách sử dụng một tên trang tương đương với hậu tố.uwe
rule Form2JSP { from
uie : UWE!Form
to
jsp : JSP!Element(name <- 'form',
children <- Sequence{ actionAttr, uie.uiElements }), actionAttr : JSP!Attribute(name <- 'action',
Nghiên cứu kỹ thuật biế đổi mô hình sử dụng trong xây dựng phần mềm dựa web theo MDA
value <- uie.link.target.name + '.uwe') }
Tất cả các yếu tố giao diện người dùng còn lại, như anchor, văn bản, hình ảnh được chuyển đổi tương tự [40].