عیب یابی خطای زمان اجرا خط مشی FlowCallout، عیب یابی خطای زمان اجرا خط مشی FlowCallout

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

SharedFlowNotFound

کد خطا

flow.SharedFlowNotFound

بدنه پاسخ به خطا

{
    "fault": {
        "faultstring": "Shared Flow shared_flow_name Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

علل احتمالی

دلایل احتمالی این خطا عبارتند از:

علت توضیحات
جریان مشترک در دسترس نیست جریان مشترک وجود ندارد.
جریان مشترک مستقر نشده است جریان مشترک وجود دارد اما مستقر نشده است.

علت: جریان مشترک در دسترس نیست

در خط مشی Flow Callout، اگر جریان مشترک تعریف شده در عنصر <SharedFlowBundle> در محیط وجود نداشته باشد، این خطا رخ می دهد.

به عنوان مثال، اگر عنصر <SharedFlowBundle> در خط مشی Flow Callout حاوی یک جریان مشترک به نام SharedFlow_Sample باشد و اگر این جریان مشترک در محیط وجود نداشته باشد، خطا رخ می دهد.

نمونه پیام خطا

{
    "fault": {
        "faultstring": "Shared Flow SharedFlow_Sample Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

تشخیص

  1. جریان مشترکی که وجود ندارد را شناسایی کنید. این را می توانید در عنصر faultstring پاسخ خطا پیدا کنید. به عنوان مثال، در faultstring زیر، نام جریان مشترک SharedFlow_Sample است:

    "faultstring": "Shared Flow SharedFlow_Sample Not Found"

  2. همه خط‌مشی‌های Flow Callout را در پروکسی API خاصی که در آن شکست رخ داده است، بررسی کنید. بررسی کنید که آیا خط مشی Flow Callout وجود دارد که در آن عنصر <SharedFlowBundle> با نام جریان مشخص شده در مرحله #1 در بالا مشخص شده باشد.

    به عنوان مثال، سیاست زیر <SharedFlowBundle> را به عنوان SharedFlow_Sample مشخص می‌کند که با آنچه در رشته خطا وجود دارد مطابقت دارد.

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
       <DisplayName>Auth Flow Callout</DisplayName>
       <SharedFlowBundle>SharedFlow_Sample</SharedFlowBundle>
    </FlowCallout>
    
  3. در رابط کاربری Edge، بررسی کنید که آیا این جریان مشترک در زیر APIs > جریان های مشترک وجود دارد یا خیر. اگر وجود نداشته باشد، پس علت خطا همین است. (توجه داشته باشید که در رابط کاربری New Edge، می‌توانید جریان‌های اشتراک‌گذاری شده را در زیر تب Develop پیدا کنید.)

    به عنوان مثال، در تصویر زیر، جریان مشترک SharedFlow_Sample وجود ندارد.

    چون این جریان مشترک وجود ندارد، کد خطا را دریافت می کنید:

    flow.SharedFlowNotFound
    

قطعنامه

اطمینان حاصل کنید که جریان مشترک مشخص شده در عنصر <SharedFlowBundle> در خط مشی Flow Callout، وجود داشته باشد و در محیط خاصی که درخواست API در آن اجرا می شود، وجود داشته باشد.

می توانید یکی از راه های زیر را برای رفع مشکل انتخاب کنید:

  1. یک جریان مشترک به نام SharedFlow_Sample مانند شکل زیر ایجاد کنید و آن را در محیط آزمایشی مانند شکل زیر مستقر کنید:

  2. از یک جریان مشترک از قبل موجود استفاده کنید که در محیط آزمایشی در خط مشی Flow Callout مستقر شده است. به عنوان مثال، می توانید SharedFlow_demo را در خط مشی Flow Callout مشخص کنید.

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
      <DisplayName>Auth Flow Callout</DisplayName>
      <SharedFlowBundle>SharedFlow_demo</SharedFlowBundle>
    </FlowCallout>
    

    اگر یک تماس API با محیط تست برقرار کنید، دیگر خطا را مشاهده نخواهید کرد، زیرا Flow Callout در محیط آزمایش نیز مستقر شده است.

علت: جریان مشترک مستقر نشده است

اگر جریان مشترک مشخص شده در عنصر <SharedFlowBundle> خط مشی Flow Callout اجرا نشود، این خطا رخ می دهد.

به عنوان مثال، اگر عنصر <SharedFlowBundle> در خط مشی Flow Callout حاوی یک جریان مشترک به نام SharedFlow_example باشد که در محیط خاصی که درخواست API در آن انجام شده است، مستقر نشده باشد، خطا رخ می دهد.

نمونه پیام خطا

{
    "fault": {
        "faultstring": "Shared Flow Shared-Flow_example Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

تشخیص

  1. جریان مشترکی را که مستقر نشده است شناسایی کنید. این را می توانید در عنصر faultstring پاسخ خطا پیدا کنید. به عنوان مثال، در faultstring زیر، نام جریان مشترک Shared-Flow_example است:

    "faultstring": "Shared Flow Shared-Flow_example Not Found"

  2. در رابط کاربری Edge، بررسی کنید که آیا این جریان مشترک اجرا شده است یا خیر.

    به عنوان مثال، در تصویر زیر متوجه خواهید شد که جریان مشترک SharedFlow_example وجود دارد اما مستقر نشده است.

    از آنجایی که این جریان مشترک مستقر نشده است، کد خطا را دریافت می کنید:

    flow.SharedFlowNotFound
    

قطعنامه

اطمینان حاصل کنید که جریان مشترک مشخص شده در عنصر <SharedFlowBundle> در خط مشی Flow Callout، وجود داشته باشد و در محیط خاصی که درخواست API در آن اجرا می شود، وجود داشته باشد.

برای تصحیح مثال بالا، جریان مشترک به نام SharedFlow_example را در محیط آزمایشی مطابق شکل زیر مستقر کنید:

اگر یک تماس API با محیط تست برقرار کنید، دیگر خطا را مشاهده نخواهید کرد، زیرا Flow Callout در محیط آزمایش نیز مستقر شده است.