أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
استخدِم سياسة FlowCallout لاستدعاء تدفق مشترك من خادم وكيل لواجهة برمجة التطبيقات أو تدفق مشترك آخر.
في التدفق المشترَك، يمكنك إنشاء تسلسل من الخطوات التي يمكنك إعادة استخدامها في وقت التشغيل من مواضع متعددة. يتم تنفيذ هذه الخطوات كسياسات، كما هو الحال في خادم وكيل لواجهة برمجة التطبيقات. توفّر سياسة FlowCallout طريقة لاستدعاء التدفق المشترك من خوادم وكيل API وتدفقات مشتركة أخرى. وهي تعمل مثل استدعاء دالة في لغة برمجة تقليدية.
- على سبيل المثال، لنفترض أنّك أنشأت مسارًا مشتركًا يتضمّن ميزات أمان، مثل التحقّق من مفتاح واجهة برمجة التطبيقات والتحقّق من صحة رمز OAuth المميز والحماية من التعبيرات العادية. يمثّل هذا المسار المشترك اتفاقيتك بشأن طريقة التحقّق من الطلبات الواردة. باستخدام سياسات FlowCallout، يمكنك استدعاء هذا التدفق المشترك من عدة خوادم وكيلة لواجهة برمجة التطبيقات.
- يمكنك استدعاء تدفق مشترَك من تدفق آخر من خلال تنفيذ سياسة 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 المَعلمات التي تحدّد إدخال السلسلة وإخراجها والإجراءات التي يجب اتّخاذها بشأن الإدخال.
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="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>في التدفق المشترك، تحدّد
SharedStringFunctionsسياسة JavaScript التالية ملف 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. يجلب هذا النص البرمجي القيم من المتغيّرات التي تم إنشاؤها من عناصرParameterفي سياسة FlowCallout.// 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 |
اضبط القيمة على يمكنك ضبط القيمة على |
خطأ | اختياري |
enabled |
اضبط القيمة على اضبط القيمة على |
صحيح | اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
خطأ | منهي العمل به |
<DisplayName> عنصر
استخدِمه مع السمة name لتصنيف السياسة في
إدارة خادم وكيل لواجهة المستخدم باسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
| تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة |
|---|---|
| التواجد في المنزل | اختياري |
| النوع | سلسلة |
العنصر <SharedFlowBundle>
تحدّد هذه السمة اسم المسار المشترَك الذي سيتم استدعاؤه. يجب أن تكون قيمة هذا العنصر هي نفسها قيمة سمة الاسم الخاصة بعنصر SharedFlowBundle المستهدَف.
<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 أو محتوى الرسالة أو سياق التدفق. لمزيد من المعلومات حول متغيرات Flow، يُرجى الاطّلاع على مرجع المتغيرات.
| متغيّر | الوصف |
|---|---|
|
|
النطاق: أثناء تنفيذ سير العمل المشترَك قيمة سمة اسم مسار العمل المشترك. |
|
|
النطاق: أثناء تنفيذ سير العمل المشترك المرفق بنقطة ربط سير العمل تمثّل هذه السمة اسم خطاف سير العمل. |
مرجع الخطأ
يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيّرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل مع الأخطاء. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
| رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
|---|---|---|---|
flow.SharedFlowNotFound |
500 | إما أن التدفق المشترك غير موجود، أو أن التدفق المشترك موجود ولكن لم يتم نشره. | build |
أخطاء النشر
لا ينطبق
مواضيع ذات صلة
- إنشاء مهام سير عمل مشتركة: مهام سير عمل مشتركة قابلة لإعادة الاستخدام
- تنفيذ مهام سير العمل المشترَكة على مستوى عدة خوادم وكيلة: إرفاق مهمة سير عمل مشترَكة باستخدام خطاف مهمة سير العمل