مرجع ضبط التدفق

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

يقدم هذا القسم معلومات مرجعية حول عناصر XML التي تستخدمها لتحديد مسارات الخادم الوكيل لواجهة برمجة التطبيقات

التسلسل الهرمي بناء الجملة

توضح الأمثلة التالية العرض الهرمي للعنصر وبناء جملة تهيئة التدفق العناصر:

التسلسل الهرمي للعناصر

يوضح المثال التالي التسلسل الهرمي لعناصر تهيئة التدفق داخل العنصران <ProxyEndpoint> و<TargetEndpoint>:

<ProxyEndpoint | TargetEndpoint>
    <PreFlow>
          <Request>
                <Step>
                    <Condition>
                    <Name>
          <Response>
                <Step>
                    <Condition>
                    <Name>
          <Description>
    <Flows>
          <Flow>
                <Description>
                <Condition>
                <Request>
                      <Step>
                          
                <Response>
                      <Step>
                          
          <Description>
    <PostFlow>
          <Request>
                <Step>
                    
          <Response>
                <Step>
                    
          <Description>
    <PostClientFlow> (<ProxyEndpoint> only)
          <Response>
                
          <Description>

      // Additional configuration elements

</ProxyEndpoint | TargetEndpoint>

البنية

يوضح المثال التالي بنية عناصر ضبط التدفق. كل من هذه بالتفصيل في الأقسام التالية:

<!-- ProxyEndpoint flow configuration file -->
<ProxyEndpoint ... >
  ...
  <PreFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PreFlow>
  <Flows name="flow_name">
    <Flow name="conditional_flow_name">
      <Description>flow_description</Description>
      <Condition>property operator "value"</Condition>
      <Request>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Request>
      <Response>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Response>
    </Flow>
  </Flows>
  <PostFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PostFlow>
  <PostClientFlow name="flow_name">
    <Description>flow_description</Description>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

<!-- TargetEndpoint flow configuration file -->
<TargetEndpoint ... >
  ...
  <PreFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PreFlow>
  <Flows name="flow_name">
    <Flow name="conditional_flow_name">
      <Description>flow_description</Description>
      <Condition>property operator "value"</Condition>
      <Request>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Request>
      <Response>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Response>
    </Flow>
    ...
  </Flows>
  <PostFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PostFlow>
  ...
</TargetEndpoint>

يمكنك استخدام هذه العناصر لتحديد PreFlow و"التدفق الشرطي" وPostFlow وPostClientFlow. والتنفيذ.

<Condition>

لتحديد عبارة تتم معالجتها في وقت التشغيل. إذا تم تقييم العبارة إلى true، سيتم تنفيذ الخطوة أو التدفق المرتبط بالشرط. إذا كانت إلى false، ثم يتم تجاهل الخطوة أو التدفق.

النوع سلسلة
العناصر الرئيسية <Flow>
<Step>
العناصر الفرعية لا ينطبق

يمكنك تطبيق شرط على خطوة معينة أو على تدفق كامل، اعتمادًا على ما إذا قمت بوضع العنصر في العنصر <Flow> أو <Step>:

// Condition can apply to just one step:        // Or to the flow:
<Flows>                                         <Flows>
  <Flow>                                          <Flow>
    <Step>                                          <Condition>
      <Condition>                                   <Step>
      <Name>                                          <Name>
      ...                                             ...
    ...                                             ...
  ...                                             ...
</Flows>                                        </Flows>

إذا تم تقييم شرط في <Step> على أنّه صحيح، ستنفذ Edge هذه الخطوة. إذا كان الشرط إلى false، تتخطى Edge الخطوة.

إذا تم تقييم شرط داخل <Flow> على أنّه صحيح، ستعالج شبكة Edge جميع الخطوات في التدفق. في حال حذف يتم تقييم الشرط إلى false، وتتخطى Edge التدفق بالكامل.

البنية

يستخدم العنصر <Condition> الصيغة التالية:

<Condition>property operator "value"</Condition>

