XML থেকে JSON নীতি রানটাইম ত্রুটি সমস্যা সমাধান

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

উৎস অনুপলব্ধ

ত্রুটি কোড

steps.xml2json.SourceUnavailable

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available",
        "detail": {
            "errorcode": "steps.xmltojson.SourceUnavailable"
        }
    }
}

উদাহরণ ত্রুটি বার্তা

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
        "detail": {
            "errorcode": "steps.xml2json.SourceUnavailable"
        }
    }
}

কারণ

XML থেকে JSON নীতির <Source> উপাদানে নির্দিষ্ট করা বার্তা বা স্ট্রিং ভেরিয়েবল যদি হয় তাহলে এই ত্রুটিটি ঘটে:

  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
  • সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি XML থেকে JSON নীতিটি অনুরোধের প্রবাহে কার্যকর হওয়ার কথা, কিন্তু <Source> উপাদানটি response ভেরিয়েবলে সেট করা হয়, যা অনুরোধের প্রবাহে বিদ্যমান নেই।

রোগ নির্ণয়

  1. XML থেকে JSON নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে এবং ভেরিয়েবলের নাম যা উপলব্ধ নয়৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই দুটি আইটেম খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-XMLToJSON এবং ভেরিয়েবল হল response :

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. ব্যর্থ XML থেকে JSON নীতি XML-এ, যাচাই করুন যে <Source> উপাদানে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ #1)। উদাহরণ স্বরূপ, নিচের XML থেকে JSON নীতিতে <Source> উপাদানে একটি ভেরিয়েবল নামক response নির্দিষ্ট করে, যা faultstring -এ যা আছে তার সাথে মেলে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>response</Source>
    </XMLToJSON>
    
  3. <Source> উপাদানে ব্যবহৃত ভেরিয়েবলটি সংজ্ঞায়িত এবং যে প্রবাহে XML থেকে JSON নীতি কার্যকর করা হচ্ছে সেখানে উপলব্ধ কিনা তা নির্ধারণ করুন।

  4. যদি পরিবর্তনশীল হয়:

    • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
    • সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

    তাহলে এটি ত্রুটির কারণ।

    একটি উদাহরণ হিসাবে, ধরা যাক উপরে দেখানো XML থেকে JSON নীতি অনুরোধের প্রবাহে কার্যকর হওয়ার কথা। মনে রাখবেন যে response ভেরিয়েবলটি XML থেকে JSON নীতির <Source> উপাদানে ব্যবহৃত হয়। প্রতিক্রিয়া পরিবর্তনশীল শুধুমাত্র প্রতিক্রিয়া প্রবাহে উপলব্ধ।

    যেহেতু প্রতিক্রিয়া ভেরিয়েবল অনুরোধের প্রবাহে বিদ্যমান নেই, আপনি ত্রুটি কোডটি পাবেন:

    steps.xml2json.SourceUnavailable
    

রেজোলিউশন

নিশ্চিত করুন যে ব্যর্থ XML থেকে JSON নীতির <Source> উপাদানে সেট করা ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে এবং সেই প্রবাহে বিদ্যমান রয়েছে যেখানে নীতিটি কার্যকর হয়।

উপরে দেখানো JSON নীতির উদাহরণ XML থেকে সংশোধন করতে, আপনি request ভেরিয়েবল ব্যবহার করার জন্য <Source> উপাদানটি পরিবর্তন করতে পারেন কারণ এটি অনুরোধের প্রবাহে বিদ্যমান:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>request</Source>
</XMLToJSON>

কার্যকর করা ব্যর্থ হয়েছে৷

ত্রুটি কোড

steps.xml2json.ExecutionFailed

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Execution failed. reason: Premature end of document while parsing at line [line_number](possibly  around char [character_number])",
        "detail": {
            "errorcode": "steps.xml2json.ExecutionFailed"
        }
    }
}

সম্ভাব্য কারণ

