फ़्लो कॉलआउट नीति

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

API प्रॉक्सी या किसी अन्य शेयर किए गए फ़्लो से शेयर किए गए फ़्लो को कॉल करने के लिए, FlowCallout नीति का इस्तेमाल करें.

शेयर किए गए फ़्लो में, चरणों का एक क्रम बनाया जाता है. इसका इस्तेमाल रन टाइम में, कई जगहों से किया जा सकता है. इन चरणों को एपीआई प्रॉक्सी में नीतियों के तौर पर लागू किया जाता है. FlowCallout नीति की मदद से, एपीआई प्रॉक्सी और अन्य शेयर किए गए फ़्लो से शेयर किए गए फ़्लो को लागू किया जा सकता है. यह किसी पारंपरिक प्रोग्रामिंग लैंग्वेज में फ़ंक्शन कॉल की तरह काम करता है.

  • उदाहरण के लिए, मान लें कि आपने सुरक्षा सुविधाओं वाला एक शेयर किया गया फ़्लो बनाया है. जैसे, एपीआई पासकोड की पुष्टि, OAuth टोकन की पुष्टि, और रेगुलर एक्सप्रेशन से सुरक्षा. यह शेयर किया गया फ़्लो, इनबाउंड अनुरोधों की जांच करने के तरीके के लिए आपके कन्वेंशन को दिखाता है. FlowCallout नीतियों का इस्तेमाल करके, शेयर किए गए फ़्लो को कई एपीआई प्रॉक्सी से शुरू किया जा सकता है.
  • शेयर किए गए फ़्लो में FlowCallout नीति लागू करके, एक शेयर किए गए फ़्लो से दूसरे को कॉल किया जा सकता है.

सैंपल

शेयर किए गए फ़्लो में एपीआई पासकोड की पुष्टि करना

इस उदाहरण में, सुरक्षा से जुड़े सामान्य टास्क पूरे करने के लिए, शेयर किए गए फ़्लो का इस्तेमाल किया गया है. यहां शेयर किया गया फ़्लो, एपीआई पासकोड की पुष्टि करता है. एपीआई प्रॉक्सी और अन्य शेयर किए गए फ़्लो, इस शेयर किए गए फ़्लो में कॉल करने के लिए, FlowCallout नीति का इस्तेमाल कर सकते हैं.

शेयर किए गए फ़्लो की यहां दी गई परिभाषा में, एक Verify-API-Key नीति शामिल है. यह नीति तब लागू होती है, जब एपीआई प्रॉक्सी में FlowCallout नीति से शेयर किए गए फ़्लो को कॉल किया जाता है.

<?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 नीति, एपीआई पासकोड की पुष्टि करने के लिए, पहले वाले शेयर किए गए फ़्लो को कॉल करती है. 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 शामिल है जो इनपुट को जोड़ता है, इनपुट को लोअरकेस में बदलता है या दोनों काम करता है. FlowCallout नीति, ऐसे पैरामीटर तय करती है जो स्ट्रिंग इनपुट, आउटपुट, और इनपुट के साथ क्या करना है, इसके बारे में बताती है.

  1. String-Handler FlowCallout नीति, शेयर किए गए फ़्लो को कॉल करती है. साथ ही, ऐसे पैरामीटर पास करती है जो शेयर किए गए फ़्लो के आउटपुट को सेव करने के लिए वैरिएबल, शेयर किए गए फ़्लो के किस ऑपरेशन का इस्तेमाल करना है, और किस इनपुट का इस्तेमाल करना है, यह तय करते हैं. यहां, स्ट्रिंग लिटरल का इस्तेमाल किया गया है. हालांकि, यह फ़्लो वैरिएबल भी हो सकता है. 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 शेयर किए गए फ़्लो में, SharedStringFunctions JavaScript नीति शामिल है. यह नीति तब लागू होती है, जब FlowCallout नीति से शेयर किए गए फ़्लो को कॉल किया जाता है.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. शेयर किए गए फ़्लो में, यहां दी गई SharedStringFunctions JavaScript नीति SharedStringFunctions.js JavaScript फ़ाइल के बारे में बताती है. इसमें कोड को लागू करने के बारे में जानकारी होती है.

    <?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 नीति के तहत काम करता है. यह स्क्रिप्ट, FlowCallout नीति के 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);
  5. JavaScript नीति से वापस शेयर किए गए फ़्लो पर, फिर ओरिजनल एपीआई प्रॉक्सी में FlowCallout नीति पर जाता है.