المكان:

property
خاصية متغير التدفق التي تريد استخدامها في الشرط. على سبيل المثال، يتضمّن متغيّر التدفق request سمات باسم "path" و"content" ولاستخدامها في شرط ما، يمكنك تحديد flow_variable[النقطة]property_name:
request.path
request.content

للحصول على قائمة كاملة بمتغيرات التدفق وخصائصها، راجع مرجع متغيّرات التدفق

operator
إنشاء يحدِّد كيفية تقييم الشرط. الإعدادات الشائعة وتشمل المشغلات ما يلي:
>     greater than           <=    less than or equal to
<     less than              >=    greater than or equal to
=     equals                 &&    and
!=    not equals             ||    or

~~    JavaRegex
~     Matches
/~    MatchesPath

للحصول على القائمة الكاملة، يُرجى مراجعة عوامل التشغيل في مرجع الشروط.

"value"
القيمة التي يتم تقييم خاصية متغيّر التدفق وفقًا لها. عادةً ما يكون هذا النوع الأساسي مثل عدد صحيح أو سلسلة. على سبيل المثال، 200 أو " /cat". يمكن للقيمة تضمين أحرف البدل، مثل العلامات النجمية والأحرف الأخرى لمطابقة النمط، مثل موصوفة في مطابقة النمط مع الشروط الشرطية:

مثال 1

يتحقّق المثال التالي مما إذا كانت قيمة verb لمتغيّر تدفق request هي هي "GET":

<!-- api-platform/reference/examples/flow-segments/condition-1.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
  </PreFlow>
  ...
</ProxyEndpoint>

إذا كان الطلب هو "GET"، فسينفذ هذا المثال الأمر "Log-Request-OK". .

مثال 2

يتحقق المثال التالي من رمز الاستجابة:

<!-- api-platform/reference/examples/flow-segments/condition-2.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Response>
      <Step>
        <Condition>response.status.code LesserThanOrEquals 300</Condition>
        <Name>Log-Response-OK</Name>
      </Step>
      <Step>
        <Condition>response.status.code GreaterThan 300</Condition>
        <Name>Log-Response-NOT-OK</Name>
      </Step>
    </Response>
  </PreFlow>
  ...
</ProxyEndpoint>

استنادًا إلى قيمة الرمز البرمجي، يتم تنفيذ سياسة مختلفة.

السمات

لا يتضمّن العنصر <Condition> أي سمات.

العناصر الثانوية

لا يحتوي العنصر <Condition> على أي عناصر ثانوية

<Description>

يصف التدفق بعبارات يسهل على الإنسان قراءتها. استخدم هذا العنصر لتقديم معلومات عن إلى نفسك أو إلى مطوري آخرين. لا يظهر الوصف خارجيًا.

النوع سلسلة
العناصر الرئيسية <Flow>
<PreFlow>
<PostFlow>
العناصر الفرعية لا ينطبق

البنية

يستخدم العنصر <Description> الصيغة التالية:

<Description>flow_description</Description>

مثال

يعرض المثال التالي عنصر <Description> يحدّد الغرض من التدفق:

<!-- api-platform/reference/examples/flow-segments/description-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

السمات

لا يتضمّن العنصر <Description> أي سمات.

العناصر الثانوية

لا يحتوي العنصر <Description> على أي عناصر ثانوية

<Flow>

يحدد مجموعة مخصصة من الخطوات التي ينفذها Edge.

النوع عنصر معقد
العناصر الرئيسية <Flows>
العناصر الفرعية <Condition>
<Description>
<Request>
<Response>

يمكنك اختياريًا تحديد <Condition> في <Flow>. في هذه الحالة، لا تنفِّذ Edge سوى الخطوات في التدفق إذا تم تقييم الشرط على true. بخلاف ذلك، يتخطى Edge العملية بأكملها التدفق.

