Fitur orkestrasi layanan di DataService Studio menyediakan antarmuka visual berbasis drag-and-drop untuk membangun alur kerja. Anda dapat mengatur beberapa API dan fungsi ke dalam alur kerja dengan struktur sekuensial, paralel, dan percabangan sesuai logika bisnis Anda.
Prasyarat
-
Fitur orkestrasi layanan memerlukan DataWorks Enterprise Edition atau versi yang lebih baru. Untuk informasi selengkapnya, lihat Edisi dan penagihan.
-
Fitur orkestrasi layanan hanya tersedia di Wilayah China (Shanghai). Fitur ini saat ini sedang menjalani peningkatan dan sementara tidak tersedia. Kami menghargai kesabaran Anda.
Informasi latar belakang
Saat Anda memanggil layanan API Service arrangement, sistem mengeksekusi node layanan yang telah dikonfigurasi secara berurutan, meneruskan parameter di antara node tersebut, dan secara otomatis mengelola transisi statusnya. Fitur orkestrasi layanan sangat menyederhanakan biaya pengembangan dan O&M dalam menggabungkan beberapa layanan, sehingga Anda dapat fokus pada logika bisnis Anda.
Orkestrasi layanan menawarkan keunggulan berikut:
-
Biaya pengembangan API yang lebih rendah
Buat alur kerja dengan antarmuka visual drag-and-drop. Anda dapat mengatur pemanggilan API dalam struktur sekuensial, paralel, atau bercabang tanpa menulis kode tambahan, sehingga secara signifikan mengurangi biaya pengembangan.
-
Kinerja pemanggilan layanan yang lebih baik
Menjalankan beberapa pemanggilan API atau fungsi dalam instans kontainer yang sama mengurangi overhead jaringan dibandingkan dengan membangun layanan alur kerja sendiri, sehingga meningkatkan kinerja secara signifikan.
-
Arsitektur serverless
Orkestrasi layanan menggunakan arsitektur serverless dengan auto scaling. Anda tidak perlu mengelola lingkungan runtime dasar, sehingga dapat fokus sepenuhnya pada logika bisnis Anda.
Aturan input dan output
DataService Studio menggunakan JSONPath untuk mengambil nilai parameter. JSONPath adalah bahasa ekspresi untuk mengekstraksi data dari dokumen JSON. Untuk informasi selengkapnya, lihat dokumentasi resmi JSONPath.
Sebagai contoh, pertimbangkan urutan tiga node: A, B, dan C. Node C perlu mengakses output dari Node A dan Node B:
-
Output Node A: {"namea":"valuea"}.
Untuk mengakses output Node A, gunakan ${A.namea}.
-
Output Node B: {"nameb":"valueb"}.
Untuk mengakses output Node B, gunakan $.nameb atau ${B.nameb}.
Sistem menyertakan start node bawaan yang menyediakan parameter input awal untuk alur kerja. Sebagai contoh, jika input alur kerja adalah {"namewf":"valuewf"}, node mana pun dapat mengakses nilai ini menggunakan ekspresi ${START.namewf}.
start node dan end node adalah node sistem bawaan. Anda dapat mengganti namanya, tetapi tidak dapat menghapusnya. start node merupakan langkah awal, atau Node 0, dari alur kerja.
Parameter
-
Parameter permintaan alur kerja
Klik Request Parameters di sisi kanan halaman edit orkestrasi layanan untuk mengonfigurasi parameter permintaan dengan memilih Add manually atau Automatic analysis:
-
Add manually: Klik Add Parameter untuk menambahkan parameter permintaan bagi alur kerja.
-
Automatic analysis: Jika node pertama alur kerja adalah node API, klik Automatically parse request parameters untuk memetakan parameter permintaan API ke alur kerja.
-
-
Parameter permintaan node API
Klik node API, lalu pada panel yang muncul, klik Input Request Parameters untuk mengonfigurasi nilai parameter permintaannya.
-
Secara default, sistem melakukan pemetaan berdasarkan nama, mencocokkan parameter dengan bidang bernama sama di tingkat teratas output JSON node sebelumnya.
CatatanJika node saat ini adalah node pertama dalam alur kerja, parameternya dipetakan berdasarkan nama dari parameter permintaan utama alur kerja.
-
Jika Anda menetapkan nilai parameter, sistem akan menggunakan nilai yang Anda berikan.
CatatanUntuk menetapkan nilai parameter node saat ini ke nilai parameter spesifik dari node hulu tertentu, Anda harus menggunakan ekspresi JSONPath.
-
-
Parameter respons node API
Klik node API, pilih kotak centang set output results, dan gunakan ekspresi JSONPath untuk menyesuaikan output. Contohnya:
{ "return1":"$.data.rows.user_id", "return2":"$.data.rows.user_name" } -
Parameter permintaan node Python
Klik node Python dan masukkan konten untuk parameter permintaan di editor Request Parameters.
-
Parameter respons node Python
Klik node Python, pilih kotak centang set output results, dan gunakan ekspresi JSONPath untuk menyesuaikan output. Contohnya:
{ "return1":"$.data.rows.user_id", "return2":"$.data.rows.user_name" }
Tabel berikut menjelaskan ekspresi JSONPath umum untuk mengambil nilai parameter.
|
Ekspresi JSONPath |
Penggunaan permintaan |
Penggunaan respons |
|
$. |
Merujuk objek root dari output node sebelumnya. |
Merujuk objek root dari output node saat ini. |
|
$.param |
Mengambil nilai parameter param dari output node sebelumnya. |
Mengambil nilai parameter param dari output node saat ini. |
|
${START} |
Mengambil parameter permintaan dari alur kerja, yaitu output dari start node. | |
|
${NodeID} |
Mengambil output dari node dengan ID yang ditentukan. | |
|
${NodeID.param} |
Mengambil nilai parameter param dari output node dengan ID yang ditentukan. | |
Contoh
Login ke Konsol DataWorks. Di wilayah target, klik di panel navigasi kiri. Pilih ruang kerja dari daftar drop-down dan klik Go to DataService Studio.
-
Daftarkan API.
Contoh ini mendaftarkan API dari titik akhir yang sudah ada.
-
Di panel navigasi kiri, klik ikon
untuk membuka halaman Service Development. -
Arahkan kursor ke ikon
dan pilih . -
Pada kotak dialog Register API, konfigurasikan parameter. Untuk informasi selengkapnya, lihat Register an external API service.
-
Klik Determine.
-
-
Daftarkan fungsi.
-
Di halaman Service Development, arahkan kursor ke ikon
dan pilih .Alternatifnya, Anda dapat menemukan proses bisnis terkait, klik kanan Function, lalu pilih .
-
Pada kotak dialog Create Python Function, konfigurasikan parameter. Untuk informasi selengkapnya, lihat Manage functions.
-
Klik OK.
-
Di halaman konfigurasi fungsi, masukkan kode berikut di area Edit Code.
# -*- coding: utf-8 -*- # event (str) : in filter it is the API result, in other cases, it is your param # context : some environment information, temporarily useless # import module limit: json,time,random,pickle,re,math import json def handler(event,context): # load str to json object obj = json.loads(event) # add your code here # end add return obj -
Di bagian Environment Configuration, atur Memory dan Timeout.
-
Klik ikon
di bilah alat.
-
-
Buat alur kerja.
-
Di halaman Service Development, arahkan kursor ke ikon
dan klik Create Workflow.Alternatifnya, Anda dapat menemukan proses bisnis terkait, klik kanan Service arrangement, lalu pilih Create Workflow.
-
Pada kotak dialog Service arrangement, konfigurasikan parameter.
Parameter
Deskripsi
API Name
Panjangnya harus 4 hingga 50 karakter dan dapat berisi karakter Tionghoa, huruf, angka, serta garis bawah (_). Harus dimulai dengan karakter Tionghoa atau huruf.
APIPath
Jalur tempat API disimpan, misalnya /user.
CatatanJalur dapat memiliki panjang maksimal 200 karakter dan dapat berisi huruf, angka, garis bawah (_), serta tanda hubung (-). Harus dimulai dengan garis miring (/).
Protocol
Protokol yang didukung adalah HTTP dan HTTPS.
Untuk memanggil API melalui HTTPS, publikasikan API ke gerbang, bind Nama domain independen, dan unggah Sertifikat SSL di Konsol API Gateway. Untuk informasi selengkapnya, lihat Enable HTTPS support.
Request Method
Metode yang didukung adalah GET dan POST.
Response Type
Hanya tipe respons JSON yang didukung.
Visibility Scope
Opsi termasuk Workspace dan Private:
-
Workspace: API terlihat oleh semua anggota dalam ruang kerja ini.
-
Private: API hanya terlihat oleh Pemilik API. Saat ini belum mendukung otorisasi kepada pengguna lain.
CatatanJika visibilitas diatur ke Private, hanya Anda yang dapat melihat API di pohon direktori; anggota ruang kerja lain tidak dapat melihatnya.
Tag
Pilih tag yang sesuai dari daftar Tag.
CatatanNama tag dapat berisi karakter Tionghoa, huruf, angka, dan garis bawah (_). Anda dapat menambahkan hingga lima tag, dan setiap tag dapat memiliki panjang maksimal 20 karakter.
Description
Masukkan deskripsi singkat API, maksimal 2.000 karakter.
Location
Direktori tempat alur kerja orkestrasi layanan disimpan.
-
-
Klik OK.
-
-
Edit alur kerja.
-
Di halaman editor alur kerja, seret dan hubungkan modul yang sesuai sesuai urutan berikut.
Node-nya, dari atas ke bawah, adalah Start, API, SWITCH, PYTHON, dan End. Seret dan hubungkan node-node ini di Kanvas sesuai urutan tersebut.
-
Klik node API1 untuk mengeditnya. Dari daftar Select API, pilih API yang telah Anda daftarkan. Pilih kotak centang set output results dan masukkan
{"user_id":"$.data[0].id"}.Output diproses menggunakan JSONPath. Sintaks untuk mengambil nilai node (misalnya, ${NodeA.namea}) sama seperti untuk parameter input. Ekspresi
{"user_id":"$.data[0].id"}menetapkan id elemen pertama dalam array data dari hasil node saat ini ke user_id. Node tersebut kemudian menghasilkan data JSON dalam format {"user_id":"value"}. -
Klik node PYTHON1, lalu dari daftar Select Function, pilih fungsi yang telah Anda daftarkan.
-
Klik node SWITCH1, lalu di dialog editor, klik Set branch conditions.
Ekspresi kondisional mengevaluasi output dari node sebelumnya, misalnya
${NodeID.OutputName}>1atau$.OutputName>1. Operator yang didukung meliputi ==, !=, >=, >, <=, <, &&, !, (), +, -, *, /, dan %.Pada contoh ini, output user_id dari node hulu digunakan sebagai parameter permintaan untuk node hilir.
New Branch 1: $.user_id != 1 # Dieksekusi jika user_id hulu bukan 1. New Branch 2: $.user_id == 1 # Dieksekusi jika user_id hulu adalah 1. -
Klik node Complete, lalu klik Response Parameters di sisi kanan halaman untuk mengonfigurasi parameter respons.
-
-
Uji alur kerja.
-
Klik Test di pojok kanan atas halaman.
-
Di kotak dialog Test APIs, klik Determine.
-
Lihat Runtime Log dan Execution results di bagian bawah halaman.
-