Lanjutan dari part 1...
- Sebelum melanjutkan proses, kita akan terlebih dahulu membuat XSLT script yang akan digunakan nanti pada proses transforming di dalam OSB. Buat XSLT dan beri nama xslt_1 & xslt_2 & xslt_add_namespace. Berikut code untuk xslt_1 :<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ><xsl:copy><xsl:output indent="yes" /> <xsl:template match="@* | node()"><xsl:template match="soapenv:*"><xsl:apply-templates select="@* | node()" /> </xsl:copy> </xsl:template></xsl:stylesheet><xsl:apply-templates select="@* | node()" /></xsl:template>Berikut code untuk xslt_2 :<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="*"> <xsl:element name="{local-name()}"></xsl:template><xsl:apply-templates select="@* | node()" /> </xsl:element> <xsl:template match="@*"></xsl:template><xsl:attribute name="{local-name()}"> <xsl:value-of select="." /> </xsl:attribute></xsl:stylesheet><xsl:template match="text() | comment() | processing-instruction()"> <xsl:copy /></xsl:template>Berikut code untuk xslt_add_namespace :<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="node()|@*"> <xsl:copy></xsl:template><xsl:apply-templates select="node()|@*" /> </xsl:copy> <xsl:template match="*"><xsl:apply-templates select="node()|@*" /><xsl:element name="inq:{local-name()}" namespace="www.nostratech.com/xsd/inquiry"> </xsl:element> </xsl:template></xsl:stylesheet>Sedikit penjelasan, untuk melakukan convert dari SOAP ke REST kita harus terlebih dahulu membuang soap envelope & namespace yang ada dalam body SOAP menggunakan xslt_1 & xslt_2 sehingga hanya tersisa xml body yang diperlukan sebagai payload input untuk REST xml kita. Sedangkan untuk proses convert dari REST ke SOAP, kita memerlukan xslt_add_namespace untuk menambahkan namespace sebelum di passing kembali ke SOAP body. - Langkah selanjutnya kita akan melakukan Routing & Transform pada Proxy Service yang telah kita buat. Klik Edit Message Flow, kemudian tambahkan pipeline air.
Tambahkan Stage dimasing masing Request & Response Pipeline.
- Langkah selanjutnya ialah mengedit Stage yang ada dibagian Request terlebih dahulu. Klik edit stage. Tambahkan Assign sebanyak 2 buah.
- Jika sudah, pada Assign pertama, klik Expression, kemudian pilih XSLT Resource, pilih xslt_1 yang telah kita buat tadi. Pada bagian Input Document isi dengan :
$body/inq:accountInquiryRequest
Kemudian klik Save. Setelah itu isi input variable nya dengan var1. Tujuan nya adalah menyimpan proses hasil xslt_1 yang diambil dari $body/inq:accountInquiryRequest ke var1.
- Pada Assign kedua, klik Expression, kemudian pilih XSLT Resource, pilih xslt_2 yang telah kita buat tadi. Pada bagian Input Document isi dengan :
$var1
Kemudian klik Save. Setelah itu isi input variable dengan var2.
- Tambahkan Action dengan Service Callout.
Klik Service, kemudian pilih Business Service yang telah kita buat tadi. Jika sudah maka tampilan nya akan seperti berikut :
Pada bagian Request Document Variable isi dengan var2, dan pada bagian Response Document Variable isi dengan var3. Jika sudah Klik Save.
- Langkah selanjutnya ialah mengedit Stage yang ada dibagian Response. Klik Edit Stage. Tambahkan Assign sebanyak 2 buah.
- Pada Assign pertama, Klik Expression, kemudian pilih XSLT Resource, pilih xslt_1 yang telah kita buat tadi. Pada bagian Input Document isi dengan :
$var3
Setelah itu isi input variablenya dengan var4. - Pada Assign kedua, Klik Expression, kemudian pilih XSLT Resource, pilih xslt_add_namespace yang telah kita buat tadi. Pada bagian Input Document isi dengan :
$var4
Kemudian klik Save.
Setelah itu isi input variable nya dengan var5. - Tambahkan Action Replace. Kemudian pada bagian XPath isi dengan :
.
Kemudian Save.
Pada bagian in Variable di isi dengan :body
Pada bagian with, di isi dengan :$var5
Kemudian pilih Replace Node Content.
Jika sudah klik Save.
Commit Session, kemudian bisa kita test. - Ketika Test, bisa memakai contoh payload sebagai berikut :
<inq:accountInquiryRequest xmlns:inq="http://www.nostratech.com/xsd/inquiry"> <inq:bankCode>123</inq:bankCode> <inq:accountNo>1234567890</inq:accountNo> <inq:accountCurrency>IDR</inq:accountCurrency> <inq:messageId>1234567890</inq:messageId> <inq:rqDatetime>2008-09-29T08:49:45</inq:rqDatetime> </inq:accountInquiryRequest>
Kira kira hasilnya akan sepertinya ini.<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> </soap:Header> <soapenv:Body> <inq:accountInquiryRequest xmlns:inq="www.nostratech.com/xsd/inquiry"> <inq:bankCode>123</inq:bankCode> <inq:accountNo>1234567890</inq:accountNo> <inq:accountCurrency>IDR</inq:accountCurrency> <inq:messageId>1234567890</inq:messageId> <inq:rqDatetime>2008-09-29T08:49:45</inq:rqDatetime> </inq:accountInquiryRequest> </soapenv:Body> </soapenv:Envelope>
No comments:
Post a Comment