يمكن أن يحتوي عنصر <Flows> على عدة عناصر <Flow>، ولكل عنصر شرطه الخاص. الخطوات. عندما يكون هناك عدة عناصر <Flow>، يُنفِّذ Edge العنصر الأول فقط الذي لا يوجد شرط أو يتم تقييم الشرط إلى true.

يمكنك تحديد تدفق افتراضي يتم تنفيذه دائمًا (إذا لم ينجح أي من التدفقات الشرطية الأخرى). واعتمادًا على كيفية تهيئة الخادم الوكيل لواجهة برمجة التطبيقات، يمكن أن تكون هذه أداة مفيدة في والحماية من البرامج الضارة والهجمات.

البنية

يستخدم العنصر <Flow> الصيغة التالية:

<Flow name="conditional_flow_name">
  <Description>flow_description</Description>
  <Condition>property operator "value"</Condition>
  <Request>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Request>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</Flow>

كل العناصر الفرعية في <Flow> اختيارية.

مثال 1

يوضّح المثال التالي علامة <Flow> بسيطة تنفّذ دائمًا عبارة "Log-Message-OK". السياسة:

<!-- api-platform/reference/examples/flow-segments/flow-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-flow">
    <Flow>
      <Request>
        <Step>
          <Name>Log-Message-OK</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

مثال 2

يوضّح المثال التالي <Flow> التي تتضمّن خطوات متعددة، ولكل منها خطواتها الخاصة. الشرط:

<!-- api-platform/reference/examples/flow-segments/flow-2.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>Verify-Auth-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

مثال 3

يوضح المثال التالي تدفقات متعددة في تدفق شرطي:

<!-- api-platform/reference/examples/flow-segments/flows-2.xml -->
<ProxyEndpoint name="default">
  <Flows>
    <Flow name="my-flow-1">
      <Response>
        <Step>
          <Condition>response.status.code = 200</Condition>
          <Name>Assign-Message-1</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-2">
      <Response>
        <Step>
          <Condition>response.status.code >= 400</Condition>
          <Name>Assign-Message-2</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-3">
      <Response>
        <Step>
          <Condition>response.status.code >= 300</Condition>
          <Name>Assign-Message-3</Name>
        </Step>
      </Response>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

تنفذ Edge تدفقًا واحدًا فقط في مقطع؛ ينفذ التدفق الأول الذي لا يحتوي شرط ما، أو الذي يتم استيفاء حالته إلى true.

السمات

يوضّح الجدول التالي سمات العنصر <Flow>:

السمة النوع الوصف
name سلسلة (مطلوب) رقم تعريف فريد للمسار. على سبيل المثال: &quot;My-Conditional-Flow-1&quot;. لا يمكن أن يحتوي الاسم على مسافات أو رموز خاصة أخرى.

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <Flow>:

عنصر ثانوي النوع الوصف
<Condition> سلسلة لتحديد عبارة شرطية تتم معالجتها في وقت التشغيل. إذا تم تقييم العبارة على true، يتم تنفيذ التدفق (وجميع خطواته). إذا تم تقييم العبارة إلى false، يتم تجاهل التدفق (وجميع خطواته).
<Description> سلسلة يوفر وصفًا موجزًا للتدفق. لا يتمّ استخدام هذا الوصف خارجيًا مرئية.
<Request> عنصر معقد تُستخدَم لتحديد الخطوات والشروط لشريحة الطلب.
<Response> عنصر معقد تُستخدَم لتحديد الخطوات والشروط لشريحة الردود.

<Flows>

لا يحتوي على عناصر <Flow> أو أكثر.

النوع عنصر معقد
العناصر الرئيسية <ProxyEndpoint>
<TargetEndpoint>
العناصر الفرعية <Flow>

إذا كان هناك عناصر <Flow> متعددة في <Flows>، سيتم تنفيذ عنصر <Flow> واحد فقط. هذا النمط سيكون التدفق الأول الذي لا يحتوي على <Condition>، أو الذي يتم استيفاء شرطه إلى true.

