تعيين الحقول الإضافية

يمكن أن يتضمن القياس وملفات إجراء الجهاز التي تم استلمها من نظام التجميع المركزي Landis+Gyr حقول إضافية تحتوي على البيانات التي سيتم استيرادها إلى جيت واي الشبكات الذكي للخدمات والمرافق من أوراكل. يجب تعيين الحقول الإضافية إلى العناصر داخل مستند XML الذي تمت معالجته بواسطة OSB وإرساله إلى جيت واي الشبكات الذكي.

يمكن تنفيذ هذا التعيين من خلال استخدام مستند XQuery المخصص، المحدد في ملف EnvironmentSettings.xq بواسطة معامل "modifyResultXMLInput".

توضح عينة مستندات XQuery التالية كيفية إمكانية تعيين حقول إضافية إلى تنسيق XML التي تم إرسالها إلى جيت واي الشبكات الذكي.

عينة XQuery—القياسات الأولية

يعد XQuery التالي مثال يعرض التحويل الذي يمر في العنصر الجذر مع ثلاث عناصر فرعية ("نتيجة" وXML XML"عادي" وإعدادات البيئة) التي ترجع "نتيجة" XML المعدلة.لأغراض الاختبار، تقوم بتغيير القيمة الأصلية في <enQty> عنصر "نتيجة" ويستبدلها بقيمة من XML"عادي" بالاعتماد على متغير إعداد البيئة. تم أيضًا استبدال قيمة <serviceProviderExternalId> بواسطة قيمة ذات تعليمات برمجية مضمنة.


declare namespace lan = "http://xmlns.oracle.com/LandisGyrUsage";
declare namespace xf = "http://tempuri.org/D3/lgimd";
declare namespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
declare function xf:modifyResultXML($modifyResultXMLInput as element(*)) as element(*){
<InitialLoadIMDList>
{
  for $InitLoadIMD in $ modifyResultXMLInput/InitialLoadIMDList/InitialLoadIMD
  return
    <InitialLoadIMD>
      <preVEE>
        <dvcIdN>{ data($InitLoadIMD/preVEE/dvcIdN) }</dvcIdN>
        <externalId>{ data($InitLoadIMD/preVEE/externalId)}</externalId>
        <uom>{ data($InitLoadIMD/preVEE/uom)}</uom>
        <mcIdN>{ data($InitLoadIMD/preVEE/mcIdN)}</mcIdN> 
        <enDt>{ data($InitLoadIMD/preVEE/enDt)}</enDt>
        {
        if ($modifyResultXMLInput/EnvironmentSettings/test1="true")
        then <enQty>{ data($modifyResultXMLInput/lan:MeterReads/lan:MeterRead/lan:ExtraFields/lan:ExtraField[lan:FieldName
= 'EF4']/lan:FieldValue) }</enQty>
         else <enQty>{ data($modifyResultXMLInput/lan:MeterReads/lan:MeterRead/lan:ExtraFields/lan:ExtraField[lan:FieldName= 'EF2']/lan:FieldValue) }</enQty>
         }
       <imdType>{ data($InitLoadIMD/preVEE/imdType) }</imdType>
      </preVEE>
      <serviceProviderExternalId>NewSPId</serviceProviderExternalId>
    </InitialLoadIMD>}</InitialLoadIMDList>
};
declare variable $modifyResultXMLInput as element(*)external;
xf:modifyResultXML($modifyResultXMLInput)

عينة XQuery — إجراءات الجهاز

يعد XQuery التالي مثال يعرض التحويل الذي يمر في العنصر الجذر مع ثلاث عناصر فرعية ("نتيجة" وXML XML"عادي" وإعدادات البيئة) التي ترجع "نتيجة" XML المعدلة.لأغراض الاختبار، تقوم بتغيير القيمة الأصلية في <externalCommunicationModuleIdentifier> عنصر "نتيجة" ويستبدلها بقيمة من XML"عادي" بالاعتماد على متغير إعداد البيئة. يتم أيضًا استبدال قيمة <externalServiceLocationId> بواسطة قيمة ذات تعليمات برمجية مضمنة.


declare namespace lan = "http://xmlns.oracle.com/LandisGyrEvent";
declare namespace xf = "http://tempuri.org/D3/event";
declare namespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
declare function xf:modifyResultXML($modifyResultXMLInput as element(*)) as element(*){
  <DeviceEventSeeder>
    <externalSenderId>{data($modifyResultXMLInput/DeviceEventSeeder/externalSenderId) }</externalSenderId>
    <deviceIdentifierNumber>{ data($modifyResultXMLInput/DeviceEventSeeder/deviceIdentifierNumber) }</deviceIdentifierNumber>
    <externalEventName>{ data($modifyResultXMLInput/DeviceEventSeeder/externalEventName) }</externalEventName>
    <eventDateTime>{ data($modifyResultXMLInput/DeviceEventSeeder/eventDateTime) }</eventDateTime>
    <externalSourceIdentifier>{ data($modifyResultXMLInput/DeviceEventSeeder/externalSourceIdentifier)
}</externalSourceIdentifier>
    <eventInformation>
      <externalEventCategory>{data($modifyResultXMLInput/DeviceEventSeeder/eventInformation/externalEventCategory)
}</externalEventCategory>
      <externalEventSeverity>{data($modifyResultXMLInput/DeviceEventSeeder/eventInformation/externalEventSeverity)
}</externalEventSeverity>
      <externalDeviceType>{data($modifyResultXMLInput/DeviceEventSeeder/eventInformation/externalDeviceType)
}</externalDeviceType>
      <externalServiceLocationId>{1234 }</externalServiceLocationId>
      {
      if ($modifyResultXMLInput/EnvironmentSettings/testA="true")
      then <externalCommunicationModuleIdentifier>{ data($modifyResultXMLInput/lan:DeviceEvents/lan:DeviceEvent/lan:DeviceType)}</externalCommunicationModuleIdentifier>
      else <externalCommunicationModuleIdentifier>{data($modifyResultXMLInput/lan:DeviceEvents/lan:DeviceEvent/lan:CategoryId)}</externalCommunicationModuleIdentifier>
      }
     <externalStatusValue>{data($modifyResultXMLInput/DeviceEventSeeder/eventInformation/externalStatusValue)
}</externalStatusValue>
      <externalStatusDateTime>{data($modifyResultXMLInput/DeviceEventSeeder/eventInformation/externalStatusDateTime)}</externalStatusDateTime>
    </eventInformation>
  </DeviceEventSeeder>
};
declare variable $modifyResultXMLInput as element(*) external;
xf:modifyResultXML($modifyResultXMLInput)