تنسيق XML

تعرض هذه الصفحة نموذج تنفيذ تنسيق XML.

نموذج تنسيق الملف

يتم وصف تنسيق الملف في تلميح تحميل بيانات القياس الأولية عبر الإنترنت في شاشة تحميل الإجراءات وبيانات القياس الأولية عبر الإنترنت. (قم بتحديد القائمة، ثم الاتصال، ثم تحميل بيانات القياس الأولية/الإجراءات (بتنسيق XML)).

نموذج الملف

<deviceList>
  <device>
    <headEnd>L&G</headEnd>
    <headEndExternalId>L+G</headEndExternalId>
    <deviceId></deviceId>
    <deviceIdentifierNumber>DEV-OUSGG-OSB-DEMO-001</deviceIdentifierNumber>
    <initialMeasurementDataList>
      <initialMeasurementData>
        <preVEE>
          <mcIdN></mcIdN>
          <uom>KWH</uom>
          <stDt>2010-05-19-00.00.00</stDt>
          <enDt>2010-05-19-00.30.00</enDt>
          <spi>900</spi>
          <msrs>
            <mL>
              <s>1</s>
              <q>0.2316</q>
            </mL>
            <mL>
              <s>2</s>
              <q>0.1416</q>
            </mL>
          </msrs>
        </preVEE>
      </initialMeasurementData>
      <initialMeasurementData>
        <initialMeasurementDataId>testValue</initialMeasurementDataId>
          <preVEE>
            <mcIdN></mcIdN>
            <uom>KWH2</uom>
            <stDt>2010-05-19-00.30.00</stDt>
            <enDt>2010-05-19-01.00.00</enDt>
            <spi>900</spi>
            <msrs>
              <mL>
                <s>1</s>
                <q>1.2316</q>
              </mL>
              <mL>
                <s>2</s>
                <q>2.1416</q>
              </mL>
            </msrs>
          </preVEE>
      </initialMeasurementData>
    </initialMeasurementDataList>
  </device>
</deviceList>

نماذج السكريبتات

يتضمن نموذج التنفيذ نماذج السكريبتات التالية المصممة للاستخدام بتنسيق XML الوارد أعلاه:

DG_SmplPrXML: يحتوي نموذج السكريبت هذا على طريقة واحدة في واجهة المكتبة – getParser(). وتقوم الطريقة باسترجاع مثيل الفئة التي تقوم بتنفيذ واجهة com.splwg.d1.domain.sgg.dg.processing.PayloadParser. تحتوي الفئة على المنطق التالي:

  1. التحليل اللغوي لبيانات القياس المنقولة الواردة بتنسيق XML

  2. إحضار معلومات حول الجهاز الحالي

  3. تقسيم البيانات الواردة إلى بنى بيانات قياس أولية منفصلة

  4. تمديد هذه البنى بمعلومات حول الأجهزة

  5. استرجاع بنية تلو الأخرى بتنسيق XML العادي

DG_SmplTrXML: يحتوي نموذج السكريبت هذا على طريقة واحدة في واجهة المكتبة – getTransfprmer(). وتقوم الطريقة باسترجاع مثيل الفئة التي تقوم بتنفيذ واجهة com.splwg.d1.domain.sgg.dg.processing.PayloadTransformer. تحتوي الفئة على المنطق التالي:

  1. تحويل الرسالة الواردة بتنسيق XML العادي إلى نقاط توصيل XML لمنشأ مثيل بيانات القياس الأولية

  2. إضافة نقاط توصيل XML جديدة كنقاط توصيل فرعية إلى قائمة النتائج المحددة

لعرض هذه السكريبتات بمزيد من التفاصيل، استخدم بوابة السكريبت.

التحليل اللغوي

يقوم سكريبت المحلل اللغوي بتنسيق XML بتعيين البيانات من تنسيق XML الوارد أعلاه إلى تنسيق XML العادي.

مخطط XML لتنسيق XML العادي

<xs:schema attributeFormDefault="unqualified" 
elementFormDefault="qualified" 
targetNamespace="http://xmlns.oracle.com/GenericAdapter" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:ga="http://xmlns.oracle.com/GenericAdapter">
  <xs:element name="Payload" type="ga:PayloadType"/>
  <xs:complexType name="PayloadType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="Usage" type="ga:UsageType"/>
        <xs:element name="Event" type="ga:EventType"/>
      </xs:choice>
      <xs:element name="RawData"  type="ga:NonEmptyString"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="UsageType">
    <xs:sequence>
      <xs:element name="RecordType" type="ga:RecordTypeUsageType"/>
      <xs:element name="StartDateTime" type="xs:integer"/>
      <xs:element name="EndDateTime" type="xs:integer"/>
      <xs:element name="DeviceId" type="ga:NonEmptyString"/>
      <xs:element name="IntervalDuration" type="xs:integer"/>
      <xs:element name="UOM" type="ga:NonEmptyString"/>
      <xs:element name="Intervals" type="ga:IntervalList"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="RecordTypeUsageType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="U"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="IntervalList">
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="Interval" type="ga:IntervalType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IntervalType">
    <xs:sequence>
      <xs:element name="Value" type="xs:float"/>
      <xs:element name="Status" type="ga:NonEmptyString" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EventType">
    <xs:sequence>
      <xs:element name="RecordType" type="ga:RecordTypeEventType"/>
      <xs:element name="DateTime" type="xs:integer"/>
      <xs:element name="DeviceId" type="ga:NonEmptyString"/>
      <xs:element name="Name" type="ga:NonEmptyString"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="RecordTypeEventType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="E"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NonEmptyString">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

التحويل

يقوم سكريبت المحول بتنفيذ الربط التالي.

ربط XML لمنشأ المثيل بتنسيق XML العادي

يقوم سكريبت محول بيانات القياس المنقولة بما يلي:

  1. إنشاء عنصر XML بالاسم المحدد في حقل تكوين معالجة بيانات القياس المنقولة الخاصة بجيت واي الشبكات الذكي "كائن عمل منشأ مثيل بيانات القياس الأولية (الفترة الزمنية)"، ونسخ كل العناصر من تنسيق XML العادي كنقاط توصيل فرعية لعنصر جديد.

  2. إدراج العنصر "externalId" الذي تم ملؤه بالقيمة المُخزنة بالطريقة setOrigin.

  3. إدراج العنصر "serviceProviderExternalId" الذي تم ملؤه بالقيمة المُخزنة بالطريقة setConfiguration.

  4. إدراج العنصر "rawData" الذي تم ملؤه بتمثيل XML النصي لعنصر XML العادي في حالة تحديد خانة الاختيار ملء كبيانات أولية في تكوين معالجة بيانات القياس المنقولة الخاصة بجيت واي الشبكات الذكي.