BPEL: Komposisi perkhidmatan untuk SOA

BPEL (Business Process Execution Language) telah menjadi salah satu teknologi terpenting SOA (seni bina berorientasikan perkhidmatan) dan memungkinkan komposisi perkhidmatan yang mudah dan fleksibel ke dalam proses perniagaan. BPEL sangat penting kerana memperkenalkan konsep baru ke dalam pengembangan aplikasi - program-in-the-large. Konsep ini membolehkan kita mengembangkan proses dengan cepat dengan menentukan urutan di mana perkhidmatan akan digunakan. Dengan cara ini, aplikasi (dan sistem maklumat) menjadi lebih fleksibel dan dapat menyesuaikan diri dengan perubahan dalam proses perniagaan dengan lebih baik.

Proses perniagaan biasanya bersifat dinamik. Syarikat harus memperbaiki dan mengubahsuai, bertindak dengan tangkas, mengoptimumkan, dan menyesuaikan proses untuk meningkatkan daya tindak keseluruhan syarikat. Setiap perubahan dan peningkatan dalam proses perniagaan harus tercermin dalam aplikasi yang memberikan sokongan untuk mereka. Walaupun syarat ini mungkin tidak begitu sukar dipenuhi, keadaan dunia nyata menunjukkan gambaran yang berbeza kepada kita. Mengubah dan mengubah aplikasi selalunya merupakan pekerjaan yang sukar, yang memerlukan masa. Oleh itu aplikasi tidak dapat bereaksi seketika terhadap perubahan dalam proses bisnis — sebaliknya, mereka memerlukan sedikit waktu untuk melaksanakan, menguji, dan menerapkan modifikasi.

Menjadikan sistem maklumat lebih fleksibel dan dapat disesuaikan dengan perubahan, dan lebih sesuai dengan proses perniagaan adalah janji utama SOA. Dalam artikel ini, saya menunjukkan mengapa BPEL sangat penting dan menunjukkan bagaimana mengembangkan proses BPEL.

Pendekatan berorientasikan perkhidmatan

Pendekatan SOA untuk automasi proses perniagaan yang cekap memerlukan:

  • Cara standard untuk mendedahkan dan mengakses fungsi aplikasi sebagai perkhidmatan
  • Infrastruktur bas perusahaan untuk komunikasi dan pengurusan perkhidmatan, termasuk pemintas pesanan, perutean, transformasi, dll.
  • Bahasa khusus untuk komposisi fungsi aplikasi yang terdedah ke dalam proses perniagaan

Keperluan pertama dipenuhi oleh seni bina diedarkan terkini - perkhidmatan Web. Keperluan kedua dipenuhi oleh ESB (bus perkhidmatan perusahaan), yang memberikan sokongan untuk pengurusan perkhidmatan dan komunikasi mereka yang terpusat, deklaratif, dan terkoordinasi dengan baik. Keperluan ketiga, komposisi perkhidmatan ke dalam proses, dipenuhi oleh BPEL, bahasa khusus yang biasa diterima untuk definisi dan pelaksanaan proses perniagaan.

Proses perniagaan, seperti yang dilihat oleh BPEL, adalah kumpulan panggilan layanan terkoordinasi dan kegiatan terkait yang menghasilkan hasil, baik dalam satu organisasi atau di beberapa. Sebagai contoh, proses perniagaan untuk merancang perjalanan perniagaan akan menggunakan beberapa perkhidmatan. Dalam senario yang disederhanakan, proses perniagaan memerlukan kami untuk menentukan nama pekerja, destinasi, tarikh, dan perincian perjalanan yang lain. Kemudian proses tersebut akan menggunakan perkhidmatan Web untuk memeriksa status pekerja. Berdasarkan status pekerja, ia akan memilih kelas perjalanan yang sesuai. Kemudian ia akan menggunakan perkhidmatan Web dari beberapa syarikat penerbangan (seperti American Airlines, Delta Airlines, dll.) Untuk memeriksa harga tambang dan membelinya dengan harga terendah.

Bagi pelanggan, proses BPEL akan memperlihatkan fungsinya dengan cara yang sama seperti perkhidmatan Web lain. Dari perspektif pelanggan, ia akan kelihatan sama seperti perkhidmatan Web lain. Ini penting dan berguna, kerana ia membolehkan kita menyusun perkhidmatan menjadi proses mudah, proses sederhana menjadi proses yang lebih kompleks, dan sebagainya. Ini juga bermaksud bahawa setiap proses BPEL akan dihuraikan dengan penerangan WSDL (Web Deskripsi Language Language).