এই ত্রুটির সম্ভাব্য কারণগুলি হল:

কারণ বর্ণনা
অনুপস্থিত ইনপুট পেলোড ইনপুট পেলোড (XML) খালি।
অবৈধ বা বিকৃত ইনপুট XML থেকে JSON নীতিতে পাস করা ইনপুট (XML) অবৈধ বা বিকৃত।

কারণ: ইনপুট পেলোড অনুপস্থিত

XML থেকে JSON নীতিতে যদি <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলের বিষয়বস্তু (পেলোড) খালি থাকে, তাহলে এই ত্রুটিটি ঘটে।

উদাহরণস্বরূপ, যদি XML থেকে JSON নীতিতে <Source> উপাদানটি একটি request বা response ভেরিয়েবল হিসাবে সেট করা হয় এবং এটিতে একটি XML পেলোড থাকে বলে মনে করা হয়, পেলোড খালি থাকলে এই ত্রুটিটি ঘটে।

রোগ নির্ণয়

  1. XML থেকে JSON নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-XMLToJSON :

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. ব্যর্থ XML থেকে JSON নীতি XML-এ <Source> উপাদান পরীক্ষা করুন এবং নির্দিষ্ট পরিবর্তনশীল নির্ধারণ করুন। উদাহরণস্বরূপ, নিম্নলিখিত XML থেকে JSON নীতিতে অনুরোধ করার জন্য <Source> উপাদান সেট করা আছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. XMLToJSON নীতিতে <Source> উপাদানের জন্য নির্দিষ্ট করা পরিবর্তনশীলটি খালি কিনা তা পরীক্ষা করুন। যদি এটি খালি হয়, তবে এটি ত্রুটির কারণ।

    উপরে দেখানো XML থেকে JSON নীতির উদাহরণে, ক্লায়েন্টের পাঠানো রিকোয়েস্ট পেলোড (অর্থাৎ রিকোয়েস্ট বডি) খালি ছিল।

    যেমন:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
    

    যেহেতু XML অনুরোধ পেলোড খালি, আপনি ত্রুটি কোড পাবেন:

    steps.xml2json.ExecutionFailed
    

    এই ত্রুটিটি ঘটতে পারে যদি <Source> উপাদানটি প্রতিক্রিয়াতে সেট করা থাকে, কিন্তু ব্যাকএন্ড সার্ভার দ্বারা একটি খালি পেলোড পাস করা হয়।

রেজোলিউশন

<Source> উপাদানের মাধ্যমে XML থেকে JSON নীতিতে পাঠানো ইনপুটটি একটি বৈধ XML পেলোড এবং খালি নয় তা নিশ্চিত করুন।

নমুনা XML থেকে JSON নীতিতে সমস্যা সমাধান করতে, একটি বৈধ XML পেলোড পাস করুন। যেমন:

  1. নিম্নলিখিত বিষয়বস্তু সহ city.xml নামে একটি ফাইল তৈরি করুন:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. নিম্নরূপ একটি cURL কমান্ড ব্যবহার করে API কল করুন:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

কারণ: অবৈধ বা বিকৃত ইনপুট

যদি XML থেকে JSON নীতি ইনপুট পার্স করে যা অবৈধ বা ত্রুটিপূর্ণ, তাহলে আপনি এই ত্রুটিটি পাবেন।

উদাহরণস্বরূপ, যদি নিম্নলিখিত অবৈধ XML XML থেকে JSON নীতিতে ইনপুট হিসাবে প্রদান করা হয়,

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>

আপনি ত্রুটি পাবেন:

"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"

