Showing posts with label xsd. Show all posts
Showing posts with label xsd. Show all posts

Monday, June 15, 2015

XSD Enumeration

Apabila pada kesempatan sebelumnya kita berhasil memvalidasi XSD menggunakan mediator. Maka pada kesempatan kali ini kita akan mencoba membuat XSD menggunakan enum atau membatasi data yang dapat masuk pada XSD.

Pada dasarnya XSD memiliki banyak atribut yang dapat digunakan untuk membantu menyeleksi data. Seperti menggunakan tipe data yang telah disediakan seperti string, decimal, integer, boolean, date,time dll.

Selain tipe data tersebut di atas kita juga dapat mendeklarasikan tipe data sendiri yang sebenarrnya merupakan element yang memiliki element sederhana. Pada kesempatan kali ini kita akan mencoba membuat sebuah type data yang memiliki batasan-batasan data pada XSD.

Seperti halnya pada kebanyakan bahasa pemprograman, tentunya kita sering menemui enumeration. Enumeration adalah sebuah tipe data yang sudah ditentukan terlebih dahulu nilai-nilainya. Ketika kita membuat sebuah service ada kalanya kita sangat memerlukan penggunaan enum untuk membantu dalam pembersihan data dari pihak-pihak yang sengaja maupun tidak sengaja mengisi data yang tidak sesuai.

Baiklah, langsung saja kita memulai membuat sebuah xsd dengan membuat enum sebagai satu type elemennya. Berikut adalah source xsd yang kita buat : 


<xs:schema attributeformdefault="unqualified" elementformdefault="qualified" targetnamespace="http://xmlns.oracle.com/Test/Test2/bpelValidator" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/Test/Test2/bpelValidator">
<xs:element name="process">
<xs:complextype>
<xs:sequence>
<xs:element name="String" type="xs:string"/>
                                <xs:element name="Integer" type="xs:integer"/>
                                <xs:element name="Date" type="xs:date"/>
                                <xs:element name="Boolean" type="xs:boolean"/>
                                <xs:element name="StringUseEnum" type="enumData"/>
</xs:sequence>
</xs:complextype>
</xs:element>
<xs:element name="processResponse">
<xs:complextype>
<xs:sequence>
<xs:element name="result" type="xs:string"/>
</xs:sequence>
</xs:complextype>
        </xs:element>
        <xs:simpletype name="enumData">
          <xs:restriction base="xs:string">
            <xs:enumeration value="ENUM1"/>
            <xs:enumeration value="ENUM2"/>
            <xs:enumeration value="ENUM3"/>
         </xs:restriction>
        </xs:simpletype>
</xs:schema>



Apabila kita mencari cara membuat enum, pasti anda akan menjumpai xsd yang tiba-tiba memiliki "xs" atau "xsd" di depan setiap tag. Mengapa demikian?  "xs" atau "xsd" pada tag tersebut membantu kita dalam menentukan asal element tersebut berasal. Kita akan membuat sebuah type data baru yg akan kita sebut enumData dan bukan type data asli yang sudah terdefinisi dari "http://www.w3.org/2001/XMLSchema" sehingga kita harus mendefinisikannya pada xsd kita dari mana element tersebut berasal. 

Apabila kita lht kembali di atas maka akan terlihat 2 macam deklarasi yang ada : 
xmlns:xs="http://www.w3.org/2001/XMLSchema"  
=> memiliki nama alias "xs" yang nantinya setiap element yang terdefinisi harus di beri "xs" di depan setiap element yang akan digunakan.
xmlns="http://xmlns.oracle.com/Test/Test2/bpelValidator" 
=> membuat element yang terdefinisi pada file yang memiliki namespace tersebut dapat digunakan pada xsd tanpa seperti penggunaan element normal.

Dari keterangan tersebut sebenarnya kita bsa memberi alias apa saja pada saat mendeklarasi element. Setelah mengetahui cara kerja dari pendeklarasian pada xsd. Kita bisa menentukan bagaimana cara membuat type data baru dengan lebih mudah. Seperti misalkan kita balik kegiatan pendeklarasian element yang akan digunakan agar lebih sedikit perubahan yang dibutuhkan pada xsd yang telah dibuat sebelumnya. Seperti contoh di bawah : 

Cara Lain Penulisan XSD dengan Tambahan Element Baru
Demikian sekilas mengenai pembuatan enumeration dan hal- hal yang diperlukan serta pengertiannya. Semoga membantu. 



Saturday, June 13, 2015

Validasi XSD pada BPEL Menggunakan Mediator


Pada kesempatan kali ini saya ingin berbagi mengenai memvalidasi inputan pada bpel. Pada saat kita membuat xsd pada bpel sering kali kita sudah menentukan data-data yang diinginkan, semisal dengan menentukan sebuah element bertipe data date, integer , ataupun menentukan element tersebut mandatory atau tidak. Pada saat kita mengetes melalui Oracle Enterprise Manager(OEM atau EM) , request kita akan tervaldiasi sesuai dengan apa yang kita setting pada xsd, tetapi bila kita menggunakan soap ui element" tersebut dapat kita isi apa saja dan akan tetap masuk ke dalam proses bpel yang ada. Seperti terlihat pada gambar di bawah, sekalipun memasukkan a pada element yang merupakan integer bpel tetap dapat menerima dan memprosesnya.
a sebagai integer tetap dapat masuk kedalam bpel

OEM akan memvalidasi inputan dari user
Hal tersebut sangat merepotkan karena tentunya dapat menyebabkan kesalahan data dalam pemprosesan maupun penyimpanan. Apabila harus mengecek setiap data dalam xsd tersebut, tentunya sangat tidak memungkinkan apabila terdapat banyak data d dalamnya. Setelah mencari-cari, akhirnya saya menemukan fitur yang dimiliki oleh mediator yang berfungsi untuk memvalidasi xsd sebelum nantinya akan di gunakan dalam proses bpel.

Cara menggunakan mediator pada bpel anda sangat mudah. Pertama-tama perlu dibuat component mediator terlebih dahulu. 

membuat mediator


Kemudian menghapus koneksi antara bpel dengan xsd yang di ekspose sebagai service. Tidak perlu ragu, apabila ditanyakan kepastian untuk mendelete, segera konfirmasi dengan yakin.
Delete Koneksi


confirmasi dengan yes

Setelah selesai mendelete sambungan antara xsd dengan bpel, Saatnya membuat sambungan baru, sambungan yang akan kita buat adalah xsd - mediator - bpel . Karena itu pertama tarik sambungan dari xsd ke arah sebelah kiri mediator, kemudian tarik sambungan dari sebelah kanan mediator ke sebelah kiri bpel.
xsd ke mediator
mediator ke bpel

Setelah selesai membuat sambungan, double klik pada mediator. Akan terlihat tampilan seperti di bawah. centang bagian validate Syntax(XSD) yang berada di bawah Routing Rules.
Centang Validate Syntax(XSD)
Yap,sudah selesai. Mediator sudah terpasang pada bpel anda tanpa merusak bpel yang sudah ada :D
Dan apabila di coba menggunakan soapUI. Respose yang didapat akan seperti di bawah ini, kita akan mendapatkan informasi data yang salah dan berada di element yang mana sehingga akan lebih informatif.

Invalid XSD divalidate oleh Mediator

Sekian dulu mengenai validasi xsd pada kesempatan kali ini. Semoga membantu.