Konsep teras

BPEL adalah bahasa berasaskan XML. Proses BPEL terdiri daripada langkah-langkah. Setiap langkah dipanggil aktiviti. BPEL menyokong aktiviti primitif dan struktur. Kegiatan primitif mewakili konstruk asas dan digunakan untuk tugas biasa, seperti yang disenaraikan di bawah:

  • Memohon perkhidmatan Web, menggunakan
  • Menunggu permintaan, menggunakan
  • Memanipulasi pemboleh ubah data, menggunakan
  • Menunjukkan kesalahan dan pengecualian, penggunaan , dll.

Kami kemudian dapat menggabungkan aktiviti ini ke dalam algoritma yang lebih kompleks yang menentukan langkah-langkah proses perniagaan. Untuk menggabungkan aktiviti primitif, BPEL menyokong beberapa aktiviti struktur. Yang paling penting adalah:

  • Urutan ( ) untuk menentukan sekumpulan aktiviti yang akan dipanggil mengikut urutan
  • Aliran ( ) untuk menentukan sekumpulan aktiviti yang akan dipanggil secara selari
  • Konstruk suis kes ( ) untuk melaksanakan cawangan
  • Sementara ( ) untuk menentukan gelung, dll.

Seperti yang akan kita lihat, BPEL tidak jauh berbeda dengan bahasa pengaturcaraan, seperti Java. Tetapi kita akan melihat bahawa BPEL berbeza dari Java dan menyokong ciri-ciri proses perniagaan. BPEL juga menyediakan pengendali kesalahan dan pampasan, pengendali acara, dan set korelasi. Ia menyediakan kaedah untuk menyatakan aliran selari yang kompleks. Ini juga menjadikannya mudah untuk memanggil operasi asinkron dan menunggu panggilan balik.

Proses BPEL memerlukan persekitaran runtime - pelayan BPEL, yang memberikan kita kawalan yang baik terhadap pelaksanaannya. Biasanya, pelayan BPEL memberikan kawalan ke atas proses proses yang dijalankan dan yang telah selesai. Mereka menyokong proses yang berjalan lama dan dapat mengeringkan keadaan proses untuk menjimatkan sumber. Beberapa pelayan memberikan kawalan terhadap aktiviti proses dan membenarkan pemantauan mereka. Akhirnya, menggunakan pelayan BPEL, semua proses kami digunakan secara terpusat, yang memudahkan penyelenggaraan. Semua ini menjadikan pelayan BPEL persekitaran pilihan untuk menjalankan dan menguruskan proses.

Memilih pelayan BPEL yang betul boleh menjadi sukar, kerana terdapat beberapa pilihan. Beberapa pelayan BPEL paling popular yang berdasarkan Java EE (nama baru Sun untuk J2EE) termasuk Pengurus Proses BPEL Oracle, Yayasan Pelayan Integrasi Perniagaan IBM WebSphere, Integrasi WebLogic BEA, dan AquaLogic. Terdapat juga sekurang-kurangnya empat pelayan BPEL sumber terbuka yang tersedia: ActiveBPEL Engine, FiveSight PXE, bexee, dan Apache Agila.

Proses contoh

Mari kita lihat contoh proses BPEL untuk perjalanan perniagaan yang telah kita jelaskan di atas. Kami akan mengembangkan proses tidak segerak yang akan menggunakan panggilan segerak untuk memeriksa status perjalanan pekerja dan dua panggilan tak segerak untuk memperoleh harga tiket pesawat. Gambar di bawah menunjukkan keseluruhan struktur proses kami. Di sebelah kiri, kami melihat pelanggan yang memanggil prosesnya. Proses ini memanggil perkhidmatan Web status perjalanan pekerja terlebih dahulu. Kemudian ia menggunakan perkhidmatan Web kedua-dua syarikat penerbangan secara serentak dan tidak serentak. Ini bermaksud bahawa proses tersebut harus melaksanakan operasi panggilan balik (dan jenis pelabuhan), di mana syarikat penerbangan akan mengembalikan pengesahan tiket penerbangan. Akhirnya, proses mengembalikan tawaran tiket penerbangan terbaik kepada pelanggan. Dalam contoh ini, untuk menjaga kesederhanaan, kami tidak akan melaksanakan pengendalian kesalahan,yang penting dalam senario dunia nyata.