يمكنك تحديد تدفق افتراضي يتم تنفيذه دائمًا (إذا لم ينجح أي من التدفقات الأخرى). واعتمادًا على كيفية تهيئة الخادم الوكيل لواجهة برمجة التطبيقات، يمكن أن تكون هذه أداة مفيدة في والحماية من البرامج الضارة والهجمات.

البنية

يستخدم العنصر <Flows> الصيغة التالية:

<Flows name="flow_name">
  <Flow name="conditional_flow_name">
    <Description>flow_description</Description>
    <Condition>property operator "value"</Condition>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </Flow>
</Flows>

كل العناصر الفرعية في <Flows> اختيارية.

مثال 1

يوضّح المثال التالي عنصر <Flows> بسيطًا مع <Flow> واحد:

<!-- api-platform/reference/examples/flow-segments/flows-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>Verify-Auth-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

تنفِّذ شبكة Edge إحدى هذه السياسات استنادًا إلى لاحقة المسار التي تجمعها من متغيّر التدفق proxy إذا لم تتطابق لاحقة المسار مع أي من الشروط، فعندئذ لا تنفذ Edge هذا التدفق.

مثال 2

يعرض المثال التالي عدة عناصر <Flow> ضمن <Flows>، ولكل منها عنصرها الخاص. <Condition>:

<!-- api-platform/reference/examples/flow-segments/flows-2.xml -->
<ProxyEndpoint name="default">
  <Flows>
    <Flow name="my-flow-1">
      <Response>
        <Step>
          <Condition>response.status.code = 200</Condition>
          <Name>Assign-Message-1</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-2">
      <Response>
        <Step>
          <Condition>response.status.code >= 400</Condition>
          <Name>Assign-Message-2</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-3">
      <Response>
        <Step>
          <Condition>response.status.code >= 300</Condition>
          <Name>Assign-Message-3</Name>
        </Step>
      </Response>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

تنفذ Edge التدفق الأول فقط في المقطع الذي يتم تقييم شرطه على true. بعد ذلك، يتخطى Edge التدفقات المتبقية في المقطع.

مثال 3

يوضّح المثال التالي القيمة "default" <Flow>:

<!-- api-platform/reference/examples/flow-segments/flows-3.xml -->
<ProxyEndpoint name="default">
  <Flows>
    <Flow name="my-conditional-flow-1">
      <Response>
        <Step>
          <Condition>response.status.code = 200</Condition>
          <Name>Assign-Message-1</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-conditional-flow-2">
      <Response>
        <Step>
          <Condition>response.header.someheader = "42"</Condition>
          <Name>Assign-Message-2</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-default-flow">
      <Response>
        <Step>
          <Name>Assign-Message-3</Name>
        </Step>
      </Response>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

تنفذ Edge التدفق الأول فقط في المقطع الذي يتم تقييم شرطه على true. في حال حذف لا يتم تنفيذ أي تدفقات شرطية، فإن التدفق الثالث في هذا المثال (بدون شرط) وتنفيذه.

يمكن أن يكون التدفق الافتراضي أداة مفيدة في والحماية من البرامج الضارة والهجمات.

السمات

لا يتضمّن العنصر <Flows> أي سمات.

العناصر الثانوية

يحتوي العنصر <Flows> على العناصر الثانوية التالية:

عنصر ثانوي النوع الوصف
<Flow> عنصر معقد يشير ذلك المصطلح إلى التدفق الذي يحدّد مجموعة واحدة محتملة من الخطوات ضمن "التدفق الشرطي".

<Name>

تُحدِّد هذه السياسة رقم تعريف السياسة المطلوب تنفيذها في <Flow>.

النوع سلسلة
العناصر الرئيسية <Step>
العناصر الفرعية لا ينطبق

البنية

يستخدم العنصر <Name> الصيغة التالية:

<Name>policy_name</Name>

مثال

يوضح المثال التالي سياستين تتم إضافتهما إلى التدفقات حسب اسمهما:

<!-- api-platform/reference/examples/flow-segments/name-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>Verify-Auth-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

