Anda sedang melihat dokumentasi Apigee Edge.
Lihat dokumentasi Apigee X.

Gunakan kebijakan FlowInfo untuk memanggil flow bersama dari proxy API atau alur bersama lainnya.
Dalam alur bersama, Anda membuat urutan langkah-langkah yang dapat digunakan kembali pada saat runtime dari beberapa tempat. Langkah-langkah ini diterapkan sebagai kebijakan, seperti dalam proxy API. Kebijakan FlowInfo memberi Anda cara untuk memanggil alur bersama dari proxy API dan alur bersama lainnya. Cara kerjanya seperti panggilan fungsi dalam bahasa pemrograman tradisional.
- Misalnya, bayangkan Anda telah membuat alur bersama dengan fitur keamanan seperti verifikasi kunci API, validasi token OAuth, dan perlindungan ekspresi reguler. Alur bersama ini merepresentasikan konvensi Anda untuk cara memeriksa permintaan masuk. Dengan menggunakan kebijakan FlowInfo, Anda dapat memanggil alur yang dibagikan tersebut dari beberapa proxy API.
- Anda dapat memanggil satu alur bersama dari alur lainnya dengan menerapkan kebijakan FlowInfo dari dalam alur bersama.
Sample
Memverifikasi kunci API di alur bersama
Dalam contoh ini, alur bersama digunakan untuk melakukan tugas terkait keamanan umum. Di sini, alur bersama memvalidasi kunci API. Proxy API dan alur bersama lainnya dapat menggunakan kebijakan FlowInfo untuk melakukan panggilan ke alur yang dibagikan ini.
Definisi flow bersama berikut menyertakan kebijakan Verify-API-Key
yang dijalankan
saat alur bersama dipanggil dari kebijakan FlowInfo di proxy API.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>Verify-API-Key</Name> </Step> </SharedFlow>
Kebijakan VerifyAPIKey
dalam alur bersama sebelumnya akan mengambil nilai kunci dan
memverifikasinya.
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key"> <DisplayName>Verify API Key</DisplayName> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Kebijakan FlowInfo berikut, yang digunakan dalam proxy API, memanggil alur yang dibagikan sebelumnya untuk
memverifikasi kunci API. Paket alur bersama verify-apikey-shared
(tidak ditampilkan di sini)
mengonfigurasi alur yang dibagikan dengan cara paket APIProxy mengonfigurasi proxy.
<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout"> <DisplayName>Auth Flow Callout</DisplayName> <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle> </FlowCallout>
Meneruskan parameter ke alur bersama
Contoh ini menggambarkan cara meneruskan parameter dari kebijakan FlowInfo ke alur bersama. Di sini, kebijakan FlowInfo memanggil flow bersama yang dirancang untuk menjalankan fungsi penanganan string umum. Alur bersama menyertakan JavaScript yang menggabungkan inputnya, menggunakan huruf kecil untuk inputnya, atau keduanya. Kebijakan FlowInfo menentukan parameter yang menentukan input string, output, dan tindakan yang harus dilakukan terhadap input tersebut.
Kebijakan FlowInfo
String-Handler
memanggil flow bersama, meneruskan parameter yang menentukan variabel untuk menyimpan output alur bersama, operasi flow bersama yang akan digunakan, dan input yang akan digunakan (di sini, literal string, tetapi juga dapat berupa variabel flow). ElemenParameter
menentukan nama dan nilai variabel untuk membuat runtime. Alur bersama dapat mengambil variabel tersebut untuk digunakan dalam kodenya sendiri.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="operations">concatenate tolowercase</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
Alur bersama
default
berikut menyertakan kebijakan JavaScriptSharedStringFunctions
yang dijalankan saat alur bersama dipanggil dari kebijakan FlowInfo.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
Dalam alur bersama, kebijakan JavaScript
SharedStringFunctions
berikut menentukan file JavaScript SharedStringFunctions.js dengan kode yang akan dieksekusi.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions"> <DisplayName>SharedStringFunctions</DisplayName> <Properties/> <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL> </Javascript>
JavaScript berikut, SharedStringFunctions.js, dieksekusi dari kebijakan JavaScript
SharedStringFunctions
. Skrip ini mengambil nilai dari variabel yang dibuat dari elemenParameter
kebijakan FlowInfo.// Input value from the calling API proxy. var handledString = context.getVariable("input"); // Variable to use for output from this script. var outputVariable = context.getVariable("outputVariable"); // A space-separated list of things to do to the input string. // Convert to lower case to handle unintentional capitals in configuration. var operation = context.getVariable("operations").toLowerCase(); // If "lowercase" was given as an operation, convert the input to lowercase. if (operation.includes("tolowercase")) { handledString = handledString.toLowerCase(); } // If "concatenate" was given as an operation, concatenate the input. if (operation.includes("concatenate")) { handledString = handledString.replace(/\s+/g, ''); } // Assign the resulting string to the output variable specified by // the calling API proxy. context.setVariable(outputVariable, handledString);
- Eksekusi mengalir kembali dari kebijakan JavaScript, ke alur bersama, lalu ke kebijakan FlowInfo di proxy API asal.
Referensi elemen
Berikut adalah elemen dan atribut yang dapat Anda konfigurasikan pada kebijakan ini:
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1"> <DisplayName>Custom label used in UI</DisplayName> <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle> </FlowCallout>
Atribut <FlowInfo>
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke Tetapkan ke |
false | Opsional |
enabled |
Tetapkan ke Tetapkan ke |
benar | Opsional |
async |
Atribut ini tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Selain atribut name
, beri label pada kebijakan
di editor proxy UI pengelolaan dengan nama bahasa natural yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghilangkan elemen ini, nilai atribut |
---|---|
Ketersediaan | Opsional |
Type | String |
Elemen <SharedFlowBundle>
Menentukan nama alur bersama yang akan dipanggil. Nilai elemen ini harus sama dengan nilai atribut nama elemen SharedFlowBundle target.
<SharedFlowBundle/>
Pada contoh yang paling sederhana, Anda memberikan nama flow bersama yang dipanggil sebagai nilai untuk
elemen ini. Artinya, nilai elemen ini harus sama dengan nilai atribut name
alur bersama.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
Default | T/A |
Kehadiran |
Wajib diisi. |
Jenis | T/A |
Atribut
Tidak ada.
Elemen <Parameter>
Menentukan parameter dan nilai (atau sumber nilai) untuk diteruskan sebagai variabel ke dalam alur bersama yang dipanggil oleh kebijakan ini.
Dengan menggunakan parameter, Anda dapat menentukan nilai (atau variabel yang berisi nilai) yang harus diteruskan ke alur bersama yang dipanggil oleh kebijakan. Ini secara konsep mirip dengan menetapkan parameter dalam panggilan fungsi. Seperti parameter fungsi, nilai parameter FlowInfo dapat bervariasi berdasarkan konteks panggilan alur yang dibagikan.
Parameter FlowInfo hanya terlihat selama eksekusi alur bersama.
Sintaksis
Anda dapat menggunakan elemen ini dengan salah satu formulir sintaksis berikut. Perhatikan bahwa di mana Anda menggunakan nilai literal, format nilai yang Anda tentukan akan bergantung pada kode yang memakainya.
<!- A literal value in an attribute. --/> <Parameter name="parameter-name" value='parameter-value' /> <!- A reference to a variable in an attribute. --/> <Parameter name="parameter-name" ref='source-variable-name' /> <!- A literal value in the element content. --/> <Parameter name="parameter-name">parameter-value</Parameter> <!- An reference to an attribute in the element content. --/> <Parameter name="parameter-name">{source-variable-name}</Parameter>
Contoh
Kebijakan FlowInfo kebijakan String-Handler
yang meneruskan parameter yang menentukan
tempat untuk menyimpan output flow bersama dan input apa yang akan digunakan. Elemen Parameter
menentukan nama dan nilai variabel untuk membuat runtime. Alur bersama dapat mengambil
variabel ini untuk digunakan dalam kodenya sendiri.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
Default | T/A |
Kehadiran |
Wajib diisi. |
Jenis | T/A |
Atribut
Atribut | Deskripsi | Default | Ketersediaan | Type |
---|---|---|---|---|
nama | Nama variabel runtime yang akan dibuat dengan parameter ini. | Tidak ada. | Wajib diisi. | String |
Rujukan |
Variabel berisi nilai yang akan digunakan pada waktu proses. Hapus atribut ini jika Anda menentukan nilai literal yang akan digunakan. |
Tidak ada. | Opsional. | String |
value | Nilai yang akan digunakan dalam variabel runtime yang dibuat dengan parameter ini. Hapus atribut ini jika Anda menentukan nama variabel yang harus menjadi sumber nilai. | Tidak ada. | Opsional. | String |
Elemen <Parameters>
Menentukan kumpulan elemen <Parameter> yang akan diteruskan sebagai variabel ke dalam alur bersama yang dipanggil oleh kebijakan ini.
Sintaksis
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
Default | T/A |
Kehadiran |
Opsional. |
Jenis | T/A |
Atribut
Tidak ada.
Skema
Variabel flow
Variabel flow memungkinkan perilaku kebijakan dan alur yang dinamis saat runtime, berdasarkan header HTTP, konten pesan, atau konteks alur. Untuk informasi selengkapnya tentang variabel Flow, lihat Referensi variabel.
Variabel | Deskripsi |
---|---|
|
Cakupan: Selama eksekusi alur bersama Nilai atribut nama alur bersama. |
|
Cakupan: Selama eksekusi alur bersama yang dilampirkan ke hook alur. Nama hook alur. |
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang dikembalikan, serta variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan fault untuk menangani fault. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
Kode kesalahan | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
flow.SharedFlowNotFound |
500 | Alur bersama tidak ada, atau alur bersama ada, tetapi tidak di-deploy. | build |
Error deployment
T/A
Topik terkait
- Membuat alur bersama: Alur bersama yang dapat digunakan kembali
- Mengeksekusi flow bersama di beberapa proxy: Melampirkan flow bersama menggunakan hook alur