আপনি 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> এলিমেন্টে উল্লেখ করা মেসেজ ভেরিয়েবল যদি:
- স্কোপের বাইরে (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়) অথবা
- সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা হয়নি)
যেমন, Extract Variables নীতি যদি
অনুরোধ ফ্লোতে এক্সিকিউট করে, কিন্তু <Source> এলিমেন্টটি response বা error
ভেরিয়েবলে সেট করা থাকে, যা অনুরোধ ফ্লোতে নেই, তাহলে এই সমস্যাটি হয়।
ডায়াগনসিস
যে Extract Variables নীতিতে সমস্যা হয়েছে সেটি এবং যে ভেরিয়েবল উপলভ্য নেই তার নাম চিহ্নিত করুন। আপনি সমস্যার উত্তরের
faultstringএলিমেন্টে এই দুটি আইটেমই খুঁজে পাবেন। যেমন, নিম্নলিখিত ফল্টস্ট্রিংয়ে, নীতির নাম হলExtractVariables-1এবং ভেরিয়েবল হলresponse:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"এক্সট্র্যাক্ট ভেরিয়েবল নীতি XML কাজ না করলে, যাচাই করে দেখুন যে এলিমেন্টে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিংয়ে শনাক্ত করা ভেরিয়েবলের নামের সাথে ম্যাচ করছে কিনা (উপরে #১ ধাপ)। যেমন, নিম্নলিখিত Extract Variables নীতিতে এলিমেন্টে
responseনামের একটি ভেরিয়েবেল নির্দিষ্ট করা হয়েছে, যা ফল্ট স্ট্রিংয়ে থাকা ভেরিয়েবেলের সাথে ম্যাচ করে:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables><Source>এলিমেন্টে ব্যবহৃত ভেরিয়েবলটি এক্সট্র্যাক্ট ভেরিয়েবল নীতি প্রয়োগ করা হচ্ছে এমন ফ্লোতে সংজ্ঞায়িত ও উপলভ্য আছে কিনা তা নির্ধারণ করুন।ভেরিয়েবলটি যদি এগুলির মধ্যে কোনও একটি হয়:
- স্কোপের বাইরে (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়) অথবা
- সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা হয়নি)
তাহলে এটিই হল সমস্যার কারণ।
উদাহরণস্বরূপ, ধরে নিন যে উপরে দেখানো Extract Variables নীতিটি অনুরোধ ফ্লোতে এক্সিকিউট করে। মনে রাখবেন যে
responseভেরিয়েবলটি Extract Variables নীতির<Source>এলিমেন্টে ব্যবহার করা হয়।responseভেরিয়েবল শুধুমাত্র উত্তর ফ্লোতে উপলভ্য।অনুরোধের ফ্লোতে
responseভেরিয়েবল না থাকার কারণে, আপনি এই সমস্যা কোডটি পাবেন:steps.extractvariables.SourceMessageNotAvailable.
রেজোলিউশন
নিশ্চিত করুন যে, 'ভেরিয়েবেল এক্সট্র্যাক্ট করা' নীতির <Source> এলিমেন্টে সেট করা ভেরিয়েবেলটি সেই ফ্লোতে সংজ্ঞায়িত করা আছে এবং বিদ্যমান আছে যেখানে নীতিটি এক্সিকিউট করা হয়।
উপরে দেখানো Extract Variables নীতির উদাহরণটি সংশোধন করতে, আপনি <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"
}
}
}
কারণ
Extract Variables নীতি কোনও ভেরিয়েবেলে মান সেট করতে না পারলে এই সমস্যা হয়। নেস্টেড ডট-সেপারেটেড ফর্ম্যাটে একাধিক ভেরিয়েবলকে একই শব্দ দিয়ে শুরু হওয়া নাম অ্যাসাইন করার চেষ্টা করলে সাধারণত এটি ঘটে।
যেমন, ধরা যাক আপনি কোনও ভেরিয়েবল var.color-এর জন্য ভ্যালু তৈরি/অ্যাসাইন করেছেন। এই ক্ষেত্রে, color একটি অবজেক্ট নোড হিসেবে বরাদ্দ করা হয়। তারপরে আপনি যদি অন্য ভেরিয়েবলে var.color.next কোনও ভ্যালু অ্যাসাইন করার চেষ্টা করেন, তাহলে এটি কাজ করবে না কারণ color আগেই অ্যাসাইন করা হয়েছে এবং এতে অন্য কোনও ভেরিয়েবল অ্যাসাইন করার অনুমতি নেই।
ডায়াগনসিস
যে Extract Variables নীতিতে সমস্যা হয়েছে সেটি এবং যে ভেরিয়েবলের মান সেট করা যায়নি তার নাম শনাক্ত করুন। আপনি সমস্যার উত্তরের
faultstringএলিমেন্টে এই দুটি আইটেমই খুঁজে পাবেন। যেমন, নিম্নলিখিত ফল্ট স্ট্রিংয়ে, নীতির নাম হলExtractColorsএবং ভেরিয়েবল হলvar.color.next:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"Extract Variables নীতি 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>'ভেরিয়েবল এক্সট্র্যাক্ট করা' নীতি প্রয়োগ করা যায়নি, সেই নীতিতে ব্যবহৃত সব ভেরিয়েবলের নাম পরীক্ষা করে দেখুন। আপনি যদি অন্য কোনও ভেরিয়েবেলে এমন কোনও মান অ্যাসাইন করে থাকেন যার নাম ফল্ট স্ট্রিংয়ে (উপরে #১ ধাপ) শনাক্ত করা ভেরিয়েবলের নামের মতো একই নাম দিয়ে শুরু হয়, তাহলে এটিই হল সমস্যার কারণ।
উপরে দেখানো Extract Variables নীতির উদাহরণে, লক্ষ্য করুন যে:
colorনামের কোয়েরি প্যারামিটারের ভ্যালু প্রথমেvar.colorভেরিয়েবলে অ্যাসাইন করা হয়(মনে রাখবেন:<VariablePrefix>এলিমেন্টে সেট করা সব ভেরিয়েবলের প্রিফিক্স হলvar)- পরের অ্যাসাইনমেন্টে,
nextcolorকোয়েরি প্যারামিটারের ভ্যালু অন্য ভেরিয়েবলvar.color.next-এ অ্যাসাইন করা হয়। var.colorআগেই অ্যাসাইন করা হয়েছে বলে, Extract Variables নীতি অন্য নেস্টেড ভেরিয়েবলvar.color.nextঅ্যাসাইন করতে পারবে না। তাই আপনি এই সমস্যার কোড পাবেন:steps.extractvariables.SetVariableFailed
রেজোলিউশন
নিশ্চিত করুন যে আপনার কাছে একাধিক ভেরিয়েবলের নাম নেই যেগুলির নাম একই শব্দ দিয়ে শুরু হয় এবং সেগুলি ডট-সেপারেটেড ফর্ম্যাটে নেস্ট করা আছে।
উপরে দেখানো Extract Variables নীতিটি সংশোধন করতে, আপনি ভেরিয়েবলের নাম
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"
}
}
}
কারণ
Extract Variables নীতির <JSONPath> এলিমেন্টে
ভুল JSON পাথ ব্যবহার করা হলে এই সমস্যা হয়। যেমন, JSON পেলোডে যদি
অবজেক্ট Name না থাকে, কিন্তু আপনি যদি Extract Variables
নীতিতে Name-কে পাথ হিসেবে নির্দিষ্ট করেন, তাহলে এই সমস্যাটি হয়।
ডায়াগনসিস
যে Extract Variables নীতিতে সমস্যা হয়েছে এবং ভুল JSON path শনাক্ত করুন। আপনি ভুল উত্তরের
faultstringএলিমেন্টে এই দুটি আইটেমই দেখতে পাবেন। যেমন, নিচের সমস্যার স্ট্রিংয়ে, নীতির নাম হলExtractJSONVariablesএবং ভুল JSON পাথ হল$.Name:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."Extract Variables নীতি XML কাজ না করলে, যাচাই করে দেখুন যে
<JSONPath>এলিমেন্টে সেট করা JSON পাথটি ফল্ট স্ট্রিংয়ে (উপরে #১ ধাপ) শনাক্ত করা পাথের সাথে মিলছে কিনা। যেমন, নিম্নলিখিত Extract Variables নীতিতে 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হিসেবে সেট করা থাকলে, এটি রেসপন্স অবজেক্ট হবে।উপরে দেখানো Extract Variables নীতির উদাহরণে,
<Source>এলিমেন্টটিresponseহিসেবে সেট করা আছে, তাই রেসপন্সের JSON পেলোড থেকে ভেরিয়েবল এক্সট্র্যাক্ট করা হচ্ছে।<Source>response</Source>উপযুক্ত JSON পেলোড (ধাপ #৩ থেকে নির্ধারিত) পরীক্ষা করুন এবং
<JSONPath>এলিমেন্টে নির্দিষ্ট করা অবজেক্ট আছে কিনা তা যাচাই করুন। JSON পেলোডে সেই অবজেক্ট না থাকলে, সেটিই সমস্যার কারণ।যেমন, ধরে নিন যে আপনি নিম্নলিখিত JSON রেসপন্স পেলোড থেকে ভেরিয়েবল এক্সট্র্যাক্ট করার চেষ্টা করছেন:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }JSON রেসপন্স পেলোডে
Nameঅবজেক্ট না থাকার কারণে, Extract Variables নীতি ব্যর্থ হয় এবং আপনিsteps.extractvariables.InvalidJSONPathএরর কোড সহ এরর মেসেজ পান।
রেজোলিউশন
Extract Variables নীতির
<JSONPath>এলিমেন্টে শুধুমাত্র সেইসব অবজেক্ট নির্দিষ্ট করা আছে কিনা তা নিশ্চিত করুন যেগুলি থেকে ভেরিয়েবল এক্সট্র্যাক্ট করা হচ্ছে এবং যেগুলি JSON পেলোডের অংশ।উপরে দেখানো Extract Variables নীতির উদাহরণটি ঠিক করতে, আপনি
<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, ইত্যাদি) ভুল বা ত্রুটিপূর্ণ। |
কারণ: ইনপুট পেলোড নেই
Extract Variables নীতি যদি JSON বা XML পেলোড থেকে ভেরিয়েবল এক্সট্র্যাক্ট করার কথা হয়, কিন্তু <Source> এলিমেন্টে নির্দিষ্ট করা ভেরিয়েবলের কন্টেন্ট (পেলোড) খালি থাকে, তাহলে এই সমস্যাটি হয়।
যেমন, Extract Variables নীতিতে <Source> এলিমেন্ট request বা response হিসেবে সেট করা থাকলে এবং সেগুলিতে JSON বা XML পেলোড থাকার কথা থাকলেও পেলোড খালি থাকলে, এই সমস্যাটি হয়।
ডায়াগনসিস
যে Extract Variables নীতিতে সমস্যা হয়েছে সেটি শনাক্ত করুন। আপনি সমস্যার উত্তরের faultstring এলিমেন্টে এই তথ্য খুঁজে পাবেন। যেমন, নিচের faultstring-এ, নীতির নাম হল
ExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"কাজ না করা Extract Variables XML-এ
<Source>এলিমেন্ট পরীক্ষা করুন এবং নির্ধারণ করুন যে কোন ধরনের ইনপুট থেকে ভেরিয়েবল এক্সট্র্যাক্ট করা হচ্ছে। যেমন, নিম্নলিখিত Extract Variables নীতিতে<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>Extract Variables নীতি দ্বারা পার্স করা ইনপুট খালি আছে কিনা তা চেক করুন। ইনপুট খালি থাকলে, সেটিই হল সমস্যার কারণ।
উপরে দেখানো Extract Variables নীতির উদাহরণে, ব্যাকএন্ড সার্ভারের পাঠানো রেসপন্স পেলোড (অর্থাৎ, রেসপন্স বডি) খালি ছিল।
XML রেসপন্স পেলোড খালি থাকার কারণে, আপনি এই সমস্যার কোডটি পাবেন:
steps.extractvariables.ExecutionFailed<Source>এলিমেন্টrequestহিসেবে সেট করা থাকলেও এই সমস্যা হতে পারে, তবে API প্রক্সি অনুরোধে কোনও পেলোড পাস করা হয় না। যেমন:curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"Extract Variables নীতি শুধুমাত্র তখনই XML এক্সট্র্যাক্ট করে যখন মেসেজের
Content-Typeহেডারapplication/xml,text/xmlবাapplication/*+xmlহয়। আপনি যদি Extract Variables নীতিকে XML অনুরোধ পেলোড পার্স করতে চান, তাহলে আপনাকে অবশ্যই Content-Type হেডারকেapplication/xml,text/xmlবাapplication/*+xmlহিসেবে পাস করতে হবে।
রেজোলিউশন
Extract Variables নীতিতে পাস করা ইনপুট সঠিক ও খালি নয় কিনা তা নিশ্চিত করুন।
উপরে দেখানো Extract Variables নীতির উদাহরণে থাকা সমস্যা সমাধান করতে, একটি সঠিক XML পেলোড পাস করুন। যেমন:
নিম্নলিখিত কন্টেন্ট সহ
city.xmlনামে একটি ফাইল তৈরি করুন:<city>Bengaluru</city> <area>Sanjaynagar</area>নিম্নলিখিত cURL কমান্ড ব্যবহার করে API কল করুন:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
কারণ: ভুল বা ত্রুটিপূর্ণ ইনপুট
Extract Variables নীতি যদি ভুল বা খারাপভাবে ফর্ম্যাট করা ইনপুট পার্স করে, তাহলে আপনি এই সমস্যাটি পাবেন।
যেমন, Extract Variables নীতিতে ইনপুট হিসেবে নিম্নলিখিত ভুল JSON প্রদান করা হলে, আপনি এই সমস্যাটি দেখতে পাবেন।
[
"args": ["name" : "amar" ]
]
ডায়াগনসিস
যে Extract Variables নীতিতে সমস্যা হয়েছে সেটি শনাক্ত করুন। আপনি সমস্যার উত্তরের
faultstringএলিমেন্টে এই তথ্য পাবেন। যেমন, নিচেরfaultstring-এ, নীতির নাম হলExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"কাজ না করা Extract Variables XML-এ
<Source>এলিমেন্ট পরীক্ষা করে দেখুন এবং নির্ধারণ করুন যে কোন ধরনের ইনপুট থেকে ভেরিয়েবল এক্সট্র্যাক্ট করা হচ্ছে। যেমন, নিম্নলিখিত Extract Variables নীতিতে<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>Extract Variables নীতি দ্বারা পার্স করা ইনপুট সঠিক কিনা তা চেক করুন। ইনপুট ভুল বা ভুল ফর্ম্যাটে থাকলে, সেটিই সমস্যার কারণ।
উপরে দেখানো Extract Variables নীতির উদাহরণে, Extract Variables নীতিতে নিম্নলিখিত ভুল 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" ]]'API-তে পাঠানো JSON পেলোডটি ভুল, কারণ এতে স্কোয়ার ব্র্যাকেট (
[ ]) সহ একটি অ্যারে আছে, তাই আপনি এই ত্রুটি কোডটি পাবেন:steps.extractvariables.ExecutionFailed<Source>এলিমেন্টresponse-এ সেট করা থাকলেও JSON রেসপন্স পেলোড ভুল বা ভুল ফর্ম্যাটে থাকলে এই সমস্যা হতে পারে।
রেজোলিউশন
Extract Variables নীতিতে পাস করা ইনপুট সঠিক ও ত্রুটিমুক্ত কিনা তা নিশ্চিত করুন।
উপরে আলোচনা করা Extract Variables নীতি সংক্রান্ত সমস্যা সমাধান করতে, নিম্নলিখিত উপায়ে একটি সঠিক JSON পেলোড অনুরোধ পাস করুন:
{
"args":{
"name":"amar"
}
}
UnableToCast
সমস্যার কোড
steps.extractvariables.UnableToCast
সমস্যার উত্তরের বডি
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
কারণ
Extract Variables নীতি, এক্সট্র্যাক্ট করা মানকে কোনও ভেরিয়েবলে কাস্ট করতে না পারলে এই সমস্যা হয়। সাধারণত, আপনি যদি অন্য ডেটা টাইপের ভেরিয়েবলে একটি ডেটা টাইপের ভ্যালু সেট করার চেষ্টা করেন, তাহলে এটি ঘটে।
যেমন, Extract Variable নীতি যদি কোনও String ভেরিয়েবল থেকে এক্সট্র্যাক্ট করা ভ্যালুকে কোনও Integer ভেরিয়েবলে সেট করার চেষ্টা করে, তাহলে আপনি এই সমস্যাটি দেখতে পাবেন।
ডায়াগনসিস
যে ভেরিয়েবলের ডেটার ধরন Extract Variables নীতি কাস্ট করার চেষ্টা করছে এবং ব্যর্থ হচ্ছে তা শনাক্ত করুন। আপনি এই তথ্যটি সমস্যার উত্তরের
faultstringএলিমেন্টে পাবেন। যেমন, নিম্নলিখিতfaultstring-এ, অবজেক্টের ধরন হলBOOLEAN:"faultstring":"Unable to cast value 36.231 as BOOLEAN."Extract Variables নীতি শনাক্ত করুন যেখানে আপনি #১ ধাপে নির্ধারিত ধরনের ভেরিয়েবলের ভ্যালু সেট করার চেষ্টা করছেন।
যেমন, নিম্নলিখিত Extract Variables নীতিটি 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>এক্সট্র্যাক্ট করা ভ্যালুর ডেটা টাইপ পরীক্ষা করুন। ডেটা হেডার, URI পাথ, JSON/XML পেলোড, ফর্ম প্যারামিটার ও কোয়েরি প্যারামিটার হিসেবে থাকতে পারে।
#৩ ধাপে নির্ধারিত ডেটার ধরন এবং যে ভেরিয়েবেলে ডেটা অ্যাসাইন করা হচ্ছে (যা #২ ধাপে নির্ধারিত হয়েছে), সেগুলির ডেটার ধরন একই কিনা তা যাচাই করুন।
সোর্স ও ডেস্টিনেশন ভেরিয়েবলের ডেটার ধরন একই না হলে, সেটিই সমস্যার কারণ।
উপরে দেখানো Extract Variables নীতিতে, JSON অনুরোধ পে-লোডটি নিম্নলিখিত হিসেবে বিবেচনা করুন:
{ "latitude":36.2312 }<JSONPath>,‘$.latitude’থেকে এক্সট্র্যাক্ট করা ভ্যালুর ডেটার ধরন হল Integer, যা বুলিয়ান ডেটার ধরনের ভেরিয়েবেলে অ্যাসাইন করা হচ্ছে।যেহেতু এক্সট্র্যাক্ট করা ভ্যালুর ডেটার ধরন এবং যে ভেরিয়েবেলে ভ্যালু অ্যাসাইন করা হচ্ছে সেটির ডেটার ধরন এক নয়, তাই আপনি এই এরর কোডটি পাবেন:
steps.extractvariables.UnableToCast.
রেজোলিউশন
এক্সট্র্যাক্ট করা ভ্যালুর ডেটার ধরন এবং যে ভেরিয়েবলে কন্টেন্ট অ্যাসাইন করা হচ্ছে, সেটির ধরন একই কিনা তা নিশ্চিত করুন।
Extract Variables নীতির উদাহরণটি ঠিক করতে, আপনাকে ভেরিয়েবলের ধরন পরিবর্তন করে Integer করতে হবে:
<?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"
}
}
}
কারণ
Extract Variables
নীতি <Source> এলিমেন্টে নির্দিষ্ট করা ফ্লো ভেরিয়েবল
থেকে JSON পাথ পার্স করতে ও ডেটা এক্সট্র্যাক্ট করতে না পারলে এই সমস্যা হয়। <Source> এলিমেন্টে উল্লেখ করা ফ্লো ভেরিয়েবল
বর্তমান ফ্লোতে না থাকলে সাধারণত এটি ঘটে।
যেমন, এই সমস্যাটি তখন হয় যখন Extract Variables নীতিটি
রেসপন্স ফ্লোতে এক্সিকিউট হয় এবং JSON পাথ পার্স করার কথা থাকে, কিন্তু <Source> এলিমেন্টটি
ফ্লো ভেরিয়েবল request.content নির্দিষ্ট করে, যেটি রেসপন্স ফ্লোতে নেই।
ডায়াগনসিস
যেখানে সমস্যা হয়েছে সেই Extract Variables নীতি এবং যে ফ্লো ভেরিয়েবল থেকে ডেটা এক্সট্র্যাক্ট করা যায়নি তার নাম শনাক্ত করুন। আপনি সমস্যার উত্তরের faultstring এলিমেন্টে এই দুটি আইটেমই খুঁজে পাবেন। যেমন, নিম্নলিখিত faultstring-এ, নীতির নাম হল
ExtractVariables-1এবং ভেরিয়েবল হলrequest.content:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"Extract Variables নীতি XML কাজ না করলে,
<Source>এলিমেন্টে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিংয়ে (উপরে #১ ধাপ) শনাক্ত করা ভেরিয়েবলের নামের সাথে ম্যাচ করছে কিনা তা যাচাই করুন। যেমন, নিম্নলিখিত Extract Variables নীতিতে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.contentExtract Variables নীতির<Source>এলিমেন্টে ব্যবহার করা হয়। ফ্লো ভেরিয়েবলrequest.contentশুধুমাত্র অনুরোধ ফ্লোতে উপলভ্য।অনুরোধের ফ্লোতে
responseভেরিয়েবল না থাকার কারণে, আপনি এই সমস্যা কোডটি পাবেন:steps.extractvariables.JsonPathParsingFailure.
রেজোলিউশন
<Source>Extract
Variables নীতিতে ব্যবহৃত ফ্লো ভেরিয়েবলটি Extract Variables নীতি
যে ফ্লোতে এক্সিকিউট হয় সেখানে উপলভ্য আছে কিনা তা নিশ্চিত করুন।
যেমন, ধরে নিন যে response.content নামের একটি ভেরিয়েবল রেসপন্স
ফ্লোতে আছে এবং আসলে এতে সেই JSON আছে যা আপনি এক্সট্র্যাক্ট করতে চান। উপরে দেখানো Extract
Variables নীতিকে সংশোধন করতে, আপনি <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>