السمات

لا يتضمّن العنصر <Name> أي سمات.

العناصر الثانوية

لا يحتوي العنصر <Name> على أي عناصر ثانوية

<PostFlow>

تحدّد الخطوات التي يجب اتّخاذها في PostFlow للطلب والاستجابة.

النوع عنصر معقد
العناصر الرئيسية <ProxyEndpoint>
<TargetEndpoint>
العناصر الفرعية <Description>
<Request>
<Response>

يستخدم العنصر <PostFlow> الصيغة التالية:

البنية

<PostFlow name="flow_name">
  <Description>flow_description</Description>
  <Request>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Request>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</PostFlow>

مثال

يعرض المثال التالي حدث PostFlow مع خطوات كل من الطلب والاستجابة المحددة:

<!-- api-platform/reference/examples/flow-segments/postflow-1.xml -->
<ProxyEndpoint name="default">
  <PostFlow name="my-postflows">
    <Description>My first PostFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
    <Response>
      <Step>
        <Name>Set-Response-Headers</Name>
      </Step>
    </Response>
  </PostFlow>
  ...
</ProxyEndpoint>

السمات

يوضّح الجدول التالي سمات العنصر <PostFlow>:

السمة النوع الوصف
name سلسلة معرّف فريد للتدفق (فريد داخل نقطة النهاية). على سبيل المثال، "My-PostFlow-1". تشير رسالة الأشكال البيانية لا يمكن أن تتضمن قيمة مسافات أو رموزًا خاصة أخرى.

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <PostFlow>:

عنصر ثانوي النوع الوصف
<Description> سلسلة يوفر وصفًا موجزًا للتدفق.
<Request> عنصر معقد تحدِّد هذه السياسة السياسات التي يجب تنفيذها أثناء عملية PostFlow للطلب.
<Response> عنصر معقد تحدّد هذه السياسة السياسات التي يجب تنفيذها أثناء عملية PostFlow في الرد.

<PostClientFlow>

تحدِّد السياسات في ProxyEndpoint التي يتم تنفيذها فقط بعد إرجاع الاستجابة إلى للعميل. عادةً ما تسجّل هذه السياسات الرسائل ذات الصلة بالردّ.

النوع عنصر معقد
العناصر الرئيسية <ProxyEndpoint>
العناصر الفرعية <Description>
<Response>

البنية

يستخدم العنصر <PostClientFlow> الصيغة التالية:

<PostClientFlow name="flow_name">
  <Description>flow_description</Description>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</PostClientFlow>

كل العناصر الفرعية في <PostClientFlow> اختيارية.

مثال

يوضح المثال التالي PostClientFlow بسيط ينفذ سياسة واحدة:

<!-- api-platform/reference/examples/flow-segments/postclientflow-1.xml -->
<ProxyEndpoint name="default">
  <PostClientFlow name="my-postclientflows">
    <Description>My first PostClientFlow. Processed after the response is sent back to the client.</Description>
    <Response>
      <Step>
        <Name>Message-Logging-OK</Name>
      </Step>
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

السمات

يوضّح الجدول التالي سمات العنصر <PostClientFlow>:

السمة النوع الوصف
name سلسلة معرّف فريد للمسار. لا يمكن أن يحتوي الاسم على مسافات أو رموز خاصة أخرى الأحرف. على سبيل المثال، "My-PostClientFlow-1".

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <PostClientFlow>:

عنصر ثانوي النوع الوصف
<Description> سلسلة يوفر وصفًا موجزًا للتدفق.
<Response> عنصر معقد تحدّد هذه السياسة السياسات التي يجب تنفيذها أثناء عملية PostFlow في الرد.

<PreFlow>

تحدد السياسات التي سيتم تنفيذها في التدفق المسبق للطلب والاستجابة.

النوع عنصر معقد
العناصر الرئيسية <ProxyEndpoint>
<TargetEndpoint>
العناصر الفرعية <Description>
<Request>
<Response>

البنية