एलिमेंट का रेफ़रंस

इस नीति के लिए, इन एलिमेंट और एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है:

<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> एलिमेंट का इस्तेमाल करें प्रबंधन यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर को अलग, आम भाषा में इस्तेमाल करने वाले नाम के साथ किया जा सकता है.

लागू नहीं ज़रूरी है
continueOnError

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे true पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

नीति को लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. नीति लागू किया जाता है, भले ही वह किसी फ़्लो से जुड़ा रहता हो.

सही वैकल्पिक
async

यह एट्रिब्यूट अब काम नहीं करता.

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की name एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

<SharedFlowBundle> एलिमेंट

इससे कॉल किए जाने वाले शेयर किए गए फ़्लो का नाम पता चलता है. इस एलिमेंट की वैल्यू, टारगेट SharedFlowBundle एलिमेंट के name एट्रिब्यूट की वैल्यू के बराबर होनी चाहिए.

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

उदाहरण

यह String-Handler FlowCallout नीति, पैरामीटर पास करती है. इन पैरामीटर से यह तय होता है कि शेयर किए गए फ़्लो का आउटपुट कहां सेव करना है और किस इनपुट का इस्तेमाल करना है. 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>
डिफ़ॉल्ट लागू नहीं
उपलब्धता

ज़रूरी है.

समस्या लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम इस पैरामीटर के साथ बनाए जाने वाले रनटाइम वैरिएबल का नाम. कोई नहीं. ज़रूरी है. स्ट्रिंग
ref

यह वह वैरिएबल है जिसमें रनटाइम के दौरान इस्तेमाल की जाने वाली वैल्यू होती है. अगर आपको इस्तेमाल करने के लिए कोई लिटरल वैल्यू तय करनी है, तो इस एट्रिब्यूट को शामिल न करें.

कोई नहीं. ज़रूरी नहीं. स्ट्रिंग
मान इस पैरामीटर से बनाए गए रनटाइम वैरिएबल में इस्तेमाल की जाने वाली वैल्यू. अगर आपको ऐसे वैरिएबल का नाम बताना है जिसे वैल्यू सोर्स के तौर पर इस्तेमाल किया जाना चाहिए, तो इस एट्रिब्यूट को शामिल न करें. कोई नहीं. ज़रूरी नहीं. स्ट्रिंग

<Parameters> एलिमेंट

यह <Parameter> एलिमेंट का सेट तय करता है. इन्हें इस नीति के ज़रिए कॉल किए गए शेयर किए गए फ़्लो में वैरिएबल के तौर पर पास किया जाता है.

सिंटैक्स

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
डिफ़ॉल्ट लागू नहीं
उपलब्धता

ज़रूरी नहीं.

समस्या लागू नहीं

विशेषताएं

कोई नहीं.

स्कीमा

फ़्लो वैरिएबल

फ़्लो वैरिएबल की मदद से, रनटाइम के दौरान नीतियों और फ़्लो के डाइनैमिक व्यवहार को चालू किया जा सकता है. यह एचटीटीपी हेडर, मैसेज के कॉन्टेंट या फ़्लो के कॉन्टेक्स्ट पर आधारित होता है. फ़्लो वैरिएबल के बारे में ज़्यादा जानने के लिए, वैरिएबल का रेफ़रंस देखें.

वैरिएबल ब्यौरा

apigee.edge.sharedflow.name

स्कोप: शेयर किए गए फ़्लो को एक्ज़ीक्यूट करने के दौरान
टाइप: स्ट्रिंग
अनुमति: पढ़ने की अनुमति

शेयर किए गए फ़्लो के नाम एट्रिब्यूट की वैल्यू.

apigee.edge.flowhook.name

स्कोप: फ़्लो हुक से अटैच किए गए शेयर किए गए फ़्लो को एक्ज़ीक्यूट करते समय.
Type: String
Permission: Read

फ़्लो हुक का नाम.

गड़बड़ी की जानकारी

इस सेक्शन में गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट किए गए गड़बड़ी वाले वैरिएबल के बारे में बताया गया है. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बना रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.

रनटाइम से जुड़ी गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी का कोड एचटीटीपी कोड स्थिति वजह समाधान
flow.SharedFlowNotFound 500 शेयर किया गया फ़्लो मौजूद नहीं है या शेयर किया गया फ़्लो मौजूद है, लेकिन उसे डिप्लॉय नहीं किया गया है.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

लागू नहीं

मिलते-जुलते विषय