SOA2 Pertemuan 5-9
SOA2 Pertemuan 5-9
Hierarki Mapping
JSON
MOTIVASI
Untuk skema T lainnya, sebuah skema mapping m: S→T menggambarkan transformasi data
m:I(S) → I(T) dari semua instans S menjadi instans T
Contoh: object diagram menjadi XML instans
DATA CAPACITY
Memilih kelas yg relevan, asosiasi, dan sebagainya., dimana setiap instans harus di export atau import sesuai dengan kebutuhan
fungsional (functional requirement)
Parameter dan return value dari operasi akan dipertukarkan
Memasukkan attribut, kelas dan asosiasi yang diperlukan sesuai dengan pemahaman terdapat domain permasalahn
Membuat XML specific class diagram, menggunakan style yang sesuai untuk preserve data dan memenuhi kebutuhan non fungsional
(non functional requirements)
Hierarki: menggunakan komposisi untuk menunjuk struktur tree
Net-like: menentukan referensi sebagai asosiasi terarah
Aturan umum:
Class → element
Assosiaction (n-to-n) → element
Jika memungkinkan, buatlah domain specific class diagram dari DTD specific
diagram sehingga data capacity dapat:
Preserved
Extended, but not preserved
Reflected, but not extended
Asumsikan pada kasus ini, bahwa semua kelas, asosiasi, attribute relevant
MODELLING DATA
Hierarki Mapping
JSON
DOKUMEN XML YANG WELL FORMED
<!ELEMENT Bill(Client,
Product,
BankAccount)>
<!ATTLIST Bill
status CDATA #REQUIRED
total CDATA #REQUIRED>
ATTRIBUTE → ATTRIBUTE, HIERARKI
Aturan umum:
Class → element
Assosiaction (n-to-n) → element
<!ELEMENT Bill(
Client,
Product*, Prefix tipe element
BankAccount, untuk menghindari
konflik nama
Bill.total,
Bill.status ) >
<!ELEMENT Bill.total(#PCDATA)>
<!ELEMENT Bill.status (#PCDATA)>
ATTRIBUTE → ELEMENT, HIERARKI
<!ELEMENT Client(
Client.name ) >
<!ELEMENT Client.name(#PCDATA)>
ATTRIBUTE → ELEMENT, HIERARKI
<!ELEMENT Product(
Product.price,
Product.descr ) >
<!ELEMENT Product.price (#PCDATA)>
<!ELEMENT Product.descr (#PCDATA)>
ATTRIBUTE → ELEMENT, HIERARKI
<!ELEMENT BankAccount(
BankAccount.accNo,
BankAccount.code ) >
<!ELEMENT BankAccount.accNo (#PCDATA)>
<!ELEMENT BankAccount.code (#PCDATA)>
KESIMPULAN DTD: ATTR → ELEMENT, HIERARKI
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Bill [
<!ELEMENT Bill (Client, Product*, BankAccount, Bill.total,
Bill.status)>
<!ELEMENT Client (Client.name)>
<!ELEMENT Product (Product.price, Product.descr)>
<!ELEMENT BankAccount (BankAccount.accNo, BankAccount.code)>
<!ELEMENT Bill.total (#PCDATA)>
<!ELEMENT Bill.status (#PCDATA)>
<!ELEMENT Client.name (#PCDATA)>
<!ELEMENT Product.price (#PCDATA)>
<!ELEMENT Product.descr (#PCDATA)>
<!ELEMENT BankAccount.accNo (#PCDATA)>
<!ELEMENT BankAccount.code (#PCDATA)> ]>
OBJEK DIAGRAM → XML INSTANCE: ATTR → ELE, HIERARKI
<?xml version="1.0" encoding="UTF-8"?>
<Bill>
<Client>
<Client.name>Max</Client.name>
</Client>
<Product>
<Product.price>50</Product.price>
<Product.descr>Winnetou</Product.descr>
</Product>
<Product>
<Product.price>100</Product.price>
<Product.descr>H. Potter</Product.descr>
</Product>
<BankAccount>
<BankAccount.accNo>4711</BankAccount.accNo>
<BankAccount.code>0815</BankAccount.code>
</BankAccount>
<Bill.status>closed</Bill.status>
<Bill.total>150</Bill.total>
</Bill>
MAPPING: CLASS DIAGRAM → DTD
Aturan umum:
Class → element
Assosiaction (n-to-n) → element
Attribute → Attribute
Dokumen XML yang lebih ringkas
“footprint” yg lebih kecil, efisien dalam memroses dan transmisi
Lebih mudah dibaca
Attribute → Element
Maaping yg seragam dari kelas dan attribute
DTD (relatif) lebih stabil ketika class diagram di extend
MODELLING DATA
Hierarki Mapping
JSON
CLASS DIAGRAM → DTD: ATTRIBUTE → ATTRIBUTE, NETLIKE
Skenario baru: Kirim semua Bill dalam satu minggu ke arsip
<root>
<Bill pays="c1"
to="a1"
contains="p1 p1"
status="closed"
total="100" />
<Client id="c1" name="Max" />
<Product id="p1"
price="50"
descr="Winnetou" />
<BankAccount id="a1"
accNo=“4711"
code=“1234" />
</root>
MAPPING: CLASS DIAGRAM → DTD
Aturan umum:
Class → element
Assosiaction (n-to-n) → element
Aturan umum:
Class → element
Assosiaction (n-to-n) → element
Hierarki
Bentuk struktur tree jelas
Navigasi dan proses yg sederhana
Lebih mudah dibaca
Netlike
Struktur relasi
Sedikit redundancy
Mapping ke relational data model lebih sederhana
MODELLING DATA
Hierarki Mapping
JSON
MOTIVASI
Kurangnya namespace
Syntax yg sederhana
XML document bisa memilih dan
Mudah dibuat dan manipulasi mencampur elemen yg didefinisikan dengan
Dapat di parse JavaScript dengan eval() menggunakan schema lain dengan
menggunakan namespace supaya tidak
Didukung hampir semua framework ambigu
JavaScript Validasi tidak diturunkan (inherit)
Didukung sebagian besar technology XML mempunya DTD dan XSD untuk
backend memvalidasi instance
JSON schema baru dikembangkan untuk
mengatasi masalah ini, pelajari
https://json-schema.org/
SYNTAX OBJECT PADA JSON
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
SYNTAX ARRAY PADA JSON
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
TIPE DATA PADA JSON
String {
Deretan dari 0 atau lebih character unicode ...
Ditutup dengan “double quote”
Backslash escapement "employee_id": 1236937,
"hire_date": "1/1/2013",
Number
"fixed-term": false,
Integers Temukan "location": "Leicester,
Rational 3.14 kesalahan pada
UK",
JSON ini
Floating point 2.99e8 "qualification": [PhD,
Boolean MSc, BSc]
true or false }
RESOURCE
http://som-research.uoc.edu/tools/jsonDiscoverer/#/simple
MODELLING DATA
Hierarki Mapping
JSON
THANK YOU
WENDDARKKNIGHT@GMAIL.CO
M
WENDY,S.KOM.,M.SC.