SOAP dan Aplikasi dengan Trigger MySQL

Sebenarnya kurang bisa disebut ‘bagus’, karena hanya memberikan contoh yang kurang atau bahkan jauh dari mencukupi sebagai informasi. Namun, saya merasa cukuplah untuk dijadikan ‘bayangan.

Awalnya ingin menulis secara penuh tentang crosstab query guna optimisasi  query di mysql dan teknologi SOAP (Simple Object Access Protocol) dengan WSDL (Web Service Description Language) nya, tapi saya coba sedikit menjadi satu disini. Skema nya dapat dilihat sebagai berikut:

soap web serviceRumit juga karena saya yang notabene bukan seorang programmer ataupun developer mencoba memahami ini. Sedikitnya jika menginginkan PHP berintegrasi dengan SOAP (SOAP sendiri merupakan kumpulan class-class PHP yang memungkinkan  user untuk mengirim  dan menerima pesan SOAP melalui protocol HTTP.) diperlukan sebuah class berupa SoapServer yang sayangnya tidak secara otomatis membuat file WSDL. Jadi butuh lagi sebuah framework seperti Zend dll guna mempermudah perombakan file. Jika web service yang dituju menggunakan file WSDL, maka SoapClient akan mengacu pada url file WSDL tersebut dan menggunakan class WSDL untuk melakukan parsing data. Kemudian pesan SOAP (SOAP request) akan dikirim mengirimkan pesannya melalui soap_transport_http (Lihat gambar diatas).

Trigger dengan MySQL

Bayangkan anda bekerja sebagai Sys.Administrator dan memiliki tugas tambahan melayani sebuah Content Provider yang ingin me-create sebuah service. Client menginginkan bahwa data service yang dinginkan adalah service ‘DOA’ dan nilai charging dari service DOA tersebut adalah 2000 rupiah/pembelian, namun platform haruslah memiliki mapping antara service dan charging agar bisa ‘membacanya. Proses Inserting  dapat menjadi sebuah kegiatan rutin yang tidak biasa bagi seorang Sys.Admin. Anda tinggal membuka tools nya dan insert bukan ?, namun secara garis besar dibalik semua itu si Sys.Admin haruslah mengerti cara kerja kode2 berikut (saya membuatnya hanya dengan satu file sederhana saja):

TRIGGER_MYSQL

Script dan Structure DB bisa di download di trigger
Tambahkan trigger pada MySQL :

// Commentary
// Make sure there are no trigger names tifosilinux
drop trigger update_tifosilinux;
drop trigger update_tifosilinux_com;

create trigger update_tifosilinux after insert on service
for each row begin
insert into service_charging_mapping values (NEW.id, ‘NOL’);
end$$

create trigger update_tifosilinux_com after insert on charging
for each row begin
insert into service_charging_mapping values (‘NOL’, NEW.id);
update service_charging_mapping set charging_id = NEW.id where charging_id = ‘NOL’;
delete from service_charging_mapping where service_id = ‘NOL’;
end$$

// Setting delimiter ke ‘$$’ (without quote) on field column phpMyAdmin
//  [ Delimiter ] Show this query here again

Perintah diatas akan membuat 2 buah trigger dengan nama update_tifosilinux dan update_tifosilinux_com. Untuk trigger yang pertama akan otomatis melakukan inserting data ke field service_id pada tabel service_charging_mapping dengan isi ‘NOL’ field charging_id.

Untuk trigger yang kedua juga akan menjalankan inserting data ke field charging_id pada tabel service_charging_mapping dengan isi ‘NOL’ field service_id serta melakukan update field charging_id dengan ‘ID baru’ yang telah di insert, dimana field charging_id yang akan di update ini NOL sebelumnya.

Least but not last, trigger akan melakukan atau memastikan ke validan data dengan action delete setiap service_id yang berisi ‘NOL’.

Sebenarnya kita bisa langsug melakukan inserting data melalui metode $_POST[‘<value>’] ke tabel service_charging_mapping, namun saya coba melalui cara lain agar lebih memahami arahnya.

BR

Advertisements

Tinggalkan pesan atau komentar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s