سياسة تدفق وسائل الشرح

يتم الآن عرض مستندات 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 المَعلمات التي تحدِّد إدخال السلسلة والإخراج وما يجب فعله بالإدخال.

  1. تستدعي سياسة 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>
    
  2. يتضمّن المسار المشترك default التالي سياسة JavaScript SharedStringFunctions يتم تنفيذها عند استدعاء المسار المشترَك من سياسة FlowCallout.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. في المسار المشترك، تحدّد سياسة 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>
  4. يتم تنفيذ محتوى JavaScript التالي، SharedStringFunctions.js، من سياسة JavaScript 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. يتدفق التنفيذ من سياسة 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

الاسم الداخلي للسياسة وقد تحتوي قيمة السمة name على أحرف وأرقام ومسافات وواصلات وشرطات سفلية ونقاط. لا يمكن أن تتجاوز هذه القيمة 255 حرفًا.

ويمكنك اختياريًا استخدام العنصر <DisplayName> لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف للغة طبيعية.

لا ينطبق مطلوبة
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ السياسة. وهو سلوك متوقّع لمعظم السياسات.

اضبط القيمة على true لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ السياسة.

false إجراء اختياري
enabled

اضبط القيمة على true لفرض السياسة.

اضبط القيمة على false من أجل إيقاف السياسة. ولن يتم فرض السياسة حتى إذا ظلت مرتبطة بمسار.

صحيح إجراء اختياري
async

تم إيقاف هذه السمة نهائيًا.

false منهي العمل به

العنصر <DisplayName>

استخدِم هذه السمة بالإضافة إلى السمة name لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة name الخاصة بالسياسة.

التواجد في المنزل إجراء اختياري
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 أو محتوى الرسالة أو سياق التدفق. لمزيد من المعلومات عن متغيّرات التدفق، يُرجى الاطّلاع على مرجع المتغيّرات.

متغير الوصف

apigee.edge.sharedflow.name

النطاق: أثناء تنفيذ التدفق المشترك
النوع: سلسلة
الإذن: قراءة

قيمة سمة اسم التدفق المشترك.

apigee.edge.flowhook.name

النطاق: أثناء تنفيذ التدفق المشترَك المرفق بعنصر الجذب للتدفق.
النوع: سلسلة
الإذن: قراءة

اسم عنصر جذب التدفق.

مرجع الخطأ

يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيّرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل مع الأخطاء. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.

أخطاء في وقت التشغيل

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.

رمز الخطأ رموز حالة HTTP السبب إصلاح
flow.SharedFlowNotFound 500 إما أن التدفق المشترك غير موجود، أو أن التدفق المشترك موجود ولكن لم يتم نشره.

أخطاء النشر

لا ينطبق

مواضيع ذات صلة