ফ্লোকলআউট নীতি

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

এপিআই প্রক্সি অথবা অন্য কোনো শেয়ার্ড ফ্লো থেকে কোনো শেয়ার্ড ফ্লো-কে কল করার জন্য FlowCallout পলিসি ব্যবহার করুন।

একটি শেয়ার্ড ফ্লো-তে, আপনি এমন কিছু ধাপের একটি ক্রম তৈরি করেন যা রান টাইমে একাধিক জায়গা থেকে পুনরায় ব্যবহার করা যায়। এই ধাপগুলো পলিসি হিসেবে প্রয়োগ করা হয়, যেমনটা একটি এপিআই প্রক্সির মধ্যে করা হয়। ফ্লোকলআউট (FlowCallout) পলিসি আপনাকে এপিআই প্রক্সি এবং অন্যান্য শেয়ার্ড ফ্লো থেকে আপনার নিজের ফ্লো-টিকে আহ্বান করার একটি উপায় দেয়। এটি একটি প্রচলিত প্রোগ্রামিং ভাষার ফাংশন কলের মতো কাজ করে।

  • উদাহরণস্বরূপ, কল্পনা করুন যে আপনি এপিআই কী যাচাইকরণ, ওঅথ টোকেন যাচাইকরণ এবং রেগুলার এক্সপ্রেশন সুরক্ষার মতো নিরাপত্তা বৈশিষ্ট্য সহ একটি শেয়ার্ড ফ্লো তৈরি করেছেন। এই শেয়ার্ড ফ্লোটি ইনবাউন্ড অনুরোধগুলি পরীক্ষা করার জন্য আপনার প্রচলিত পদ্ধতিকে উপস্থাপন করে। ফ্লোকলআউট পলিসি ব্যবহার করে, আপনি একাধিক এপিআই প্রক্সি থেকে সেই শেয়ার্ড ফ্লোটি চালু করতে পারেন।
  • একটি শেয়ার্ড ফ্লো-এর ভেতর থেকে ফ্লোকলআউট পলিসি প্রয়োগ করার মাধ্যমে আপনি অন্য একটি শেয়ার্ড ফ্লো থেকে সেটিকে কল করতে পারেন।

নমুনা

শেয়ার্ড ফ্লোতে এপিআই কী যাচাই করুন

