درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
از خطمشی FlowCallout برای فراخوانی به یک جریان مشترک از یک پراکسی API یا جریان مشترک دیگر استفاده کنید.
در یک جاریسازی مشترک، توالی از مراحل ایجاد میکنید که میتوانید در زمان اجرا از چندین مکان دوباره استفاده کنید. این مراحل بهعنوان خطمشی، مانند یک پراکسی API، پیادهسازی میشوند. خطمشی FlowCallout به شما امکان میدهد جریان مشترک را از پراکسیهای API و دیگر جریانهای مشترک فراخوانی کنید. این کار مانند فراخوانی تابع در یک زبان برنامهنویسی سنتی است.
- برای مثال، تصور کنید که جاریسازی مشترکی با ویژگیهای امنیتی مثل درستیسنجی کلید API، اعتبارسنجی کد OAuth، و محافظت از عبارت باقاعده ساختهاید. این جاریسازی مشترک نشاندهنده قرارداد شما برای روشی جهت بررسی درخواستهای ورودی است. بااستفاده از خطمشیهای FlowCallout، میتوانید آن جریان مشترک را از چندین پراکسی API فراخوانی کنید.
- میتوانید با پیادهسازی خطمشی «دعوت به جاریسازی» از داخل جاریسازی مشترک، یک جاریسازی مشترک را از جاریسازی دیگر فراخوانی کنید.
نمونهها
درستیسنجی کلید میانای برنامهسازی کاربردی در جریان مشترک
در این مثال، از یک جریان مشترک برای انجام وظایف رایج مربوط به امنیت استفاده میشود. در اینجا، جریان مشترک کلید میانای برنامهسازی کاربردی را اعتبارسنجی میکند. کارگزاران نیابتی API و جریانهای مشترک دیگر میتوانند از خطمشی FlowCallout برای فراخوانی این جریان مشترک استفاده کنند.
تعریف جاری مشترک زیر شامل خطمشی Verify-API-Key است که وقتی جاری مشترک از خطمشی FlowCallout در پراکسی 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>خطمشی FlowCallout زیر که در یک پراکسی 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>گذراندن پارامترها به یک جریان مشترک
این مثال نشان میدهد چگونه پارامترها را از خطمشی «دعوت به اقدام جاری» به جاری مشترک منتقل کنید. در اینجا، خطمشی FlowCallout به یک جریان همرسانیشده که برای انجام توابع رایج دستکاری رشته طراحی شده است فراخوانی میکند. جریان مشترک شامل جاوا اسکریپتی است که ورودیاش را بههم میچسباند، ورودیاش را به حروف کوچک تبدیل میکند، یا هر دو. خطمشی 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زیر شامل خطمشیSharedStringFunctionsجاوا اسکریپت است که وقتی جریان مشترک از خطمشی FlowCallout فراخوانده میشود اجرا میشود.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>در جاریسازی مشترک،
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>
JavaScript زیر، SharedStringFunctions.js، از
SharedStringFunctionsخطمشی JavaScript اجرا میشود. این نوشتار مقادیر را از متغیرهای ایجادشده از عناصر خطمشی FlowCalloutParameterبازیابی میکند.// 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);
- جریان اجرا از خطمشی جاوا اسکریپت به جریان مشترک و سپس به خطمشی FlowCallout در پراکسی API مبدأ برمیگردد.
مرجع عنصر
در زیر عناصر و مشخصههایی را که میتوانید در این خطمشی پیکربندی کنید مشاهده میکنید:
<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 | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <SharedFlowBundle>
نام جاری مشترک برای فراخوانی را مشخص میکند. مقدار این عنصر باید با مقدار عنصر هدف SharedFlowBundle در مشخصه نام یکسان باشد.
<SharedFlowBundle/>
در سادهترین مثال، نام جاری مشترکی را که فراخوانده میشود بهعنوان مقدار این عنصر ارائه میدهید. یعنی مقدار این عنصر باید با مقدار مشخصه name
جریان مشترک یکسان باشد.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
| پیشفرض | موجود نیست |
| حضور |
الزامی. |
| تایپ کردن | موجود نیست |
مشخصهها
هیچکدام.
عنصر <Parameter>
پارامتر و مقدار (یا منبع مقدار) را مشخص میکند تا بهعنوان متغیر به جاریسازی مشترکی که این خطمشی فرا میخواند منتقل شود.
بااستفاده از پارامتر، میتوانید مقداری (یا متغیری حاوی مقدار) را مشخص کنید که باید به جریان مشترک فراخواندهشده توسط خطمشی منتقل شود. این مفهوم ازنظر نظری مشابه با مشخص کردن پارامتر در فراخوانی تابع است. همانند پارامتر تابع، مقدار پارامتر 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>| پیشفرض | موجود نیست |
| حضور |
الزامی. |
| تایپ کردن | موجود نیست |
مشخصهها
| مشخصه | شرح | پیشفرض | حضور | نوع |
|---|---|---|---|---|
| نام | نام متغیر زمان اجرایی که با این پارامتر ایجاد میشود. | هیچکدام. | الزامی. | رشته |
| مرجع |
متغیری که حاوی مقدار موردنظر برای استفاده در زمان اجرا است. اگر مقدار ثابتی را برای استفاده مشخص میکنید، این مشخصه را حذف کنید. |
هیچکدام. | اختیاری. | رشته |
| مقدار | مقدار مورد استفاده در متغیر زمان اجرا که با این پارامتر ایجاد شده است. اگر نام متغیری را که باید منبع مقدار باشد مشخص میکنید، این مشخصه را حذف کنید. | هیچکدام. | اختیاری. | رشته |
عنصر <Parameters>
مجموعه عناصر <Parameter> را مشخص میکند تا بهعنوان متغیر به جاریسازی مشترکی که این خطمشی فراخوانی میکند منتقل شود.
نحو
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
| پیشفرض | موجود نیست |
| حضور |
اختیاری. |
| تایپ کردن | موجود نیست |
مشخصهها
هیچکدام.
طرحوارهها
متغیرهای جریان
متغیرهای جریان رفتار پویای خطمشیها و جریانها را در زمان اجرا براساس سرایندهای HTTP، محتوای پیام، یا بافت جریان فعال میکنند. برای اطلاعات بیشتر درباره متغیرهای «جریان»، مرجع متغیرها را ببینید.
| متغیر | شرح |
|---|---|
|
|
محدوده: درطول اجرای جریان مشترک مقدار ویژگی نام جریان مشترک. |
|
|
محدوده: درطول اجرای جریان مشترک پیوستشده به قلاب جریان. نام قلاب جریان. |
مرجع خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطا را که توسط Edge تنظیم میشوند، هنگامی که این خطمشی خطا را راهاندازی میکند، توضیح میدهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای سیاست رخ دهند.
| کد خطا | وضعیت HTTP | علت | ثابت |
|---|---|---|---|
flow.SharedFlowNotFound | 500 | یا جریان مشترک وجود ندارد، یا جریان مشترک وجود دارد اما مستقر نشده است. | build |
خطاهای استقرار
N/A
موضوعات مرتبط
- درحال ایجاد جریانهای کار مشترک: جریانهای کار مشترک با قابلیت استفاده مجدد
- اجرای جریانهای همرسانیشده در چندین پراکسی: پیوست کردن جریان همرسانیشده بااستفاده از قلاب جریان