রোগ নির্ণয়

  1. XML থেকে JSON নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-XMLToJSON :

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. ব্যর্থ XML থেকে JSON নীতি XML-এ উল্লেখিত <Source> উপাদান পরীক্ষা করুন। উদাহরণস্বরূপ, নিম্নলিখিত XML থেকে JSON নীতিতে request ভেরিয়েবলে <Source> উপাদান সেট করা আছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. XML থেকে JSON নীতিতে <Source> উপাদানে উল্লেখ করা ইনপুটটি বৈধ XML পেলোড হলে যাচাই করুন। যদি ইনপুটটি অবৈধ বা বিকৃত হয়, তবে এটি ত্রুটির কারণ।

    উপরে দেখানো XML থেকে JSON নীতির উদাহরণে, নিম্নলিখিত অবৈধ XML ফাইল city.xml এর মাধ্যমে এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে পাস করা হয়েছে:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    

    এখানে নমুনা API কল যা দেখায় কিভাবে অনুরোধ পাস করা হয়েছে:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    API-এ পাস করা XML পেলোডটি অবৈধ, কারণ XML-এ <root> উপাদানের জন্য একটি শেষ ট্যাগ নেই। তাই আপনি ত্রুটি কোড পাবেন:

    steps.xml2json.ExecutionFailed
    

    এই ত্রুটিটি ঘটতে পারে যদি <Source> উপাদানটি প্রতিক্রিয়াতে সেট করা থাকে কিন্তু ব্যাকএন্ড সার্ভার থেকে XML প্রতিক্রিয়া পেলোডটি অবৈধ বা বিকৃত হয়।

রেজোলিউশন

<Source> উপাদানের মাধ্যমে XML থেকে JSON নীতিতে পাঠানো ইনপুটটি বৈধ এবং বিকৃত নয় তা নিশ্চিত করুন।

উপরে আলোচিত নমুনা XML থেকে JSON নীতির সমস্যা সমাধান করতে, নিম্নরূপ একটি বৈধ XML পেলোড অনুরোধ পাস করুন:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>
</root>

আউটপুট ভেরিয়েবল পাওয়া যায় না

ত্রুটি কোড

steps.xml2json.OutputVariableIsNotAvailable

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

উদাহরণ ত্রুটি বার্তা

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

কারণ

XML থেকে JSON নীতির <Source> উপাদানে উল্লেখিত ভেরিয়েবল টাইপ স্ট্রিং এবং <OutputVariable> উপাদানটি সংজ্ঞায়িত না হলে এই ত্রুটি ঘটে। <OutputVariable> উপাদানটি বাধ্যতামূলক যখন <Source> এলিমেন্টে সংজ্ঞায়িত ভেরিয়েবল টাইপ string হয়।

রোগ নির্ণয়

  1. XML থেকে JSON নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-XMLToJSON :

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. ব্যর্থ XML-এ JSON নীতি যাচাই করুন যদি <OutputVariable> অনুপস্থিত থাকে।

    এখানে একটি নমুনা XML থেকে JSON নীতিতে <OutputVariable> উপাদান নেই।

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
    
  3. <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলের ধরন নির্ধারণ করুন:

    1. API প্রক্সি বান্ডেলের মধ্যে কোডটি সনাক্ত করুন, যেখানে ভেরিয়েবলটি প্রথমে সংজ্ঞায়িত করা হয়েছিল।
    2. একবার আপনি যে নীতিতে ভেরিয়েবলটিকে প্রথমে সংজ্ঞায়িত এবং পপুলেট করা হয়েছে তা বের করার পরে, আপনাকে সেই ভেরিয়েবলের ধরনটি নিম্নরূপ নির্ধারণ করতে হবে:
      1. টাইপ অ্যাট্রিবিউটের মান পরীক্ষা করুন (যদি উপস্থিত থাকে)।
      2. যদি টাইপ অ্যাট্রিবিউটটি উপস্থিত না থাকে তবে ভেরিয়েবলটিকে একটি স্ট্রিং হিসাবে বিবেচনা করা হয়।
    3. যদি ভেরিয়েবলের ধরন string হয়, তাহলে এটি ত্রুটির কারণ। আপনি ভেরিয়েবল রেফারেন্সে সাধারণ ভেরিয়েবল এবং তাদের প্রকারগুলি সম্পর্কে শিখতে পারেন।

    উদাহরণস্বরূপ, উপরের XML থেকে JSON নীতিতে TrackingNumber ভেরিয়েবলটি দেখুন। এটা টাইপ স্ট্রিং হয়. এখন, একটি অ্যাসাইন মেসেজ নীতি বিবেচনা করুন যা নীচে দেখানো হিসাবে TrackingNumber নামক একটি ভেরিয়েবলের মান সেট করতে ব্যবহৃত হয়:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    উল্লেখ্য যে <AssignVariable> এর মাধ্যমে সেট করা ভেরিয়েবল টাইপ হল স্ট্রিং। তাই পরিবর্তনশীল TrackingNumber টাইপের স্ট্রিং।

    এখন, স্মরণ করুন যে TrackingNumber ভেরিয়েবলটি XML থেকে JSON নীতির <Source> উপাদানে ব্যবহৃত হয়েছে:

    <Source>TrackingNumber</Source>
    

    যেহেতু TrackingNumber স্ট্রিং ধরনের এবং <OutputVariable> নীতিতে অনুপস্থিত, আপনি ত্রুটি কোড পাবেন:

    steps.xml2json.OutputVariableIsNotAvailable
    