Mari kita tuliskan kod BPEL. Kami memulakan dengan deklarasi proses - elemen akar, di mana kami menentukan nama proses dan ruang nama:

Seterusnya, kita harus menentukan pautan rakan kongsi. Pautan rakan kongsi menentukan pelbagai pihak yang berinteraksi dengan proses BPEL. Ini merangkumi semua perkhidmatan Web yang akan dipanggil dan pelanggan prosesnya. Setiap pautan rakan kongsi menentukan hingga dua atribut: myRoleyang menunjukkan peranan proses perniagaan itu sendiri dan partnerRoleyang menunjukkan peranan rakan kongsi. Dalam contoh kami, kami menentukan empat pautan rakan kongsi:

Untuk menyimpan mesej dan memformat semula dan mengubahnya, kita memerlukan pemboleh ubah. Biasanya kita menggunakan pemboleh ubah untuk setiap mesej yang dihantar ke perkhidmatan Web dan diterima dari mereka. Dalam contoh kita, kita memerlukan beberapa pemboleh ubah. Untuk setiap pemboleh ubah, kita harus menentukan jenisnya. Kita boleh menggunakan jenis mesej WSDL, jenis ringkas Skema XML, atau elemen Skema XML. Dalam contoh kami, kami menggunakan jenis mesej WSDL untuk semua pemboleh ubah:

Sekarang kita sudah bersedia untuk menulis badan proses utama. Ia hanya mengandungi satu aktiviti peringkat teratas. Biasanya, ini membolehkan kita menentukan beberapa aktiviti yang akan dilakukan secara berurutan. Dalam urutannya, pertama-tama kami menentukan mesej input yang memulakan proses perniagaan. Kami melakukan ini dengan konstruk, yang menunggu mesej yang sepadan. Dalam kes kami, ini adalah TravelRequestmesejnya. Dalam konstruk, kami tidak menyatakan mesej secara langsung. Sebaliknya, kami menentukan pautan rakan kongsi, jenis port, nama operasi, dan, secara pilihan, pemboleh ubah yang menyimpan mesej yang diterima untuk operasi yang seterusnya. Kami menghubungkan penerimaan mesej dengan rakan pelanggan dan menunggu TravelApprovaloperasi dipanggil pada jenis port TravelApprovalPT. Kami menyimpan mesej yang diterima diTravelRequest pemboleh ubah:

Seterusnya, kita perlu menggunakan perkhidmatan Web Status Perjalanan Pekerja. Sebelum ini, kita harus menyiapkan input untuk perkhidmatan Web ini. Kita boleh membina mesej seperti itu dengan menyalin bahagian pekerja yang dihantar oleh pelanggan. Sekarang kita boleh menggunakan perkhidmatan Web Status Perjalanan Pekerja. Kami membuat permintaan segerak, yang mana kami menggunakan aktiviti tersebut. Kami menggunakan employeeTravelStatuspautan rakan kongsi dan memanggil EmployeeTravelStatusoperasi pada EmployeeTravelStatusPTjenis port. Kami telah menyediakan mesej input dalam EmployeeTravelStatusRequestpemboleh ubah. Oleh kerana ia adalah panggilan segerak, panggilan menunggu jawapan dan menyimpannya dalam EmployeeTravelStatusResponsepemboleh ubah:

Langkah seterusnya adalah menggunakan kedua-dua perkhidmatan Web syarikat penerbangan. Sekali lagi, kami terlebih dahulu menyediakan mesej input yang diperlukan (yang sama untuk kedua-dua perkhidmatan Web). Kami akan membuat panggilan tak segerak secara serentak. Untuk menyatakan persetujuan, BPEL menyediakan aktiviti tersebut. Permintaan ke setiap perkhidmatan Web akan terdiri daripada dua langkah:

  1. The aktiviti digunakan untuk doa tak segerak
  2. The aktiviti digunakan untuk menunggu panggil balik

Kami menggunakan untuk mengumpulkan kedua-dua aktiviti. Kedua-dua doa hanya berbeza pada nama pautan rakan kongsi. Kami menggunakan AmericanAirlinesuntuk satu dan DeltaAirlinesyang lain:

...