درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
SourceMessageNotAvailable
کد خطا
steps.extractvariables.SourceMessageNotAvailable
متن پاسخ خطا
{
"fault": {
"faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SourceMessageNotAvailable"
}
}
}
علت
این خطا زمانی رخ میدهد که متغیر پیام مشخصشده در عنصر <Source> از خطمشی استخراج متغیرها یکی از موارد زیر باشد:
- خارج از محدوده (در جریان خاصی که خطمشی در آن اجرا میشود دردسترس نیست) یا
- قابلحل نیست (تعریف نشده است)
برای مثال، اگر خطمشی «استخراج متغیرها» در
جریان درخواست اجرا شود، اما عنصر <Source> روی متغیر response یا error
تنظیم شده باشد که در جریان درخواست وجود ندارد، این خطا رخ میدهد.
تشخیص
خطمشی «استخراج متغیرها» را که خطا در آن رخ داده است و نام متغیری را که دردسترس نیست شناسایی کنید. هر دوی این موارد را میتوانید در عنصر
faultstringپاسخ خطا پیدا کنید. برای مثال، در faultstring زیر، نام خطمشیExtractVariables-1و متغیرresponseاست:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"در فایل XML خطامند خطمشی «استخراج متغیرها»، بررسی کنید که نام متغیر تنظیمشده در عنصر با نام متغیر شناساییشده در رشته خطا مطابقت داشته باشد (مرحله ۱ در بالا). برای مثال، خطمشی «استخراج متغیرها» زیر متغیری را بهنام
responseدر عنصر مشخص میکند که با آنچه در رشته خطا است مطابقت دارد:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>تعیین کنید که آیا متغیر استفادهشده در عنصر
<Source>در جریانی که خطمشی «استخراج متغیرها» در آن اجرا میشود تعریف و دردسترس است یا نه.اگر متغیر یکی از این موارد باشد:
- خارج از محدوده (در جریان خاصی که خطمشی در آن اجرا میشود دردسترس نیست) یا
- قابلحل نیست (تعریف نشده است)
در این صورت، این دلیل خطا است.
بهعنوان مثال، فرض کنید خطمشی «استخراج متغیرها» که در بالا نشان داده شده است در جریان درخواست اجرا میشود. بهیاد داشته باشید که متغیر
responseدر عنصر<Source>خطمشی «استخراج متغیرها» استفاده میشود. متغیرresponseفقط در جریان پاسخ دردسترس است.ازآنجاییکه متغیر
responseدر جریان درخواست وجود ندارد، کد خطایsteps.extractvariables.SourceMessageNotAvailableرا دریافت میکنید.
وضوح
مطمئن شوید مجموعه متغیر در عنصر <Source> خطمشی «استخراج متغیرها» که ناموفق بوده است تعریف شده باشد و در جریانی که خطمشی اجرا میشود وجود داشته باشد.
برای اصلاح خطمشی «استخراج متغیرها» نشاندادهشده در بالا، میتوانید عنصر <Source> را تغییر دهید تا از متغیر request همانطور که در جریان درخواست وجود دارد استفاده کند:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
کد خطا
steps.extractvariables.SetVariableFailed
متن پاسخ خطا
{
"fault": {
"faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SetVariableFailed"
}
}
}
علت
این خطا زمانی رخ میدهد که خطمشی «استخراج متغیرها» نتواند مقدار را روی متغیری تنظیم کند. این خطا معمولاً زمانی رخ میدهد که سعی کنید مقادیر را به چندین متغیر اختصاص دهید که نام آنها با کلمات یکسانی در قالب نقطهای تو در تو شروع میشود.
برای مثال، فرض کنیم مقداری را برای متغیر var.color ایجاد/اختصاص میدهید. در این مورد، color بهعنوان گره شیء اختصاص داده میشود. اگر سپس سعی کنید مقداری را به متغیر دیگری var.color.next اختصاص دهید، این کار انجام نخواهد شد زیرا color قبلاً اختصاص داده شده است و اختصاص متغیر دیگری به آن مجاز نیست.
تشخیص
خطمشی «استخراج متغیرها» را که خطا در آن رخ داده است و نام متغیری را که مقدار آن تنظیم نشده است شناسایی کنید. هر دوی این موارد را میتوانید در عنصر
faultstringپاسخ خطا پیدا کنید. برای مثال، در رشته خطای زیر، نام خطمشیExtractColorsو متغیرvar.color.nextاست:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"در فایل XML خطمشی «استخراج متغیرها» که ناموفق بوده است، تأیید کنید که نام متغیر با نام متغیر شناساییشده در رشته خطا مطابقت داشته باشد (مرحله ۱ در بالا). برای مثال، خطمشی زیر تلاش میکند مقداری را از پارامتر پُرسمان درخواست به متغیری بهنام
var.color.next(مقدار ظاهرشده در رشته خطا) اختصاص دهد:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{color.next}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>همه نامهای متغیر استفادهشده در خطمشی «استخراج متغیرها» ناموفق را بررسی کنید. اگر به متغیر دیگری که نام آن با نام متغیر شناساییشده در رشته خطا شروع میشود (مرحله ۱ در بالا) مقداری اختصاص دادهاید، این دلیل خطا است.
در خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، به موارد زیر توجه کنید:
- مقدار پارامتر پُرسمان با نام
colorابتدا به متغیرvar.colorاختصاص داده میشود(توجه:varپیشوند همه متغیرها است که در عنصر<VariablePrefix>تنظیم شده است) - در تکلیف بعدی، مقدار پارامتر پُرسمان
nextcolorبه متغیر دیگریvar.color.nextاختصاص داده میشود. - ازآنجاییکه
var.colorقبلاً تخصیص داده شده است، خطمشی «استخراج متغیرها» نمیتواند متغیر تودرتوی دیگریvar.color.nextرا تخصیص دهد. بنابراین کد خطایsteps.extractvariables.SetVariableFailedرا دریافت میکنید
- مقدار پارامتر پُرسمان با نام
وضوح
مطمئن شوید که چندین نام متغیر ندارید که نام آنها با کلمات یکسانی شروع میشود که در قالب نقطهجدا از هم تودرتو هستند.
برای اصلاح خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، میتوانید نام متغیر
var.color.nextرا تغییر دهید تا از نام متغیرvar.nextcolor.استفاده کند<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{nextcolor}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
اطلاعات بیشتر
برای جزئیات بیشتر به این پست انجمن مراجعه کنید.
InvalidJSONPath
کد خطا
steps.extractvariables.InvalidJSONPath
متن پاسخ خطا
{
"fault": {
"faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
"detail": {
"errorcode": "steps.extractvariables.InvalidJSONPath"
}
}
}
علت
این خطا زمانی رخ میدهد که مسیر JSON نامعتبری در عنصر <JSONPath>
خطمشی «استخراج متغیرها» استفاده شود. برای مثال، اگر بار JSON شیء Name را نداشته باشد، اما Name را بهعنوان مسیر در خطمشی «استخراج متغیرها» مشخص کنید، این خطا رخ میدهد.
تشخیص
خطمشی «استخراج متغیرها» را که خطا در آن رخ داده است و مسیر JSON نامعتبر را شناسایی کنید. میتوانید هر دو مورد را در عنصر
faultstringپاسخ خطا پیدا کنید. برای مثال، در رشته خطای زیر، نام خطمشیExtractJSONVariablesو مسیر JSON نامعتبر$.Nameاست:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."در «زبان نشانهگذاری توسعهپذیر» خطمشی «استخراج متغیرها» ناموفق، تأیید کنید که مسیر JSON تنظیمشده در عنصر
<JSONPath>با مسیر شناساییشده در رشته خطا مطابقت داشته باشد (مرحله ۱ در بالا). برای مثال، خطمشی «استخراج متغیرها» زیر مسیر JSON$.Nameرا مشخص میکند، که با آنچه در رشته خطا است مطابقت دارد:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.Name</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>عنصر
<Source>را بررسی کنید و تعیین کنید از کدام «پایهبار JSON» میخواهید متغیر را استخراج کنید. برای مثال، اگر عنصر<Source>رویrequestتنظیم شده باشد، خطمشی درحال استخراج کردن بار JSON از شیء درخواست است. اگر رویresponseتنظیم شده باشد، شیء پاسخ خواهد بود.در خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، عنصر
<Source>رویresponseتنظیم شده است، بنابراین متغیرها از بار JSON پاسخ استخراج میشوند.<Source>response</Source>پایهبار JSON مناسب (تعیینشده از مرحله #۳) را بررسی کنید و اعتبارسنجی کنید که آیا شیء مشخصشده در عنصر
<JSONPath>را دارد یا نه. اگر بار JSON آن شیء را نداشته باشد، دلیل خطا همین است.بهعنوان مثال، درنظر بگیرید که میخواهید متغیرها را از بار داده پاسخ JSON زیر استخراج کنید:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }ازآنجاییکه پایهبار پاسخ JSON شیء
Nameرا ندارد، خطمشی «استخراج متغیرها» با خطایی که کد خطایsteps.extractvariables.InvalidJSONPathرا دریافت میکنید ناموفق است.
وضوح
مطمئن شوید که فقط اشیایی که بخشی از «پایهبار JSON» هستند و متغیرها از آنها استخراج میشوند در عنصر
<JSONPath>خطمشی «استخراج متغیرها» مشخص شده باشند.برای اصلاح خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، میتوانید عنصر
<JSONPath>را تغییر دهید تا یکی از اشیای موجود در «پایهبار» پاسخ JSON نمونه را مشخص کنید (برای مثال، اشیایfirstNameوlastNameمعتبر هستند):<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.firstName</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
ExecutionFailed
کد خطا
steps.extractvariables.ExecutionFailed
متن پاسخ خطا
{
"fault": {
"faultstring": "Failed to execute the ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.ExecutionFailed"
}
}
}
علل احتمالی
دلایل احتمالی این خطا عبارتاند از:
| علت | شرح |
| پایهبار ورودی وجود ندارد | پایهبار ورودی (JSON، XML) خالی است. |
| ورودی نامعتبر یا قالب نادرست | ورودی (JSON، XML، و غیره) ارسالشده به خطمشی نامعتبر یا ناقص است. |
دلیل: بار ورودی وجود ندارد
اگر خطمشی «استخراج متغیرها» قرار باشد متغیرها را از بار JSON یا XML استخراج کند، اما محتوای (بار) متغیر مشخصشده در عنصر <Source> خالی باشد، این خطا رخ میدهد.
برای مثال، اگر عنصر <Source> در خطمشی «استخراج متغیرها» روی request یا response تنظیم شده باشد و قرار باشد حاوی بار JSON یا XML باشد، اما بار خالی باشد، خطا رخ میدهد.
تشخیص
خطمشی «استخراج متغیرها» را که خطا در آن رخ داده است شناسایی کنید. میتوانید این اطلاعات را در عنصر faultstring پاسخ خطا پیدا کنید. برای مثال، در faultstring زیر، نام خطمشی
ExtractJSONVariablesاست:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"عنصر
<Source>را در «استخراج متغیرها» ناموفق XML بررسی کنید و نوع ورودیای را که متغیرها از آن استخراج میشوند تعیین کنید. برای مثال، خطمشی «استخراج متغیرها» زیر<Source>عنصر را رویresponseتنظیم کرده است و متغیرها را از پایهبار XML استخراج میکند:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true"> <XMLPayload> <Namespaces/> <Variable name="City" type="string"> <XPath>/city</XPath> </Variable> </XMLPayload> <Source clearPayload="false">response</Source> </ExtractVariables>بررسی کنید ورودیای که خطمشی «استخراج متغیرها» آن را تجزیه میکند خالی باشد. اگر ورودی خالی باشد، دلیل خطا همین است.
در خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، بار پاسخ (یعنی بدنه پاسخ) که توسط سرور پشتیبان ارسال شده است خالی است.
ازآنجاییکه بار پاسخ XML خالی است، کد خطای زیر را دریافت میکنید:
steps.extractvariables.ExecutionFailedاین خطا همچنین میتواند زمانی رخ دهد که عنصر
<Source>رویrequestتنظیم شده باشد، اما هیچ پیاموارهای در درخواست پراکسی میانای برنامهسازی کاربردی ارسال نشده باشد. برای مثال:curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"خطمشی «استخراج متغیرها» فقط زمانی استخراج «زبان نشانهگذاری توسعهپذیر» را انجام میدهد که سرصفحه پیام
Content-Typeapplication/xml،text/xml، یاapplication/*+xmlباشد. اگر میخواهید خطمشی «استخراج متغیرها» بار محموله درخواست XML را تجزیه کند، باید سرایند Content-Type را بهعنوانapplication/xml،text/xml، یاapplication/*+xmlارسال کنید.
وضوح
مطمئن شوید ورودی ارسالشده به خطمشی «استخراج متغیرها» معتبر و غیرخالی باشد.
برای رفع مشکل خطمشی «استخراج متغیرها» در مثال بالا، پیامواره XML معتبری ارسال کنید. برای مثال:
فایلی با نام
city.xmlبا محتوای زیر ایجاد کنید:<city>Bengaluru</city> <area>Sanjaynagar</area>تماس API را بااستفاده از فرمان cURL بهصورت زیر برقرار کنید:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
علت: ورودی نامعتبر یا قالب نادرست
اگر خطمشی «استخراج متغیرها» ورودی نامعتبر یا بدشکل را تجزیه کند، این خطا را دریافت میکنید.
برای مثال، اگر JSON نامعتبر زیر بهعنوان ورودی به خطمشی «استخراج متغیرها» ارائه شود، این خطا را دریافت خواهید کرد.
[
"args": ["name" : "amar" ]
]
تشخیص
خطمشی «استخراج متغیرها» را که خطا در آن رخ داده است شناسایی کنید. میتوانید این اطلاعات را در عنصر
faultstringپاسخ خطا پیدا کنید. برای مثال، درfaultstringزیر، نام خطمشیExtractJSONVariablesاست:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"عنصر
<Source>را در «استخراج متغیرها» ناموفق XML بررسی کنید و نوع ورودیای را که متغیرها از آن استخراج میشوند تعیین کنید. برای مثال، خطمشی «استخراج متغیرها» زیر عنصر<Source>را رویrequestتنظیم کرده است و متغیرها را از پایهبار JSON استخراج میکند:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> </ExtractVariables>بررسی کنید ورودیای که توسط خطمشی «استخراج متغیرها» تجزیه میشود معتبر باشد. اگر ورودی نامعتبر یا بدشکل باشد، دلیل خطا همین است.
در خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، JSON نامعتبر زیر به خطمشی «استخراج متغیرها» ارسال شده است
[ "args": ["name" : "amar" ] ]در اینجا نمونهای از فراخوانی API آورده شده است که نشان میدهد درخواست چگونه ارسال شده است:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'پایهبار JSON که به API ارسال شده است نامعتبر است زیرا حاوی آرایهای با قلابهای مربع (
[ ]) است، بنابراین کد خطای زیر را دریافت میکنید:steps.extractvariables.ExecutionFailedاین خطا همچنین میتواند درصورتی رخ دهد که عنصر
<Source>رویresponseتنظیم شده باشد اما بار پاسخ JSON نامعتبر یا قالب آن درست نباشد.
وضوح
مطمئن شوید ورودی ارسالشده به خطمشی «استخراج متغیرها» معتبر و بدون نقص باشد.
برای رفع مشکل خطمشی «استخراج متغیرها» که در بالا درباره آن بحث شد، درخواست پایهبار JSON معتبری را بهصورت زیر ارسال کنید:
{
"args":{
"name":"amar"
}
}
UnableToCast
کد خطا
steps.extractvariables.UnableToCast
متن پاسخ خطا
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
علت
اگر خطمشی «استخراج متغیرها» نتواند مقدار استخراجشده را به متغیر تبدیل کند، این خطا رخ میدهد. معمولاً این اتفاق زمانی میافتد که سعی کنید مقدار یک نوع داده را روی متغیری از نوع داده دیگر تنظیم کنید.
برای مثال، اگر خطمشی «استخراج متغیر» تلاش کند مقداری را که از متغیر «رشته» استخراج شده است در متغیر «عدد صحیح» تنظیم کند، این خطا را خواهید دید.
تشخیص
نوع داده متغیری را که خطمشی «استخراج متغیرها» در تلاش است آن را تبدیل کند و موفق نمیشود شناسایی کنید. میتوانید این اطلاعات را در عنصر
faultstringپاسخ خطا پیدا کنید. برای مثال، درfaultstringزیر، نوع شیءBOOLEANاست:"faultstring":"Unable to cast value 36.231 as BOOLEAN."خطمشی «استخراج متغیرها» را که در آن سعی میکنید مقدار را روی متغیری از نوع تعیینشده در مرحله #۱ تنظیم کنید شناسایی کنید.
برای مثال، خطمشی «استخراج متغیرها» زیر مقدار را از یک JSONPath
$.latitudeبه متغیری از نوعbooleanاستخراج میکند که با آنچه در رشته خطا است مطابقت دارد:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="latitude" type="boolean"> <JSONPath>$.latitude</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">response</Source> </ExtractVariables>نوع داده مقدار استخراجشده را بررسی کنید. دادهها ممکن است در قالب سرایندها، مسیرهای نشانی وب، بار دادههای JSON/XML، پارامترهای فرم، و پارامترهای پُرسمان باشند.
بررسی کنید که آیا نوع داده تعیینشده در مرحله #۳ و نوع داده متغیری که دادهها به آن اختصاص داده میشود (تعیینشده در مرحله #۲) یکسان هستند یا نه.
اگر نوع داده متغیرهای منبع و مقصد یکسان نباشد، این دلیل خطا است.
در خطمشی «استخراج متغیرها» که در بالا نشان داده شده است، درنظر بگیرید که پایهبار درخواست JSON بهصورت زیر است:
{ "latitude":36.2312 }نوع داده مقداری که از
<JSONPath>استخراج میشود،‘$.latitude’، «عدد صحیح» است که به متغیری از نوع داده «منطقی» اختصاص داده میشود.ازآنجاییکه نوع داده مقدار استخراجشده و نوع داده متغیری که مقدار به آن اختصاص داده میشود یکسان نیست، کد خطای زیر را دریافت میکنید:
steps.extractvariables.UnableToCast.
وضوح
مطمئن شوید که نوع داده مقدار استخراجشده و متغیری که محتوا به آن اختصاص داده میشود یکسان باشد.
برای اصلاح خطمشی «استخراج متغیرها»، باید نوع متغیر را به «عدد صحیح» تغییر دهید:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="latitude" type="integer">
<JSONPath>$.latitude</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response</Source>
</ExtractVariables>
JsonPathParsingFailure
کد خطا
steps.extractvariables.JsonPathParsingFailure
متن پاسخ خطا
{
"fault": {
"faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
"detail": {
"errorcode": "steps.extractvariables.JsonPathParsingFailure"
}
}
}
علت
این خطا زمانی رخ میدهد که خطمشی «استخراج متغیرها» نتواند مسیر JSON را تجزیه کند و دادهها را از متغیر جاریسازی مشخصشده در عنصر <Source> استخراج کند. معمولاً این اتفاق زمانی میافتد که متغیر جاریسازی
مشخصشده در عنصر <Source> در جاریسازی کنونی وجود نداشته باشد.
برای مثال، اگر خطمشی «استخراج متغیرها» در
جریان پاسخ اجرا شود و انتظار داشته باشد مسیر JSON را تجزیه کند، اما عنصر <Source>
متغیر جریان request.content را مشخص کند که در جریان پاسخ وجود ندارد، این خطا رخ میدهد.
تشخیص
خطمشی «استخراج متغیرها» را که خطا در آن رخ داده است و نام متغیر جریانی را که دادهها در آن استخراج نشده است شناسایی کنید. میتوانید هر دو این موارد را در عنصر faultstring پاسخ خطا پیدا کنید. برای مثال، در faultstring زیر، نام خطمشی
ExtractVariables-1و متغیرrequest.contentاست:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"در فایل XML خطمشی «استخراج متغیرها» ناموفق، بررسی کنید که نام متغیر تنظیمشده در عنصر
<Source>با نام متغیر شناساییشده در رشته خطا (مرحله ۱ در بالا) مطابقت داشته باشد. برای مثال، خطمشی «استخراج متغیرها» زیر متغیری بهنامrequest.contentرا مشخص میکند که با آنچه در faultstring است مطابقت دارد:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request.content</Source> </ExtractVariables>درستیسنجی کنید که متغیر جاری استفادهشده در عنصر
<Source>در جریانی که خطمشی «استخراج متغیرها» در آن اجرا میشود تعریف و دردسترس باشد.اگر متغیر یکی از این موارد باشد:
- خارج از محدوده (در جریان خاصی که خطمشی در آن اجرا میشود دردسترس نیست) یا
- قابلحل نیست (تعریف نشده است)
در این صورت، این دلیل خطا است.
بهعنوان مثال، فرض کنید خطمشی ExtractVariables که در بالا نشان داده شده است قرار است در جریان پاسخ اجرا شود. بهیاد داشته باشید که متغیر جریان
request.contentدر عنصر<Source>از خطمشی «استخراج متغیرها» استفاده میشود. متغیر جریانrequest.contentفقط در جریان درخواست دردسترس است.ازآنجاییکه متغیر
responseدر جریان درخواست وجود ندارد، کد خطایsteps.extractvariables.JsonPathParsingFailureرا دریافت میکنید.
وضوح
مطمئن شوید متغیر جاری استفادهشده در عنصر <Source> خطمشی «استخراج متغیرها» در جریانی که خطمشی «استخراج متغیرها» در آن اجرا میشود دردسترس باشد.
برای مثال، فرض کنید متغیری بهنام response.content در جریان
پاسخ وجود دارد و درواقع حاوی JSON است که میخواهید استخراج کنید. برای اصلاح خطمشی «استخراج متغیرها»
که در بالا نشان داده شده است، میتوانید عنصر <Source> را بهصورت زیر تغییر دهید:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="Name" type="string">
<JSONPath>$.args.name</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response.content</Source>
</ExtractVariables>