CHƯƠNG 1 : PHÁT TRIỂN PHẦN MỀM HƯỚNG MÔ HÌNH
2.2. Chuyển đổi mô hình trong UWE
2.2.4. Chuyển đổi từ mơ hình điều hướng, xử lý sang mơ hình trình bày
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ắcnà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. Ngồ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, … ), … }