Chuyển đổi từ mô hình điều hướng, xử lý sang mô hình trình bày

Một phần của tài liệu (Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình (Trang 55 - 58)

Mô hình trình bày định nghĩa từ các lớp của mô hình xử lý và mô hình điều hướng. Mô hình trình bày đặc tả chính xác các thành phần giao diện người dùng và xác định cụ thể cấu trúc của ứng dụng web mà các mô hình điều hướng, xử lý, không thể hiện được…

Chuyển đổi AvigationAndProcess to Presentation [1]

Lớp trình bày tạo ra bởi mỗi node trong mô hình điều hướng và mỗi lớp dữ liệu xử lý. Một sở hữu xử lý tương ứng được tạo ra bởi mỗi thuộc tính cùng với kiểu của thành phần giao diện người dùng.

Rule NavigationClass2PresentationClass

Với mỗi lớp điều hướng, một lớp trình bày được tạo ra bởi quy tắc này. Hơn nữa, với mỗi thuộc tính của lớp điều hướng cùng với một kiểu datatype thì một thành phần giao diện người dùng văn bản được tạo ra. Đối với mỗi liên kết, một thành phần giao diện người dùng cố định được tạo ra.

rule NavigationClass2PresentationClass {

from nn : UWE!NavigationClass (

not nn.isAbstract and nn.oclIs TypeOf( UWE!NavigationClass ) ) to tnn : UWE!NavigationClass ( … ), -- target for copying source element pc : UWE!PresentationClass

( …

),

textUis : distinct UWE!Text foreach ( p in nn.allOwnedAttribute()-> select( p | p.type.oclIsKindOf( UWE!DataType ) ) )

(

name <- p.name.firstToUpper(), …

),

anchorUis : distinct UWE!Anchor foreach ( p in nn.allOwnedAttribute()-> select( p | p.association.oclIsKindOf( UWE!Link ) ) )

( name <- p.type.name, … ), … } Quy tắc Menu2PresentationClass

Với mỗi menu, một lớp trình bày được tạo ra bằng quy tắc này. Với mỗi liên kết một thành phần giao diện người dùng cố định được tạo ra.

rule Menu2PresentationClass {

from nn : UWE!Menu ( not nn.isAbstract )

to tnn : UWE!Menu ( … ), -- target for copying source element pc : UWE!PresentationClass

( … ),

anchorUis : distinct UWE!Anchor foreach ( p in nn.allOwnedAttribute()-> select( p | p.association.oclIsKindOf( UWE!Link ) ) )

( name <- p.type.name, … ), … } Quy tắc Index2PresentationClass

Với mỗi Index, một lớp trình bày được tạo ra bằng quy tắc này. Ngoài ra, một thành phần giao diện người dùng cố định được tạo ra bởi các liên kết ngoài.

rule Index2PresentationClass {

from nn : UWE!Index

to tnn : UWE!Index ( … ), -- ta rget for copying source element pc : UWE!PresentationClass ( … ), anchorUi : UWE!Anchor (

name <- nn.outLinks-> first().target.name, …

), … }

Quy tắc ProcessClass2PresentationClass

Quy tắc này chuyển đổi lớp xử lý thành lớp trình bày. Đối với tất cả các thuộc tính của lớp xử lý cùng với một kiểu nguyên thủy, một thành phần đầu vào văn bản được tạo ra. Các thuộc tính với kiểu enumeration được ánh xạ tới một thành phần đầu vào enumeration và tất cả các thuộc tính được ánh xạ tới thành phần đầu vào selection, đối với sở hữu trình bày là tương ứng tới quan hệ thành phần giữa việc tạo ra lớp trình bày và tạo ra lớp giao diện người dùng.

rule ProcessClass2PresentationClass {

from nn : UWE!ProcessCla ss ( nn.inLinks->isEmpty() )

to tnn : UWE!ProcessClass ( … ), -- target for copying source element pc : UWE!PresentationClass

( … ),

textInputUis : distinct UWE!TextInput foreach ( p in nn.allOwnedAttribute()-> select( p | p.type.oclIsKindOf( UWE!PrimitiveType ) ) ) ( name <- p.name.firstToUpper(), … ),

p in nn.allOwnedAttribute()->select( p | p.type.oclIsKindOf( UWE!Enumeration ) ) ) ( name <- p.name.firstToUpper(), … ),

selectionUis : distinct UWE!Selection foreac h ( p in

nn.allOwnedAttribute()->select( p | p.type.oclIsTypeOf( UWE!Class ) ) ) ( name <- p.name.firstToUpper(), format <- p.type.name, … ), … }

Một phần của tài liệu (Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình (Trang 55 - 58)