يستخدم العنصر <PreFlow> الصيغة التالية:

<PreFlow name="flow_name">
  <Description>flow_description</Description>
  <Request>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Request>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</PreFlow>

كل العناصر الفرعية في <PreFlow> اختيارية.

مثال

يعرض المثال التالي PreFlow مع طلب وتحديد مسار استجابة:

<!-- api-platform/reference/examples/flow-segments/preflow-1.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
    <Response>
      <Step>
        <Condition>response.status.code LesserThanOrEquals 300</Condition>
        <Name>Log-Response-OK</Name>
      </Step>
      <Step>
        <Condition>response.status.code GreaterThan 300</Condition>
        <Name>Log-Response-NOT-OK</Name>
      </Step>
    </Response>
  </PreFlow>
  ...
</ProxyEndpoint>

السمات

يوضّح الجدول التالي سمات العنصر <PreFlow>:

السمة النوع الوصف
name سلسلة معرّف فريد للمسار. لا يمكن أن يحتوي الاسم على مسافات أو رموز خاصة أخرى الأحرف. على سبيل المثال، "My-PreFlow-1".

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <PreFlow>:

عنصر ثانوي النوع الوصف
<Description> سلسلة يوفر وصفًا موجزًا للتدفق.
<Request> عنصر معقد تحدِّد هذه السياسة السياسات التي يتم تنفيذها أثناء عملية PreFlow الخاصة بالطلب.
<Response> عنصر معقد تحدد السياسات التي سيتم تنفيذها أثناء مسار PreFlow الخاص بالاستجابة.

<Request>

تحدد السياسات التي سيتم تنفيذها أثناء شريحة الطلب في التدفق.

النوع عنصر معقد
العناصر الرئيسية <Flow>
<PreFlow>
<PostFlow>
العناصر الفرعية <Condition>
<Step>

البنية

يستخدم العنصر <Request> الصيغة التالية:

<Request>
  <Step>
    <Condition>property operator "value"</Condition>
    <Name>policy_name</Name>
  </Step>
  ...
</Request>

كل العناصر الفرعية في <Request> اختيارية.

مثال

يوضح المثال التالي التدفقات المحددة للطلب في كل من PreFlow PostFlow:

<!-- api-platform/reference/examples/flow-segments/request-1.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
  </PreFlow>
  <PostFlow name="my-postflows">
    <Description>My first PostFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
  </PostFlow>
  ...
</ProxyEndpoint>

السمات

لا يتضمّن العنصر <Request> أي سمات.

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <Request>:

عنصر ثانوي النوع الوصف
<Condition> عنصر معقد يحدِّد هذا الإعداد ما إذا كان قد تم تنفيذ الخطوات ضمن شريحة الطلب.
<Step> سلسلة تحدِّد هذه السياسة سياسة يتم تنفيذها في شريحة الطلب.

<Response>

تحدد السياسات التي سيتم تنفيذها خلال مقطع الاستجابة في التدفق.

النوع عنصر معقد
العناصر الرئيسية <Flow>
<PreFlow>
<PostClientFlow>
<PostFlow>
العناصر الفرعية <Condition>
<Step>

البنية

يستخدم العنصر <Response> الصيغة التالية:

<Response>
  <Step>
    <Condition>property operator "value"</Condition>
    <Name>policy_name</Name>
  </Step>
  ...
</Response>

كل العناصر الفرعية في <Response> اختيارية.

مثال

يوضح المثال التالي التدفقات المحددة للرد، في كل من PreFlow PostFlow:

<!-- api-platform/reference/examples/flow-segments/response-1.xml -->
<ProxyEndpoint name="default">
    <PreFlow name="my-preFlows">
        <Description>My first PreFlow</Description>
        <Response>
            <Step>
                <Condition>response.status.code LesserThanOrEquals 300</Condition>
                <Name>Log-Response-OK</Name>
            </Step>
            <Step>
                <Condition>response.status.code GreaterThan 300</Condition>
                <Name>Log-Response-NOT-OK</Name>
            </Step>
        </Response>
    </PreFlow>
    <PostFlow name="my-postflows">
        <Description>My first PostFlow</Description>
        <Response>
            <Step>
                <Name>Set-Response-Headers</Name>
            </Step>
        </Response>
    </PostFlow>
  ...
