นโยบายข้อความไฮไลต์สำหรับโฟลว์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

ใช้นโยบาย FlowCallout เพื่อเรียกโฟลว์ที่แชร์จากพร็อกซี API หรือโฟลว์ที่แชร์อื่น

ในโฟลว์ที่แชร์ คุณจะสร้างลำดับขั้นตอนที่นำกลับมาใช้ใหม่ได้ในรันไทม์จากหลายๆ ที่ โดยขั้นตอนเหล่านี้จะมีการนำไปใช้เป็นนโยบายเช่นเดียวกับในพร็อกซี API นโยบาย FlowCallout ช่วยให้คุณเรียกใช้โฟลว์ที่แชร์จากพร็อกซี API และโฟลว์ที่แชร์อื่นๆ ได้ ซึ่งทำงานเหมือนกับการเรียกฟังก์ชันในภาษาโปรแกรมแบบดั้งเดิม

  • ตัวอย่างเช่น ลองนึกภาพว่าคุณได้สร้างโฟลว์ที่แชร์ที่มีฟีเจอร์ด้านความปลอดภัย เช่น การยืนยันคีย์ API, การตรวจสอบโทเค็น OAuth และการป้องกันด้วยนิพจน์ทั่วไป โฟลว์ที่แชร์นี้ แสดงถึงข้อตกลงของคุณเกี่ยวกับวิธีตรวจสอบคำขอขาเข้า คุณสามารถใช้นโยบาย FlowCallout เพื่อเรียกใช้โฟลว์ที่แชร์ดังกล่าวจากพร็อกซี API หลายรายการได้
  • คุณสามารถเรียกโฟลว์ที่แชร์หนึ่งจากอีกโฟลว์หนึ่งได้โดยใช้นโยบาย FlowCallout จากภายในโฟลว์ที่แชร์

ตัวอย่าง

ยืนยันคีย์ API ในโฟลว์ที่แชร์

ในตัวอย่างนี้ ระบบจะใช้โฟลว์ที่แชร์เพื่อทำงานทั่วไปที่เกี่ยวข้องกับความปลอดภัย โดยโฟลว์ที่แชร์จะตรวจสอบคีย์ API พร็อกซี API และโฟลว์ที่แชร์อื่นๆ สามารถใช้นโยบาย FlowCallout เพื่อเรียกใช้โฟลว์ที่แชร์นี้ได้

คำจำกัดความของโฟลว์ที่แชร์ต่อไปนี้มีนโยบาย Verify-API-Key ที่ทำงาน เมื่อมีการเรียกโฟลว์ที่แชร์จากนโยบาย FlowCallout ในพร็อกซี API

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlow name="default">
    <Step>
        <Name>Verify-API-Key</Name>
    </Step>
</SharedFlow>

นโยบาย VerifyAPIKey ภายในโฟลว์ที่แชร์ก่อนหน้าจะดึงค่าคีย์และ ยืนยันค่าดังกล่าว

<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key">
    <DisplayName>Verify API Key</DisplayName>
    <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

นโยบาย FlowCallout ต่อไปนี้ซึ่งใช้ในพร็อกซี API จะเรียกโฟลว์ที่แชร์ก่อนหน้าเพื่อ ยืนยันคีย์ API บันเดิลโฟลว์ที่แชร์ verify-apikey-shared (ไม่ได้แสดงที่นี่) จะกำหนดค่าโฟลว์ที่แชร์ในลักษณะที่บันเดิล APIProxy กำหนดค่าพร็อกซี

<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
    <DisplayName>Auth Flow Callout</DisplayName>
    <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle>
</FlowCallout>

ส่งพารามิเตอร์ไปยังโฟลว์ที่แชร์

