আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
API প্রক্সি বা অন্য কোনও শেয়ার করা ফ্লো থেকে শেয়ার করা ফ্লো কল করতে FlowCallout নীতি ব্যবহার করুন।
শেয়ার করা ফ্লোতে, আপনি ধাপের একটি ক্রম তৈরি করেন যা আপনি একাধিক জায়গা থেকে রান টাইমে আবার ব্যবহার করতে পারবেন। এইসব ধাপ নীতি হিসেবে, API প্রক্সির মধ্যে প্রয়োগ করা হয়। FlowCallout নীতি আপনাকে API প্রক্সি ও অন্যান্য শেয়ার করা ফ্লো থেকে শেয়ার করা ফ্লো ইনভোক করার একটি উপায় দেয়। এটি একটি ঐতিহ্যবাহী প্রোগ্রামিং ভাষায় ফাংশন কলের মতো কাজ করে।
- যেমন, ধরে নিন যে আপনি এমন একটি শেয়ার করা ফ্লো তৈরি করেছেন যাতে API কী যাচাইকরণ, OAuth টোকেন যাচাইকরণ এবং রেগুলার এক্সপ্রেশন সুরক্ষার মতো নিরাপত্তা ফিচার রয়েছে। এই শেয়ার করা ফ্লো ইনবাউন্ড অনুরোধ চেক করার একটি উপায় হিসেবে আপনার কনভেনশনকে উপস্থাপন করে। FlowCallout নীতি ব্যবহার করে, আপনি একাধিক API প্রক্সি থেকে সেই শেয়ার করা ফ্লো ইনভোক করতে পারবেন।
- শেয়ার করা ফ্লোর মধ্যে থেকে FlowCallout নীতি প্রয়োগ করে আপনি একটি শেয়ার করা ফ্লো থেকে অন্য একটিকে কল করতে পারবেন।
নমুনা
শেয়ার করা ফ্লোতে API কী যাচাই করা
এই উদাহরণে, সাধারণ নিরাপত্তা-সম্পর্কিত টাস্ক পারফর্ম করতে একটি শেয়ার করা ফ্লো ব্যবহার করা হয়। এখানে, শেয়ার করা ফ্লো একটি API কী যাচাই করে। API প্রক্সি ও অন্যান্য শেয়ার করা ফ্লো, এই শেয়ার করা ফ্লোতে কল করার জন্য FlowCallout নীতি ব্যবহার করতে পারে।
নিম্নলিখিত শেয়ার করা ফ্লোয়ের সংজ্ঞায় একটি Verify-API-Key নীতি অন্তর্ভুক্ত যা
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>API প্রক্সিতে ব্যবহৃত নিম্নলিখিত FlowCallout নীতি, 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 আছে যা এর ইনপুটকে কনক্যাটেনেট করে, এর ইনপুটকে লোয়ার-কেস করে অথবা দু'টিই করে। FlowCallout নীতিতে এমন প্যারামিটার সংজ্ঞায়িত করা হয় যা স্ট্রিং ইনপুট, আউটপুট এবং ইনপুট নিয়ে কী করতে হবে তা নির্দিষ্ট করে।
String-HandlerFlowCallout নীতি শেয়ার করা ফ্লোকে কল করে, শেয়ার করা ফ্লোয়ের আউটপুট স্টোর করার জন্য ভেরিয়েবল নির্দিষ্ট করে প্যারামিটার পাস করে, কোন শেয়ার করা ফ্লো অপারেশন ব্যবহার করতে হবে এবং কোন ইনপুট ব্যবহার করতে হবে (এখানে, একটি স্ট্রিং লিটেরাল, তবে এটি একটি ফ্লো ভেরিয়েবলও হতে পারে)। রানটাইম তৈরি করার জন্য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>নিচে উল্লেখ করা
defaultশেয়ার করা ফ্লোতেSharedStringFunctionsJavaScript নীতি অন্তর্ভুক্ত থাকে যা FlowCallout নীতি থেকে শেয়ার করা ফ্লো কল করা হলে এক্সিকিউট হয়।<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>শেয়ার করা ফ্লোতে, নিম্নলিখিত
SharedStringFunctionsJavaScript নীতি 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>
নিম্নলিখিত JavaScript, SharedStringFunctions.js,
SharedStringFunctionsJavaScript নীতি থেকে এক্সিকিউট হয়। এই স্ক্রিপ্ট 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);
- JavaScript নীতি থেকে শেয়ার্ড ফ্লোতে এবং তারপরে অরিজিনেটিং API প্রক্সির 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 | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<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>
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি |
ঐচ্ছিক। |
| টাইপ করুন | প্রযোজ্য নয় |
অ্যাট্রিবিউট
কোনওটিই নয়।
স্কিমা
ফ্লো ভেরিয়েবল
ফ্লো ভেরিয়েবল, HTTP হেডার, মেসেজ কন্টেন্ট বা ফ্লো কনটেক্সটের উপর ভিত্তি করে রানটাইমে নীতি ও ফ্লোয়ের ডায়নামিক আচরণকে চালু করে। ফ্লো ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।
| ভেরিয়েবেল | বিবরণ |
|---|---|
|
|
স্কোপ: শেয়ার করা ফ্লো এক্সিকিউশনের সময় শেয়ার করা ফ্লোয়ের name অ্যাট্রিবিউটের ভ্যালু। |
|
|
স্কোপ: ফ্লো
হুকের সাথে অ্যাটাচ করা শেয়ার করা ফ্লো এক্সিকিউট করার সময়। ফ্লো হুকের নাম। |
সমস্যার রেফারেন্স
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
flow.SharedFlowNotFound | 500 | হয় ভাগ করা প্রবাহ বিদ্যমান নেই, অথবা ভাগ করা প্রবাহ বিদ্যমান কিন্তু স্থাপন করা হয় না। | build |
স্থাপনার ত্রুটি
N/A
সম্পর্কিত বিষয়
- শেয়ার করা ফ্লো তৈরি করা: পুনর্ব্যবহারযোগ্য শেয়ার করা ফ্লো
- একাধিক প্রক্সি জুড়ে শেয়ার করা ফ্লো এক্সিকিউট করা: ফ্লো হুক ব্যবহার করে শেয়ার করা ফ্লো অ্যাটাচ করা