এই উদাহরণে, সাধারণ নিরাপত্তা-সম্পর্কিত কাজগুলো সম্পাদন করার জন্য একটি শেয়ার্ড ফ্লো ব্যবহার করা হয়েছে। এখানে শেয়ার্ড ফ্লোটি একটি এপিআই কী (API key) যাচাই করে। এপিআই প্রক্সি এবং অন্যান্য শেয়ার্ড ফ্লো এই শেয়ার্ড ফ্লো-তে কল করার জন্য ফ্লোকলআউট (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>

এপিআই প্রক্সিতে ব্যবহৃত নিম্নলিখিত ফ্লোকলআউট পলিসিটি এপিআই কী যাচাই করার জন্য পূর্ববর্তী শেয়ার্ড ফ্লো-কে কল করে। verify-apikey-shared শেয়ার্ড ফ্লো বান্ডেলটি (এখানে দেখানো হয়নি) একটি এপিআইপ্রক্সি বান্ডেল যেভাবে প্রক্সি কনফিগার করে, সেভাবেই শেয়ার্ড ফ্লো-টিকে কনফিগার করে।

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

একটি শেয়ার্ড ফ্লোতে প্যারামিটার পাস করুন

এই উদাহরণটি দেখায় কিভাবে একটি ফ্লোকলআউট পলিসি থেকে একটি শেয়ার্ড ফ্লো-তে প্যারামিটার পাস করতে হয়। এখানে, একটি ফ্লোকলআউট পলিসি এমন একটি শেয়ার্ড ফ্লো-কে কল করে যা সাধারণ স্ট্রিং হ্যান্ডলিং ফাংশনগুলো সম্পাদন করার জন্য ডিজাইন করা হয়েছে। শেয়ার্ড ফ্লো-টিতে জাভাস্ক্রিপ্ট অন্তর্ভুক্ত রয়েছে যা এর ইনপুটকে সংযুক্ত করে, ইনপুটকে লোয়ার-কেস করে, অথবা উভয়ই করে। ফ্লোকলআউট পলিসিটি এমন প্যারামিটার নির্ধারণ করে যা স্ট্রিং ইনপুট, আউটপুট এবং ইনপুটটি নিয়ে কী করতে হবে তা নির্দিষ্ট করে।

  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 জাভাস্ক্রিপ্ট পলিসি অন্তর্ভুক্ত রয়েছে, যা একটি FlowCallout পলিসি থেকে শেয়ার্ড ফ্লো-টি কল করা হলে কার্যকর হয়।

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. শেয়ার্ড ফ্লো-তে, নিম্নলিখিত SharedStringFunctions জাভাস্ক্রিপ্ট পলিসিটি কার্যকর করার জন্য কোডসহ 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. নিম্নলিখিত জাভাস্ক্রিপ্ট, SharedStringFunctions.js, SharedStringFunctions জাভাস্ক্রিপ্ট পলিসি থেকে এক্সিকিউট হয়। এই স্ক্রিপ্টটি 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. এক্সিকিউশন প্রবাহ জাভাস্ক্রিপ্ট পলিসি থেকে শেয়ার্ড ফ্লো-তে, এবং তারপর মূল এপিআই প্রক্সিতে থাকা ফ্লোকলআউট পলিসিতে ফিরে আসে।

উপাদান রেফারেন্স

নিম্নলিখিত উপাদান এবং বৈশিষ্ট্যগুলি আপনি এই পলিসিতে কনফিগার করতে পারেন:

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

<ফ্লোকলআউট> অ্যাট্রিবিউট

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

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
name

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

N/A প্রয়োজন
continueOnError

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<SharedFlowBundle> উপাদান

যে শেয়ার্ড ফ্লো-কে কল করতে হবে তার নাম নির্দিষ্ট করে। এই এলিমেন্টের মান টার্গেট SharedFlowBundle এলিমেন্টের name অ্যাট্রিবিউটের মানের সমান হওয়া উচিত।

<SharedFlowBundle/>

সবচেয়ে সহজ উদাহরণে, আপনি যে শেয়ার্ড ফ্লো-টি কল করা হচ্ছে তার নামটি এই এলিমেন্টের ভ্যালু হিসেবে দেন। অর্থাৎ, এই এলিমেন্টের ভ্যালুটি অবশ্যই শেয়ার্ড ফ্লো-টির name অ্যাট্রিবিউটের ভ্যালুর সমান হতে হবে।

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
ডিফল্ট প্রযোজ্য নয়
উপস্থিতি

প্রয়োজনীয়।

প্রকার প্রযোজ্য নয়

বৈশিষ্ট্য

কিছুই না।

<প্যারামিটার> উপাদান

এই পলিসি দ্বারা কল করা শেয়ার্ড ফ্লো-তে ভেরিয়েবল হিসেবে পাস করার জন্য একটি প্যারামিটার এবং মান (বা মানের উৎস) নির্দিষ্ট করে।

একটি প্যারামিটার ব্যবহার করে, আপনি এমন একটি মান (অথবা মান ধারণকারী একটি ভেরিয়েবল) নির্দিষ্ট করতে পারেন যা পলিসি দ্বারা কল করা শেয়ার্ড ফ্লো-তে পাস করা হবে। এটি ধারণাগতভাবে একটি ফাংশন কলে প্যারামিটার নির্দিষ্ট করার অনুরূপ। ফাংশন প্যারামিটারের মতোই, একটি ফ্লোকলআউট প্যারামিটারের মান শেয়ার্ড ফ্লো কলের প্রেক্ষাপটের উপর ভিত্তি করে পরিবর্তিত হতে পারে।

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 ফ্লোকলআউট পলিসিটি এমন প্যারামিটার পাস করে, যা নির্দিষ্ট করে দেয় শেয়ার্ড ফ্লো-এর আউটপুট কোথায় সংরক্ষণ করতে হবে এবং কোন ইনপুট ব্যবহার করতে হবে। 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>
ডিফল্ট প্রযোজ্য নয়
উপস্থিতি

প্রয়োজনীয়।

প্রকার প্রযোজ্য নয়

বৈশিষ্ট্য

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি প্রকার
নাম এই প্যারামিটার দিয়ে যে রানটাইম ভেরিয়েবলটি তৈরি করা হবে, তার নাম। কিছুই না। প্রয়োজনীয়। স্ট্রিং
রেফারেন্স

`the` ভেরিয়েবলটিতে রানটাইমে ব্যবহার করার জন্য মান থাকে। যদি আপনি ব্যবহারের জন্য কোনো আক্ষরিক মান নির্দিষ্ট করেন, তাহলে এই অ্যাট্রিবিউটটি বাদ দিন।

কিছুই না। ঐচ্ছিক। স্ট্রিং
মূল্য এই প্যারামিটার দিয়ে তৈরি রানটাইম ভেরিয়েবলে যে মানটি ব্যবহার করা হবে। যদি আপনি এমন কোনো ভেরিয়েবলের নাম উল্লেখ করেন যা মানের উৎস হবে, তাহলে এই অ্যাট্রিবিউটটি বাদ দিন। কিছুই না। ঐচ্ছিক। স্ট্রিং

<প্যারামিটার> উপাদান

এই পলিসি দ্বারা আহূত শেয়ার্ড ফ্লো-তে ভেরিয়েবল হিসেবে পাস করার জন্য <Parameter> এলিমেন্টগুলোর সেট নির্দিষ্ট করে।

সিনট্যাক্স

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
ডিফল্ট প্রযোজ্য নয়
উপস্থিতি

ঐচ্ছিক।

প্রকার প্রযোজ্য নয়

বৈশিষ্ট্য

কিছুই না।

স্কিমা

প্রবাহ পরিবর্তনশীল

ফ্লো ভেরিয়েবল HTTP হেডার, মেসেজের বিষয়বস্তু বা ফ্লো কনটেক্সটের উপর ভিত্তি করে রানটাইমে পলিসি এবং ফ্লো-এর গতিশীল আচরণ সক্ষম করে। ফ্লো ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য, ভেরিয়েবল রেফারেন্স দেখুন।

পরিবর্তনশীল বর্ণনা

apigee.edge.sharedflow.name

পরিধি : শেয়ার্ড ফ্লো সম্পাদনের সময়
টাইপ : স্ট্রিং
অনুমতি : পড়ুন

শেয়ার করা ফ্লো-এর নেম অ্যাট্রিবিউটের মান।

apigee.edge.flowhook.name

পরিধি : ফ্লো হুকের সাথে সংযুক্ত শেয়ার্ড ফ্লো-টি কার্যকর থাকাকালীন।
টাইপ : স্ট্রিং
অনুমতি : পড়ুন

ফ্লো হুকটির নাম।

ত্রুটির রেফারেন্স

এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
flow.SharedFlowNotFound 500 হয় ভাগ করা প্রবাহ বিদ্যমান নেই, অথবা ভাগ করা প্রবাহ বিদ্যমান কিন্তু স্থাপন করা হয় না।

স্থাপনার ত্রুটি

N/A

সম্পর্কিত বিষয়