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

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

एपीआई प्रॉक्सी या किसी दूसरे शेयर किए गए फ़्लो से, शेयर किए गए फ़्लो को कॉल करने के लिए फ़्लो कॉलआउट नीति का इस्तेमाल करें.

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

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

सैंपल

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

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

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

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

एपीआई प्रॉक्सी में इस्तेमाल की जाने वाली नीचे दी गई फ़्लो कॉलआउट नीति, एपीआई पासकोड की पुष्टि करने के लिए, पिछले शेयर फ़्लो को कॉल करती है. verify-apikey-shared का शेयर किया गया फ़्लो बंडल (यहां नहीं दिखाया गया है) शेयर किए गए फ़्लो को उसी तरह कॉन्फ़िगर करता है जिस तरह APIप्रॉक्सी बंडल, प्रॉक्सी को कॉन्फ़िगर करता है.

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

शेयर किए गए फ़्लो में पैरामीटर पास करें

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

  1. 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 के शेयर किए गए फ़्लो में, SharedStringFunctions JavaScript नीति शामिल है. यह नीति तब लागू होती है, जब शेयर किए गए फ़्लो को फ़्लो कॉलआउट नीति से कॉल किया जाता है.

    <?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 नीति से एक्ज़ीक्यूट किया जाता है. यह स्क्रिप्ट फ़्लोकॉलआउट नीति 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 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> एलिमेंट का इस्तेमाल करें.

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

इस नीति को false पर सेट करें, ताकि नीति के काम न करने पर गड़बड़ी का मैसेज दिखे. ज़्यादातर नीतियों में, ऐसा आम तौर पर किया जाता है.

किसी नीति के काम न करने पर भी फ़्लो एक्ज़ीक्यूट करने की प्रोसेस को जारी रखने के लिए, true पर सेट करें.

false ज़रूरी नहीं
enabled

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

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

सही ज़रूरी नहीं
async

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

false बहिष्कृत

<DisplayName> एलिमेंट

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

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

लागू नहीं

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

मौजूदगी ज़रूरी नहीं
Type String

<SharedFlowbundle> एलिमेंट

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

<SharedFlowBundle/>

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

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
डिफ़ॉल्ट लागू नहीं
मौजूदगी

ज़रूरी है.

स्ट्रीम किस तरह की है लागू नहीं

एट्रिब्यूट

कोई नहीं.

<पैरामीटर> एलिमेंट

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

पैरामीटर का इस्तेमाल करके, आपके पास ऐसी वैल्यू (या वैल्यू वाला वैरिएबल) तय करने का विकल्प होता है जिसे नीति से कॉल किए गए, शेयर किए गए फ़्लो में भेजा जाना चाहिए. यह सैद्धांतिक तौर पर, फ़ंक्शन कॉल में पैरामीटर तय करने जैसा ही है. फ़ंक्शन पैरामीटर की तरह, फ़्लो कॉलआउट पैरामीटर की वैल्यू शेयर किए गए फ़्लो कॉल के संदर्भ के आधार पर अलग-अलग हो सकती है.

फ़्लो कॉलआउट पैरामीटर सिर्फ़ शेयर किए गए फ़्लो के चलने के दौरान दिखते हैं.

सिंटैक्स

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

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

ज़रूरी है.

स्ट्रीम किस तरह की है लागू नहीं

एट्रिब्यूट

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

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

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

<पैरामीटर> एलिमेंट

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

सिंटैक्स

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
डिफ़ॉल्ट लागू नहीं
मौजूदगी

ज़रूरी नहीं.

स्ट्रीम किस तरह की है लागू नहीं

एट्रिब्यूट

कोई नहीं.

स्कीमा

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

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

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

apigee.edge.sharedflow.name

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

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

apigee.edge.flowhook.name

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

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

गड़बड़ी का रेफ़रंस

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

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

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

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

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

लागू नहीं

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