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

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

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

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

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

ลองฟัง

ยืนยันคีย์ API ในขั้นตอนที่แชร์

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

คำจำกัดความของโฟลว์ที่แชร์ต่อไปนี้มีนโยบาย Verify-API-Key ที่จะทำงานเมื่อมีการเรียกใช้โฟลว์ที่แชร์จากนโยบาย Flowที่แตกต่างกัน ในพร็อกซี 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>

นโยบาย FlowFeed ต่อไปนี้ซึ่งใช้ในพร็อกซี 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>

ส่งพารามิเตอร์ไปยังขั้นตอนที่แชร์

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

  1. นโยบาย FlowText ของ 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 ซึ่งจะทำงานเมื่อมีการเรียกใช้โฟลว์ที่แชร์จากนโยบาย Flowต้องระบุ

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

    // 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 ไปยังโฟลว์ที่แชร์ จากนั้นไปที่นโยบาย Flow callout ในพร็อกซี API ต้นทาง

การอ้างอิงองค์ประกอบ

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

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

แอตทริบิวต์ <Flow callout>

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

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

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

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

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

ไม่มีข้อมูล จำเป็น
continueOnError

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

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

false ไม่บังคับ
enabled

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

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

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

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

false เลิกใช้

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

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

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

ไม่มีข้อมูล

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

การมีบุคคลอยู่ ไม่บังคับ
Type สตริง

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

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

<SharedFlowBundle/>

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

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

ต้องระบุ

ประเภท ไม่มีข้อมูล

Attributes

ไม่มี

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

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

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

พารามิเตอร์ Flower จะแสดงในระหว่างการดำเนินการของขั้นตอนที่แชร์เท่านั้น

ไวยากรณ์

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

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

ตัวอย่าง

พารามิเตอร์ที่ส่งนโยบาย Flowส่วนขยายไฮไลต์ 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>
ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ

ต้องระบุ

ประเภท ไม่มีข้อมูล

Attributes

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

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

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

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

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

ไวยากรณ์

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

ไม่บังคับ

ประเภท ไม่มีข้อมูล

Attributes

ไม่มี

สคีมา

ตัวแปรโฟลว์

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

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

apigee.edge.sharedflow.name

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

ค่าของแอตทริบิวต์ชื่อของขั้นตอนที่แชร์

apigee.edge.flowhook.name

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

ชื่อของ Flow hook

การอ้างอิงข้อผิดพลาด

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

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

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

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

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

ไม่มีข้อมูล

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