রেজোলিউশন

নিশ্চিত করুন যে যদি XMLToJSON নীতির <Source> উপাদানে নির্দিষ্ট করা ভেরিয়েবলটি স্ট্রিং ধরনের হয়, তবে এই ক্ষেত্রে <OutputVariable> উপাদানটি বাধ্যতামূলক।

উপরে আলোচনা করা XML থেকে JSON নীতি সংশোধন করতে, নীচে দেখানো হিসাবে <OutputVariable> উপাদান অন্তর্ভুক্ত করুন।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>TrackingNumber</Source>
</XMLToJSON>

সামঞ্জস্যপূর্ণ প্রকার

ত্রুটি কোড

steps.xml2json.InCompatibleTypes

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

উদাহরণ ত্রুটি বার্তা

{
    "fault": {
        "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি <Source> উপাদানে সংজ্ঞায়িত ভেরিয়েবলের ধরন এবং <OutputVariable> উপাদান একই না হয়। এটা বাধ্যতামূলক যে <Source> উপাদানের মধ্যে থাকা ভেরিয়েবলের ধরন এবং <OutputVariable> উপাদান মিলে যায়।

The valid types are message and string.

রোগ নির্ণয়

  1. XML থেকে JSON নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল XMLToJSON_CheckType :

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. ব্যর্থ XML থেকে JSON নীতিতে <OutputVariable> -এ উল্লিখিত মানগুলি নোট করুন।

    এখানে একটি নমুনা XMLToJSON নীতিতে <OutputVariable> উপাদান নেই

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>request</OutputVariable>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
  3. <Source> এবং <OutputVariable> উপাদানগুলিতে নির্দিষ্ট ভেরিয়েবলের ধরন নির্ধারণ করুন:

    1. API প্রক্সি বান্ডেলের মধ্যে কোডটি সনাক্ত করুন, যেখানে এই ভেরিয়েবলগুলির প্রতিটি প্রথমে সংজ্ঞায়িত করা হয়েছিল।
    2. একবার আপনি যে নীতিতে ভেরিয়েবলটিকে প্রথমে সংজ্ঞায়িত এবং পপুলেট করা হয়েছে তা বের করার পরে, আপনাকে সেই ভেরিয়েবলের ধরনটি নিম্নরূপ নির্ধারণ করতে হবে:
      1. টাইপ অ্যাট্রিবিউটের মান পরীক্ষা করুন (যদি উপস্থিত থাকে)।
      2. যদি টাইপ অ্যাট্রিবিউটটি উপস্থিত না থাকে তবে ভেরিয়েবলটিকে একটি স্ট্রিং হিসাবে বিবেচনা করা হয়।
    3. যদি <Source> এ উল্লেখিত ভেরিয়েবলের ধরনটি string হয় যখন <OutputVariable> -এর ধরনটি মেসেজ হয় বা তার বিপরীত হয়, তাহলে এটি ত্রুটির কারণ। আপনি ভেরিয়েবল রেফারেন্সে সাধারণ ভেরিয়েবল এবং তাদের প্রকারগুলি সম্পর্কে শিখতে পারেন।

    উদাহরণ হিসাবে, একটি অ্যাসাইন মেসেজ নীতি বিবেচনা করুন যা নীচে দেখানো হিসাবে TrackingNumber নামক একটি ভেরিয়েবলে একটি মান সেট করতে ব্যবহৃত হয়:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    উল্লেখ্য যে <AssignVariable> এর মাধ্যমে সেট করা ভেরিয়েবল টাইপ হল স্ট্রিং। তাই পরিবর্তনশীল TrackingNumber টাইপের স্ট্রিং।

    এখন, মনে করুন যে TrackingNumber ভেরিয়েবলটি XMLToJSON নীতির <Source> উপাদানে ব্যবহৃত হয়েছে:

    <Source>TrackingNumber</Source>
    

    একইভাবে, মনে রাখবেন যে request ভেরিয়েবলটি XML থেকে JSON নীতির <OutputVariable> উপাদানে ব্যবহৃত হয়েছে:

    <OutputVariable>request</OutputVariable>
    

    যেহেতু TrackingNumber টাইপ string এর এবং response ভেরিয়েবল টাইপ message এর, সেগুলি বেমানান প্রকার তাই আপনি এরর কোড পাবেন:

    steps.xml2json.InCompatibleTypes
    

    উপরের ত্রুটিটিও ঘটতে পারে যদি <Source> এলিমেন্টের ভেরিয়েবলটি টাইপ message হয় কিন্তু <OutputVariable> এলিমেন্টের ভেরিয়েবল টাইপ স্ট্রিং এর হয়।

রেজোলিউশন

নিশ্চিত করুন যে <Source> উপাদানে সংজ্ঞায়িত ভেরিয়েবলের ধরন এবং <OutputVariable> উপাদান সবসময় একই। এটা বাধ্যতামূলক যে <Source> উপাদানের মধ্যে থাকা ভেরিয়েবলের ধরন এবং <OutputVariable> উপাদান মিলে যায়।

উপরে আলোচনা করা XML থেকে JSON নীতি সংশোধন করতে, আপনি বার্তা নীতি বরাদ্দ ব্যবহার করে অন্য একটি পরিবর্তনশীল TrackingNumber_output প্রকারের string ঘোষণা করতে পারেন এবং XML থেকে JSON নীতির <OutputVariable> উপাদানটিতে এই ভেরিয়েবলটি ব্যবহার করতে পারেন।

পরিবর্তিত বরাদ্দ বার্তা নীতি:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
    <DisplayName>Assign_TrackingNumber</DisplayName>
    <Properties/>
    <AssignVariable>
        <Name>TrackingNumber</Name>
        <Value><![CDATA[<Code>560098</Code>]]></Value>
        <Ref/>
    </AssignVariable>
    <AssignVariable>
        <Name>TrackingNumber_output</Name>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

সংশোধিত XMLToJSON নীতি:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
      <DisplayName>XMLToJSON_CheckType</DisplayName>
      <Properties/>
      <Format>google</Format>
      <OutputVariable>TrackingNumber_output</OutputVariable>
      <Source>TrackingNumber</Source>
  </XMLToJSON>

অবৈধ উৎসের প্রকার

ত্রুটি কোড

steps.xml2json.InvalidSourceType

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

উদাহরণ ত্রুটি বার্তা

{
    "fault": {
        "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি <Source> উপাদানটি সংজ্ঞায়িত করতে ব্যবহৃত ভেরিয়েবলের ধরনটি অবৈধ হয়। ভেরিয়েবলের বৈধ প্রকারগুলি হল message এবং string

রোগ নির্ণয়

  1. XML থেকে JSON নীতিতে ব্যবহৃত অবৈধ উৎসের ধরন শনাক্ত করুন। আপনি ত্রুটি বার্তা থেকে এই তথ্য খুঁজে পেতে পারেন. উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটিতে, অবৈধ প্রকারটি পূর্ণসংখ্যা।

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. নির্দিষ্ট API প্রক্সিতে যেখানে ব্যর্থতা ঘটেছে সেখানে সমস্ত XML থেকে JSON নীতিগুলি পরীক্ষা করুন৷ ব্যর্থ XML থেকে JSON নীতিতে <Source> -এ উল্লেখিত ভেরিয়েবলের নামটি নোট করুন।

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>BookCode</Source>
    </XMLToJSON>
    
  3. <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলের ধরন নির্ধারণ করুন:

    1. API প্রক্সি বান্ডেলের মধ্যে কোডটি সনাক্ত করুন, যেখানে এই ভেরিয়েবলটি প্রথমে সংজ্ঞায়িত করা হয়েছিল।
    2. একবার আপনি যে নীতিতে ভেরিয়েবলটিকে প্রথমে সংজ্ঞায়িত এবং পপুলেট করা হয়েছে তা বের করার পরে, আপনাকে সেই ভেরিয়েবলের ধরনটি নিম্নরূপ নির্ধারণ করতে হবে:
      1. টাইপ অ্যাট্রিবিউটের মান পরীক্ষা করুন (যদি উপস্থিত থাকে)।
      2. যদি টাইপ অ্যাট্রিবিউটটি উপস্থিত না থাকে তবে ভেরিয়েবলটিকে একটি স্ট্রিং হিসাবে বিবেচনা করা হয়।
    3. যদি <Source> এ উল্লেখিত ভেরিয়েবলের ধরনটি message বা string টাইপ না হয়, তাহলে এটি ত্রুটির কারণ। আপনি ভেরিয়েবল রেফারেন্সে সাধারণ ভেরিয়েবল এবং তাদের প্রকারগুলি সম্পর্কে শিখতে পারেন।

    একটি উদাহরণ হিসাবে, একটি ExtractVariables নীতি বিবেচনা করুন যা একটি XML পেলোড থেকে মান বের করতে ব্যবহৃত হয় এবং মানটিকে ভেরিয়েবল BookCode integer ধরন হিসাবে সেট করে যা নীচে দেখানো হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract_BookCode">
        <DisplayName>Extract_BookCode</DisplayName>
        <Properties/>
        <Source>request</Source>
        <XMLPayload stopPayloadProcessing="false">
            <Variable name="BookCode" type="integer">
                <XPath>/root/BookCode</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    এখন, স্মরণ করুন যে BookCode ভেরিয়েবলটি XML থেকে JSON নীতির <Source> উপাদানে ব্যবহৃত হয়েছে:

    <Source>BookCode</Source>
    

    কারণ এই ভেরিয়েবলের ধরনটি হল Integer , যা একটি বৈধ <Source> প্রকার নয়, API প্রক্সি ত্রুটির সাথে ব্যর্থ হয়:

    steps.xml2json.InvalidSourceType
    

রেজোলিউশন

নিশ্চিত করুন যে <Source> উপাদানটি নির্দিষ্ট করতে ব্যবহৃত ভেরিয়েবলের ধরনটি বৈধ। বৈধ <Source> প্রকারগুলি হল message এবং string

XML থেকে JSON নীতির সাথে উপরের ত্রুটিটি এড়াতে, আপনি request ভেরিয়েবল ব্যবহার করতে পারেন যা টাইপ message বা অন্য কোন স্ট্রিং যা একটি বৈধ XML পেলোড।