يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
يمكنك استخدام سياسة FlowCallout لطلب تدفق مشترك من خادم وكيل واجهة برمجة التطبيقات أو مسار مشترك آخر.
في التدفق المشترك، يمكنك إنشاء سلسلة من الخطوات التي يمكنك إعادة استخدامها في وقت التشغيل من أماكن متعددة. يتم تنفيذ هذه الخطوات كسياسات، كما هو الحال داخل الخادم الوكيل لواجهة برمجة التطبيقات. تمنحك سياسة FlexCallout طريقة لاستدعاء التدفق المشترك من الخوادم الوكيلة لواجهة برمجة التطبيقات والتدفقات المشتركة الأخرى. وهو يعمل مثل استدعاء الدالة في لغة برمجة تقليدية.
- على سبيل المثال، لنفترض أنّك أنشأت سلسلة إجراءات مشتركة تتضمّن ميزات الأمان، مثل التحقّق من مفتاح واجهة برمجة التطبيقات والتحقّق من صحة رمز OAuth المميّز وحماية التعبير العادي. ويمثّل هذا التدفق المشترَك الاصطلاح لديك كطريقة للتحقّق من الطلبات الواردة. باستخدام سياسات 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 المَعلمات التي تحدِّد إدخال السلسلة والإخراج وما يجب فعله بالإدخال.
تستدعي سياسة FlowCallout
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>
يتضمّن المسار المشترك
default
التالي سياسة JavaScriptSharedStringFunctions
يتم تنفيذها عند استدعاء المسار المشترَك من سياسة FlowCallout.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
في المسار المشترك، تحدّد سياسة JavaScript التالية
SharedStringFunctions
ملف JavaScript 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، من سياسة JavaScript
SharedStringFunctions
. يسترد هذا النص البرمجي القيم من المتغيّرات التي تم إنشاؤها من عناصر سياسة 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);
- يتدفق التنفيذ من سياسة 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 |
الاسم الداخلي للسياسة وقد تحتوي قيمة السمة ويمكنك اختياريًا استخدام العنصر |
لا ينطبق | مطلوبة |
continueOnError |
اضبط القيمة على اضبط القيمة على |
false | إجراء اختياري |
enabled |
اضبط القيمة على اضبط القيمة على |
صحيح | إجراء اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
false | منهي العمل به |
العنصر <DisplayName>
استخدِم هذه السمة بالإضافة إلى السمة name
لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة |
---|---|
التواجد في المنزل | إجراء اختياري |
Type | سلسلة |
عنصر <SharedFlowBundle>
تُحدِّد اسم التدفق المشترك للاتصال به. يجب أن تكون قيمة هذا العنصر هي نفسها قيمة سمة اسم العنصر SharedFlowBundle المستهدف.
<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>
مثال
تمرِّر سياسة FlowCallout في 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 |
---|---|---|---|---|
اسم | اسم متغيّر وقت التشغيل المطلوب إنشاؤه باستخدام هذه المَعلمة. | بلا عُري | مطلوبة. | سلسلة |
المرجع |
يحتوي المتغير الذي على القيمة المراد استخدامها في وقت التشغيل. احذف هذه السمة إذا كنت تحدّد قيمة حرفية لاستخدامها. |
بلا عُري | اختياريّ. | سلسلة |
القيمة | القيمة المطلوب استخدامها في متغيّر وقت التشغيل الذي تم إنشاؤه باستخدام هذه المَعلمة. احذف هذه السمة إذا كنت تحدّد اسم متغيّر يجب أن يكون مصدر القيمة. | بلا عُري | اختياريّ. | سلسلة |
عنصر <Parameters>
تحدِّد هذه السياسة مجموعة عناصر <Parameter> المراد تمريرها كمتغيّرات إلى التدفق المشترك الذي تطلبه هذه السياسة.
البنية
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
تلقائي | لا ينطبق |
الحضور |
اختياريّ. |
النوع | لا ينطبق |
السمات
بلا عُري
المخططات
متغيرات التدفق
تعمل متغيّرات التدفق على تفعيل السلوك الديناميكي للسياسات والتدفقات أثناء وقت التشغيل، استنادًا إلى عناوين HTTP أو محتوى الرسالة أو سياق التدفق. لمزيد من المعلومات عن متغيّرات التدفق، يُرجى الاطّلاع على مرجع المتغيّرات.
متغير | الوصف |
---|---|
|
النطاق: أثناء تنفيذ التدفق المشترك قيمة سمة اسم التدفق المشترك. |
|
النطاق: أثناء تنفيذ التدفق المشترَك المرفق بعنصر الجذب
للتدفق. اسم عنصر جذب التدفق. |
مرجع الخطأ
يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيّرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل مع الأخطاء. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
---|---|---|---|
flow.SharedFlowNotFound |
500 | إما أن التدفق المشترك غير موجود، أو أن التدفق المشترك موجود ولكن لم يتم نشره. | build |
أخطاء النشر
لا ينطبق
مواضيع ذات صلة
- إنشاء مسارات مشترَكة: مسارات مشترَكة قابلة لإعادة الاستخدام
- تنفيذ التدفقات المشتركة على مستوى عدة خوادم وكيلة: إرفاق مسار مشترك باستخدام عنصر جذب تدفق