ตัวอย่างนี้แสดงวิธีส่งพารามิเตอร์จากนโยบาย FlowCallout ไปยังโฟลว์ที่แชร์ โดยนโยบาย FlowCallout จะเรียกโฟลว์ที่แชร์ซึ่งออกแบบมาเพื่อทำหน้าที่จัดการสตริงทั่วไป โฟลว์ที่แชร์มี JavaScript ที่เชื่อมสตริงอินพุต แปลงอินพุตเป็นตัวพิมพ์เล็ก หรือทั้ง 2 อย่าง นโยบาย FlowCallout กำหนดพารามิเตอร์ที่ระบุ อินพุตสตริง เอาต์พุต และสิ่งที่ต้องทำกับอินพุต

  1. นโยบาย FlowCallout String-Handler จะเรียกโฟลว์ที่แชร์ โดยส่งพารามิเตอร์ที่ระบุตัวแปรที่จะจัดเก็บเอาต์พุตของโฟลว์ที่แชร์ การดำเนินการโฟลว์ที่แชร์ที่จะใช้ และอินพุตที่จะใช้ (ในที่นี้คือค่าคงที่สตริง แต่จะเป็นตัวแปรโฟลว์ก็ได้) องค์ประกอบ Parameter จะระบุชื่อและค่าของตัวแปร ที่จะสร้างในรันไทม์ โฟลว์ที่แชร์สามารถดึงตัวแปรเหล่านี้มาใช้ในโค้ดของตัวเองได้

    <?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>
  2. โฟลว์ที่แชร์ default ต่อไปนี้มีนโยบาย JavaScript SharedStringFunctions ที่ทำงานเมื่อมีการเรียกโฟลว์ที่แชร์จากนโยบาย FlowCallout

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. ในโฟลว์ที่แชร์ นโยบาย JavaScript SharedStringFunctions ต่อไปนี้จะระบุไฟล์ JavaScript SharedStringFunctions.js ที่มีโค้ดที่จะดำเนินการ

    <?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>
  4. JavaScript ต่อไปนี้ SharedStringFunctions.js จะทำงานจาก SharedStringFunctions นโยบาย JavaScript สคริปต์นี้จะดึงค่าจาก ตัวแปรที่สร้างจากองค์ประกอบ Parameter ของนโยบาย FlowCallout

    // 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);
  5. การดำเนินการจะไหลกลับจากนโยบาย JavaScript ไปยังโฟลว์ที่แชร์ แล้วไปยัง นโยบาย FlowCallout ในพร็อกซี API ต้นทาง

ข้อมูลอ้างอิงองค์ประกอบ

ต่อไปนี้คือองค์ประกอบและแอตทริบิวต์ที่คุณกำหนดค่าได้ในนโยบายนี้

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle>
</FlowCallout>

แอตทริบิวต์ <FlowCallout>

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">

ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
name

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name สามารถ ประกอบด้วยตัวอักษร ตัวเลข การเว้นวรรค ขีดกลางสั้น ขีดล่าง และจุด ค่านี้ไม่สามารถ เกิน 255 อักขระ

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มี ต้องระบุ
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว เป็นเรื่องปกติ พฤติกรรมสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย นโยบายจะไม่ บังคับใช้ แม้ว่าจะยังคงแนบกับขั้นตอน

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มี

หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ name ของนโยบายจะเป็น

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

องค์ประกอบ <SharedFlowBundle>

ระบุชื่อของโฟลว์ที่แชร์ที่จะเรียก ค่าขององค์ประกอบนี้ควรเหมือนกับ ค่าแอตทริบิวต์ name ขององค์ประกอบ SharedFlowBundle เป้าหมาย

<SharedFlowBundle/>

ในตัวอย่างที่ง่ายที่สุด คุณจะระบุชื่อของโฟลว์ที่แชร์ที่กำลังเรียกเป็นค่าสำหรับองค์ประกอบนี้ นั่นคือ ค่าขององค์ประกอบนี้ต้องเหมือนกับค่าแอตทริบิวต์ name ของโฟลว์ที่แชร์

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่

ต้องระบุ

ประเภท ไม่มี

แอตทริบิวต์

ไม่มี

องค์ประกอบ <Parameter>

ระบุพารามิเตอร์และค่า (หรือแหล่งที่มาของค่า) ที่จะส่งเป็นตัวแปรไปยังโฟลว์ที่แชร์ซึ่งเรียกโดยนโยบายนี้

