Asignación de campos adicionales
Los ficheros de medidas y eventos de dispositivo recibidos del sistema de recopilación de datos de Landis+Gyr pueden incluir campos adicionales que contienen datos que se van a importar a Oracle Utilities Smart Grid Gateway. Estos campos adicionales se deben asignar a elementos dentro del documento XML procesado por OSB y enviarse a Smart Grid Gateway.
Esta asignación se puede realizar utilizando un documento XQuery personalizado, especificado en el fichero EnvironmentSettings.xq mediante el parámetro "modifyResultXMLInput".
Los siguientes documentos XQuery de muestra ilustran cómo se pueden asignar campos adicionales al formato XML y se envían a Smart Grid Gateway.
XQuery de muestra — Medidas iniciales
El siguiente XQuery es un ejemplo que muestra una transformación que se realiza en un elemento raíz con 3 secundarios (el XML de "resultado", el XML "sin formato", la configuración del entorno) que devuelve un XML de "resultado" modificado. A efectos de prueba, cambia el valor original del elemento de "resultado" <enQty>
y lo sustituye por un valor del XML "sin formato" según la variable de configuración de entorno. El valor <serviceProviderExternalId>
también se ha sustituido por un valor de codificación fija.
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 de muestra — Eventos de dispositivo
El siguiente XQuery es un ejemplo que muestra una transformación que se realiza en un elemento raíz con 3 secundarios (el XML de "resultado", el XML "sin formato", la configuración del entorno) y devuelve un XML de "resultado" modificado. A efectos de prueba, cambia el valor original del elemento de "resultado" <externalCommunicationModuleIdentifier>
y lo sustituye por un valor del XML "sin formato" según la variable de configuración de entorno. El valor <externalServiceLocationId>
también se sustituye por un valor de codificación fija.
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)