Changes for page Exercises

Last modified by Carlijn Kokkeler on 2022/10/20 14:28

From version 2.1
edited by Carlijn Kokkeler
on 2022/10/19 13:55
Change comment: There is no comment for this version
To version 6.1
edited by Carlijn Kokkeler
on 2022/10/19 16:21
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -6,242 +6,33 @@
6 6  == 1. Prerequisites ==
7 7  
8 8  * Basic knowledge of the eMagiz platform
9 +* Completion of the [[exercises>>doc:Main.eMagiz Academy.Use Cases.Data modeling in Design.Exercises.WebHome||target="blank"]] from the Data modeling in Design use case.
9 9  
10 10  == 2. Key concepts ==
11 11  
12 12  This microlearning centers around understanding the concept of transformations. Please note that these are follow-up exercises from the Data modeling in Design exercises, which can be found [[here>>doc:Main.eMagiz Academy.Use Cases.Data modeling in Design.Exercises.WebHome||target="blank"]].
13 13  
14 -== 3. CDM, CDM & system message, message mapping ==
15 -By following the steps below, you should gain a better understanding of the differences between CDM, CDM messages, and system messages.
15 +== 3. Transformations in Create ==
16 +By following the steps below, you should gain a better understanding of transformations.
16 16  
17 -* Creating a CDM
18 - ** Please import the file Order.xsd in your CDM. The code for this file can be found in section 4. Code for xsd files.
19 -* Creating a CDM message
20 - ** Now, go to your CDM message and select Order as root entity.
21 - ** Add all other entities and attributes from Order.xsd, which were imported into the CDM, to your CDM message definition.
22 -* Creating a system message
23 - ** In one of your System messages, import the file TransportOrder.xsd. The code for this file can be found in section 4. Code for xsd files.
24 -* Creating a CDM message
25 - ** Select CreateOrder as root entity and add all other entities and attributes to your system definition.
26 -* Complete message mapping
27 - ** Now that you have completed these steps, go to Message mapping and complete the mapping. Please add the following to the Design mapping
28 - *** Ensure to properly map the address type
29 - *** Ensure to properly document mappings where required
30 -* Update the CDM and CDM message and remove the housenumber attribute
31 - ** Update the mapping accordingly
32 -* Update the System and CDM message to set the country attributes as enumerations
33 - ** System message uses an ISO-2 standard for country code
34 - ** CDM message uses an ISO-3 standard for country code
35 -
18 +* Enumeration value mapping
19 +** CDM message uses an ISO-3 standard for country code. Add an enumeration for the attribute Country according to this standard.
20 +** System message uses an ISO-2 standard for country code. Add an enumeration for the attribute Country according to this standard.
21 +* Boolean value mapping TBD
22 +** Make sure that, in case PackageUnit in your CDM message has the value 'yes', the Unit value in your system message is either 'COLLI' or 'BOX'. If the PackageUnit has value 'no', the Unit value is either 'EURO' or 'SACK'. Hint: you might need to change an attribute data type.
23 +* Fixed value
24 +** Add a fixed value to the attribute 'Type' from the entity 'Address'. Please carefully look at the desired value(s).
25 +* If exists
26 + ** Make sure that a Description attribute is only generated if a description exists.
27 +* XPath TBD
36 36  
37 -The solutions to these exercises can be found [[here>>doc:Main.eMagiz Academy.Use Cases.Data modeling in Design.Exercises.Solutions.WebHome||target="blank"]].
29 +The solutions to these exercises can be found [[here>>doc:Main.eMagiz Academy.Use Cases.Transformations.Exercises.Solutions.WebHome||target="blank"]].
38 38  
39 -== 4. Code for xsd files ==
40 -=== 4.1 Code for Order.xsd ===
41 -{{code language="xml"}}
42 -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
43 - xmlns="http://www.mappingexercises.com/ns/capetms/cdm/1.0/"
44 - attributeFormDefault="unqualified"
45 - elementFormDefault="qualified"
46 - targetNamespace="http://www.mappingexercises.com/ns/capetms/cdm/1.0/">
47 - <xs:complexType name="Order">
48 - <xs:sequence>
49 - <xs:element name="Date" type="xs:dateTime"/>
50 - <xs:element name="OrderId" type="nonEmptyString"/>
51 - <xs:element name="Customer" type="Customer"/>
52 - <xs:element name="PickupAddress" type="PickupAddress"/>
53 - <xs:element name="DeliveryAddress" type="DeliveryAddress"/>
54 - <xs:element maxOccurs="unbounded" name="OrderLine" type="OrderLine"/>
55 - </xs:sequence>
56 - </xs:complexType>
57 - <xs:complexType name="Customer">
58 - <xs:sequence>
59 - <xs:element name="Name" type="nonEmptyString"/>
60 - <xs:element name="Email" type="nonEmptyString"/>
61 - </xs:sequence>
62 - </xs:complexType>
63 - <xs:complexType name="PickupAddress">
64 - <xs:sequence>
65 - <xs:element name="Name" type="nonEmptyString"/>
66 - <xs:element name="Street" type="nonEmptyString"/>
67 - <xs:element name="StreetNumber" type="nonEmptyString"/>
68 - <xs:element name="PostalCode" type="nonEmptyString"/>
69 - <xs:element name="City" type="nonEmptyString"/>
70 - <xs:element name="Country" type="nonEmptyString"/>
71 - </xs:sequence>
72 - </xs:complexType>
73 - <xs:complexType name="DeliveryAddress">
74 - <xs:sequence>
75 - <xs:element name="Name" type="nonEmptyString"/>
76 - <xs:element name="Street" type="nonEmptyString"/>
77 - <xs:element name="StreetNumber" type="nonEmptyString"/>
78 - <xs:element name="PostalCode" type="nonEmptyString"/>
79 - <xs:element name="City" type="nonEmptyString"/>
80 - <xs:element name="Country" type="nonEmptyString"/>
81 - </xs:sequence>
82 - </xs:complexType>
83 - <xs:complexType name="OrderLine">
84 - <xs:sequence>
85 - <xs:element name="PackageUnit" type="nonEmptyString"/>
86 - <xs:element name="Quantity" type="xs:long"/>
87 - <xs:element name="Description" type="nonEmptyString"/>
88 - <xs:element name="Weight" type="xs:decimal"/>
89 - </xs:sequence>
90 - </xs:complexType>
91 - <xs:simpleType name="nonEmptyString">
92 - <xs:restriction base="xs:string">
93 - <xs:minLength value="1"/>
94 - </xs:restriction>
95 - </xs:simpleType>
96 - <xs:element name="Order" type="Order"/>
97 -</xs:schema>
98 -{{/code}}
99 -
100 -=== 4.2 Code for TransportOrder.xsd ===
101 -{{code language="xml"}}
102 -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
103 - xmlns="https://transportinc.nl/ns/tms/1.0/"
104 - attributeFormDefault="unqualified"
105 - elementFormDefault="unqualified"
106 - targetNamespace="https://transportinc.nl/ns/tms/1.0/">
107 - <xs:complexType name="CreateOrder">
108 - <xs:sequence>
109 - <xs:element name="Order" type="Order"/>
110 - </xs:sequence>
111 - </xs:complexType>
112 - <xs:complexType name="Order">
113 - <xs:sequence>
114 - <xs:element name="OrderID">
115 - <xs:simpleType>
116 - <xs:restriction base="xs:string">
117 - <xs:maxLength value="200"/>
118 - </xs:restriction>
119 - </xs:simpleType>
120 - </xs:element>
121 - <xs:element name="OrderDate" type="xs:dateTime"/>
122 - <xs:element minOccurs="0" name="Order_Customer" type="Order_Customer"/>
123 - <xs:element name="Address" type="Address"/>
124 - <xs:element name="PartnerInfo_Order" type="PartnerInfo_Order"/>
125 - <xs:element name="OrderLine_Order" type="OrderLine_Order"/>
126 - </xs:sequence>
127 - </xs:complexType>
128 - <xs:complexType name="Order_Customer">
129 - <xs:sequence>
130 - <xs:element minOccurs="0" name="Customer" type="Customer"/>
131 - </xs:sequence>
132 - </xs:complexType>
133 - <xs:complexType name="Customer">
134 - <xs:sequence>
135 - <xs:element name="Name">
136 - <xs:simpleType>
137 - <xs:restriction base="xs:string">
138 - <xs:maxLength value="200"/>
139 - </xs:restriction>
140 - </xs:simpleType>
141 - </xs:element>
142 - <xs:element minOccurs="0" name="Contact_Customer" type="Contact_Customer"/>
143 - </xs:sequence>
144 - </xs:complexType>
145 - <xs:complexType name="Contact_Customer">
146 - <xs:sequence>
147 - <xs:element maxOccurs="unbounded"
148 - minOccurs="0"
149 - name="Contact"
150 - type="Contact"/>
151 - </xs:sequence>
152 - </xs:complexType>
153 - <xs:complexType name="Contact">
154 - <xs:sequence>
155 - <xs:element name="eMail">
156 - <xs:simpleType>
157 - <xs:restriction base="xs:string">
158 - <xs:maxLength value="200"/>
159 - </xs:restriction>
160 - </xs:simpleType>
161 - </xs:element>
162 - <xs:element minOccurs="0" name="Name">
163 - <xs:simpleType>
164 - <xs:restriction base="xs:string">
165 - <xs:maxLength value="200"/>
166 - </xs:restriction>
167 - </xs:simpleType>
168 - </xs:element>
169 - </xs:sequence>
170 - </xs:complexType>
171 - <xs:complexType name="Address">
172 - <xs:sequence>
173 - <xs:element name="Type" type="nonEmptyString"/>
174 - <xs:element name="Name" type="nonEmptyString"/>
175 - <xs:element name="Street" type="nonEmptyString"/>
176 - <xs:element name="PostalCode" type="nonEmptyString"/>
177 - <xs:element name="City" type="nonEmptyString"/>
178 - <xs:element name="Country" type="nonEmptyString"/>
179 - </xs:sequence>
180 - </xs:complexType>
181 - <xs:complexType name="PartnerInfo_Order">
182 - <xs:sequence>
183 - <xs:element maxOccurs="unbounded"
184 - minOccurs="0"
185 - name="PartnerInfo"
186 - type="PartnerInfo"/>
187 - </xs:sequence>
188 - </xs:complexType>
189 - <xs:complexType name="PartnerInfo">
190 - <xs:sequence>
191 - <xs:element name="UUID">
192 - <xs:simpleType>
193 - <xs:restriction base="xs:string">
194 - <xs:maxLength value="64"/>
195 - </xs:restriction>
196 - </xs:simpleType>
197 - </xs:element>
198 - </xs:sequence>
199 - </xs:complexType>
200 - <xs:complexType name="OrderLine_Order">
201 - <xs:sequence>
202 - <xs:element maxOccurs="unbounded"
203 - minOccurs="0"
204 - name="OrderLine"
205 - type="OrderLine"/>
206 - </xs:sequence>
207 - </xs:complexType>
208 - <xs:complexType name="OrderLine">
209 - <xs:sequence>
210 - <xs:element name="Description">
211 - <xs:simpleType>
212 - <xs:restriction base="xs:string">
213 - <xs:maxLength value="200"/>
214 - </xs:restriction>
215 - </xs:simpleType>
216 - </xs:element>
217 - <xs:element name="Quantity" type="xs:long"/>
218 - <xs:element name="Unit" type="Enum"/>
219 - <xs:element minOccurs="0" name="Weight" type="xs:double"/>
220 - </xs:sequence>
221 - </xs:complexType>
222 - <xs:simpleType name="nonEmptyString">
223 - <xs:restriction base="xs:string">
224 - <xs:minLength value="1"/>
225 - </xs:restriction>
226 - </xs:simpleType>
227 - <xs:simpleType name="Enum">
228 - <xs:restriction base="xs:string">
229 - <xs:enumeration value="COLLI"/>
230 - <xs:enumeration value="EURO"/>
231 - <xs:enumeration value="BOX"/>
232 - <xs:enumeration value="SACK"/>
233 - </xs:restriction>
234 - </xs:simpleType>
235 - <xs:element name="CreateOrder" type="CreateOrder"/>
236 -</xs:schema>
237 -{{/code}}
238 238  == 5. Key takeaways ==
239 239  
240 -* The CDM holds all entities and attributes that are relevant within the context of your complete integration landscape.
241 -* The CDM message is tailor-made for a specific piece of data and only holds the entities and attributes relevant for that piece of data.
242 -* A system message is specific to a system.
33 +* Enumeration values can be added in Create in CDM message and system message.
34 +* Filters for attributes can be added in Create in Transformation.
243 243  
244 -
245 245  == 6. Suggested Additional Readings ==
246 246  
247 247  If you are interested in this topic and want more information on it please read the help text provided by eMagiz.