การใช้พารามิเตอร์ช่วยให้คุณระบุค่า (หรือตัวแปรที่มีค่า) ที่ควรส่งไปยังโฟลว์ที่แชร์ซึ่งเรียกโดยนโยบายได้ ซึ่งคล้ายกับแนวคิดในการระบุ พารามิเตอร์ในการเรียกฟังก์ชัน ค่าพารามิเตอร์ FlowCallout อาจแตกต่างกันไปตามบริบทของการเรียกโฟลว์ที่แชร์ เช่นเดียวกับพารามิเตอร์ฟังก์ชัน

พารามิเตอร์ FlowCallout จะมองเห็นได้เฉพาะในระหว่างการดำเนินการของโฟลว์ที่แชร์เท่านั้น

ไวยากรณ์

คุณสามารถใช้องค์ประกอบนี้กับรูปแบบไวยากรณ์ใดรูปแบบหนึ่งต่อไปนี้ โปรดทราบว่าเมื่อคุณใช้ค่าลิเทอรัล รูปแบบของค่าที่คุณระบุจะขึ้นอยู่กับโค้ดที่ใช้ค่าดังกล่าว

<!- 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>

ตัวอย่าง

นโยบาย FlowCallout String-Handler นี้จะส่งพารามิเตอร์ที่ระบุตำแหน่งที่จะจัดเก็บเอาต์พุตของโฟลว์ที่แชร์และอินพุตที่จะใช้ องค์ประกอบ Parameter จะระบุชื่อและค่าของตัวแปรที่จะสร้างในรันไทม์ โฟลว์ที่แชร์สามารถดึง ตัวแปรเหล่านี้มาใช้ในโค้ดของตัวเองได้

<?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>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่

ต้องระบุ

ประเภท ไม่มี

แอตทริบิวต์

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่ ประเภท
name ชื่อของตัวแปรในรันไทม์ที่จะสร้างด้วยพารามิเตอร์นี้ ไม่มี ต้องระบุ สตริง
ref

ตัวแปรที่มีค่าที่จะใช้ในรันไทม์ ละเว้นแอตทริบิวต์นี้หากคุณ ระบุค่าคงที่ที่จะใช้

ไม่มี ไม่บังคับ สตริง
value ค่าที่จะใช้ในตัวแปรในรันไทม์ที่สร้างด้วยพารามิเตอร์นี้ ละเว้นแอตทริบิวต์นี้หาก คุณระบุชื่อตัวแปรที่ควรเป็นแหล่งที่มาของค่า ไม่มี ไม่บังคับ สตริง

องค์ประกอบ <Parameters>

ระบุชุดองค์ประกอบ <Parameter> ที่จะส่งเป็นตัวแปรไปยังโฟลว์ที่แชร์ซึ่งเรียกโดยนโยบายนี้

ไวยากรณ์

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่

ไม่บังคับ

ประเภท ไม่มี

แอตทริบิวต์

ไม่มี

สคีมา

ตัวแปรโฟลว์

ตัวแปรโฟลว์ช่วยให้เกิดลักษณะการทำงานแบบไดนามิกของนโยบายและโฟลว์ในรันไทม์ โดยอิงตามส่วนหัว HTTP เนื้อหาข้อความ หรือบริบทโฟลว์ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ ข้อมูลอ้างอิงตัวแปร

ตัวแปร คำอธิบาย

apigee.edge.sharedflow.name

ขอบเขต: ระหว่างการดำเนินการของโฟลว์ที่แชร์
ประเภท: สตริง
สิทธิ์: อ่าน

ค่าแอตทริบิวต์ name ของโฟลว์ที่แชร์

apigee.edge.flowhook.name

ขอบเขต: ระหว่างการดำเนินการของโฟลว์ที่แชร์ซึ่งแนบกับ Flowhook
ประเภท: สตริง
สิทธิ์: อ่าน

ชื่อของ Flowhook

ข้อมูลอ้างอิงข้อผิดพลาด

ส่วนนี้อธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กำหนดเมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
flow.SharedFlowNotFound 500 ไม่มีโฟลว์ที่แชร์ หรือมีโฟลว์ที่แชร์อยู่แต่ไม่ได้ใช้งาน

ข้อผิดพลาดในการทำให้ใช้งานได้

ไม่มีข้อมูล

หัวข้อที่เกี่ยวข้อง