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, … ), … }