Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
  
    Lihat dokumentasi 
    Apigee Edge.
  
  
       
 
  
Gunakan kebijakan FlowCallout untuk memanggil alur bersama dari proxy API atau alur bersama lainnya.
Dalam alur bersama, Anda membuat urutan langkah yang dapat digunakan kembali saat runtime dari beberapa
  tempat. Langkah-langkah ini diterapkan sebagai kebijakan, seperti dalam proxy API. Kebijakan FlowCallout
  memberi Anda cara untuk memanggil alur bersama dari proxy API dan alur bersama lainnya. 
  Cara kerjanya seperti panggilan fungsi dalam bahasa pemrograman tradisional.
- Misalnya, Anda telah membuat alur bersama dengan fitur keamanan seperti
      verifikasi kunci API, validasi token OAuth, dan perlindungan ekspresi reguler.  Alur bersama ini
      mewakili konvensi Anda untuk cara memeriksa permintaan masuk.
      Dengan kebijakan FlowCallout, Anda dapat memanggil alur bersama tersebut dari beberapa proxy API.
- Anda dapat memanggil satu alur bersama dari alur bersama lain dengan menerapkan kebijakan FlowCalloutdari dalam alur bersama.
Kebijakan ini adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaannya, lihat Jenis kebijakan.
Sampel
Memverifikasi kunci API dalam alur bersama
Dalam contoh ini, alur bersama digunakan untuk melakukan tugas umum terkait keamanan. Di sini, alur bersama memvalidasi kunci API. Proxy API dan alur bersama lainnya dapat menggunakan
        kebijakan FlowCallout untuk melakukan panggilan ke alur bersama ini.
Definisi alur bersama berikut mencakup kebijakan Verify-API-Key yang dijalankan
        saat alur bersama dipanggil dari kebijakan FlowCallout 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 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 FlowCallout berikut, yang digunakan dalam proxy API, memanggil alur bersama sebelumnya untuk memverifikasi kunci API. Paket alur bersama verify-apikey-shared
      (tidak ditampilkan di sini) mengonfigurasi alur bersama dengan cara yang sama seperti 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 FlowCallout ke
        alur bersama. Di sini, kebijakan FlowCallout memanggil alur bersama yang dirancang untuk melakukan fungsi penanganan string umum. Alur bersama mencakup JavaScript yang menggabungkan inputnya,
        mengubah inputnya menjadi huruf kecil, atau keduanya. Kebijakan FlowCallout menentukan parameter yang menentukan
        input string, output, dan tindakan yang harus dilakukan terhadap input.
- Kebijakan - String-Handler- FlowCalloutmemanggil alur bersama, meneruskan parameter yang menentukan variabel untuk menyimpan output alur bersama, operasi alur bersama yang akan digunakan, dan input yang akan digunakan (di sini, literal string, tetapi bisa juga berupa variabel alur). Elemen- Parametermenentukan nama dan nilai variabel untuk dibuat saat 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="operations">concatenate tolowercase</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
- Alur bersama - defaultberikut mencakup kebijakan JavaScript- SharedStringFunctionsyang dijalankan saat alur bersama dipanggil dari kebijakan- FlowCallout.- <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
- Dalam alur bersama, kebijakan JavaScript - SharedStringFunctionsberikut menentukan file JavaScript- SharedStringFunctions.jsdengan 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 elemen- FlowCalloutkebijakan- Parameter.- // 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 kembali dari kebijakan JavaScript, ke alur bersama, lalu ke
        kebijakan FlowCalloutdi proxy API asal.
Referensi elemen
Berikut adalah elemen dan atribut yang dapat Anda konfigurasi 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 <FlowCallout>
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:
| Atribut | Deskripsi | Default | Kehadiran | 
|---|---|---|---|
| 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>
Gunakan selain atribut name untuk melabeli kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
| Default | T/A Jika Anda menghapus elemen ini, nilai atribut  | 
|---|---|
| Kehadiran | Opsional | 
| Jenis | String | 
Elemen <SharedFlowBundle>
Menentukan nama alur bersama yang akan dipanggil. Nilai elemen ini harus sama dengan
    nilai atribut nama elemen <SharedFlowBundle> target.
<SharedFlowBundle/>
Dalam contoh paling sederhana, Anda memberikan nama alur bersama yang dipanggil sebagai nilai untuk elemen ini. Artinya, nilai elemen ini harus sama dengan nilai atribut name
    aliran bersama.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
| Default | T/A | 
|---|---|
| Kehadiran | Wajib | 
| Jenis | T/A | 
Atribut
Tidak ada.
Elemen <Parameter>
Menentukan parameter dan nilai (atau sumber nilai) yang akan 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. Hal ini secara konseptual mirip dengan menentukan
    parameter dalam panggilan fungsi. Seperti parameter fungsi, nilai parameter FlowCallout dapat
    bervariasi berdasarkan konteks panggilan alur bersama.
Parameter FlowCallout hanya terlihat selama eksekusi alur bersama.
Sintaks
Anda dapat menggunakan elemen ini dengan salah satu bentuk sintaksis berikut. Perhatikan bahwa jika Anda menggunakan nilai literal, format nilai yang Anda tentukan akan bergantung pada kode yang menggunakannya.
<!-- 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> <!-- A reference to an attribute in the element content. --> <Parameter name="parameter-name">{source-variable-name}</Parameter>
Contoh
Kebijakan String-Handler FlowCallout ini meneruskan parameter yang menentukan tempat
        untuk menyimpan output alur bersama dan input yang akan digunakan. Elemen Parameter
        menentukan nama dan nilai variabel yang akan dibuat saat 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 | 
| Jenis | T/A | 
Atribut
| Atribut | Deskripsi | Default | Kehadiran | Jenis | 
|---|---|---|---|---|
| name | Nama variabel runtime yang akan dibuat dengan parameter ini. | Tidak ada | Wajib | String | 
| ref | Variabel yang berisi nilai yang akan digunakan saat runtime. 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 alur bersama yang dipanggil oleh kebijakan ini.
Sintaks
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
| Default | T/A | 
|---|---|
| Kehadiran | Opsional | 
| Jenis | T/A | 
Atribut
Tidak ada.
Skema
Variabel alur
Variabel alur memungkinkan perilaku dinamis kebijakan dan alur saat runtime, berdasarkan header HTTP, konten pesan, atau konteks alur. Untuk mengetahui 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 error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
| Kode kerusakan | Status HTTP | Penyebab | Perbaiki | 
|---|---|---|---|
| flow.SharedFlowNotFound | 500 | Alur bersama tidak ada, atau alur bersama ada tetapi tidak di-deploy. | build | 
Error saat deployment
T/A
Topik terkait
- Membuat alur bersama: Alur bersama yang dapat digunakan kembali
- Mengeksekusi alur bersama di beberapa proxy: Melampirkan alur bersama menggunakan flow hook