</ProxyEndpoint>

السمات

لا يتضمّن العنصر <Response> أي سمات.

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <Response>:

عنصر ثانوي النوع الوصف
<Condition> سلسلة يحدِّد هذا الإعداد ما إذا كان قد تم تنفيذ الخطوات ضمن مقطع الردّ.
<Step> سلسلة تحدِّد هذه السياسة سياسة يجب تنفيذها في قسم الردّ.

<Step>

يحدد سياسة لتنفيذها و (اختياريًا) شرط يحدد ما إذا كان سيتم تنفيذه تلك السياسة.

النوع عنصر معقد
العناصر الرئيسية <Request>
<Response>
العناصر الفرعية <Condition>
<Name>

يمكن تحديد أكثر من خطوة في <Flow>، ويتم تنفيذ الخطوات في حسب ترتيبها في ملف XML الخاص بالتدفق.

يتم دائمًا تنفيذ الخطوات التي لا تتضمن شرطًا. لا يتم تنفيذ الخطوات التي تحتوي على شرط إلا إذا كان الشرط يتم تقييمه إلى true. إذا تم تقييم الشرط إلى false، فإن Edge ستتخطى الخطوة.

البنية

يستخدم العنصر <Step> الصيغة التالية:

<Step>
  <Condition>property operator "value"</Condition>
  <Name>policy_name</Name>
</Step>

لا يمكن تضمين سوى <Condition> واحدة و<Name> واحدة لكل <Step>، ولكن يمكن خطوات متعددة في <Flow>.

كل العناصر الفرعية في <Step> اختيارية.

مثال 1

يوضّح المثال التالي خطوة واحدة مع شرط وخطوة واحدة بدون شرط:

<!-- api-platform/reference/examples/flow-segments/step-1.xml -->
<ProxyEndpoint name="default">
  <PostFlow name="my-postflows">
      <Description>My first PostFlow</Description>
      <Request>
          <Step>
              <Condition>request.verb = "GET"</Condition>
              <Name>Log-Request-OK</Name>
          </Step>
      </Request>
      <Response>
          <Step>
              <Name>Set-Response-Headers</Name>
          </Step>
      </Response>
  </PostFlow>
  ...
</ProxyEndpoint>

سيتم تنفيذ الخطوة بدون الشرط في كل مرة خلال مقطع الطلب. الخطوة مع شرط لن يتم تنفيذ إلا عندما يكون الطلب "GET" أثناء الردّ .

مثال 2

يوضح المثال التالي خطوات متعددة في شريحة واحدة:

<!-- api-platform/reference/examples/flow-segments/step-2.xml -->
<ProxyEndpoint name="default">
    <PostFlow name="PostFlow">
        <Response>
            <Step>
                <Name>Assign-Message-1</Name>
            </Step>
            <Step>
                <Name>Assign-Message-2</Name>
            </Step>
        </Response>
    </PostFlow>
  ...
</ProxyEndpoint>

يتم دائمًا تنفيذ الخطوات التي لا تتضمن شرطًا.

السمات

لا يتضمّن العنصر <Step> أي سمات.

العناصر الثانوية

يوضّح الجدول التالي العناصر الثانوية في <Step>:

عنصر ثانوي النوع الوصف
<Condition> سلسلة لتحديد عبارة شرطية للخطوة التي تتم معالجتها في وقت التشغيل. إذا كانت يتم تقييمه إلى true، ثم تنفذ Edge الخطوة. إذا تم تقييم العبارة إلى false، ثم يتخطى Edge الخطوة.
<Name> سلسلة تُحدِّد هذه السياسة رقم تعريف السياسة المطلوب تنفيذها في التدفق الحالي.