Несоответствие типов для оператора "Выбор значения" с Dataweave
Я перенес преобразователь данных (который преобразует XML в POJO) в область данных. Но при выполнении потока я вижу следующее исключение
Обнаружено несоответствие типа для оператора "Выбор значения": строка,: требуется имя: дата / время: имя или требуется: локальное время,: имя или требуется: объект,: имя или требуется: время,: имя или требуется: массив,: имя или требуется: дата,: имя или требуется: местное время,: имя или требуется: период,: имя.
Input (Payload) представляет собой XML, как показано ниже:
<?xml version="1.0" encoding="UTF-8"?>
<RESPONSE_GROUP MISMOVersionID="2.4">
<RESPONDING_PARTY/>
<RESPOND_TO_PARTY/>
<RESPONSE ResponseDateTime="2016-04-21T09:03:44-05:00">
<KEY _Name="LSF.FloodRequestID" _Value="1604008485"/>
<KEY _Name="LSF.MAPUPDATE" _Value="N"/>
<KEY _Name="LSF.TrackingVendor" _Value="171"/>
<KEY _Name="CLIENT.TRACKINGID" _Value="18786574"/>
<KEY _Name="CLIENT.ID" _Value="CREDITCENTER"/>
<RESPONSE_DATA>
<FLOOD_RESPONSE FEMAAdditionalLenderDescription="98756987876" MISMOVersionID="2.4">
<BORROWER _FirstName="###############" _LastName="###############"/>
<MORTGAGE_TERMS LenderCaseIdentifier="068461451"/>
<PROPERTY _City="MASON CITY" _County="CERRO GORDO" _PostalCode="50401" _State="IA" _StreetAddress="929 N ADAMS AVE">
<_IDENTIFICATION CountyFIPSCode="033" StateFIPSCode="19"/>
</PROPERTY>
<EMBEDDED_FILE MIMEType="application/pdf" _Description="Adobe Pdf" _EncodingType="Base64" _Extension="pdf" _Name="Certificate_1604008485" _Version="1.3">
<DOCUMENT>bae64encodedData</DOCUMENT>
</EMBEDDED_FILE>
<FLOOD_DETERMINATION FloodCertificationIdentifier="1604008485" FloodPartialIndicator="N" FloodProductCertifyDate="2016-04-05 08:21:24 AM" SpecialFloodHazardAreaIndicator="N" _LifeOfLoanIndicator="Y">
<_LOAN_INFORMATION RegulatoryAgencyLenderIdentifier="123456789"/>
<_COMMUNITY_INFORMATION NFIPCommunityFIRMDate="1980-12-02" NFIPCommunityIdentifier="190060" NFIPCommunityName="MASON CITY, CITY OF" NFIPCommunityParticipationStartDate="1975-03-21" NFIPCounty="CERRO GORDO" NFIPStateCode="IA"/>
<_BUILDING_INFORMATION NFIPFloodZoneIdentifier="X" NFIPMapIdentifier="19033C" NFIPMapIndicator="Y" NFIPMapPanelDate="2012-05-16" NFIPMapPanelIdentifier="0162" NFIPMapPanelSuffixIdentifier="C"/>
<_INSURANCE_INFORMATION NFIPCommunityParticipationStatusType="Regular" ProtectedAreaIndicator="N"/>
<FULFILLMENT_PARTY _City="Austin" _Name="CoreLogic Flood Services" _PostalCode="78758" _State="TX" _StreetAddress="11902 Burnet Road">
<CONTACT_DETAIL>
<CONTACT_POINT _RoleType="Work" _Type="Phone" _Value="1-800-447-1772"/>
</CONTACT_DETAIL>
</FULFILLMENT_PARTY>
</FLOOD_DETERMINATION>
<LENDER _City="Jacksonville" _Identifier="98756987876" _PostalCode="32256" _State="FL" _StreetAddress="9000 Southside Blvd, Bldg 100" _UnparsedName="Bank of America"/>
<EXTENSION>
<EXTENSION_SECTION>
<EXTENSION_SECTION_DATA>
<FLOOD_DETERMINATION SplitDeterminationIndicator="N"/>
</EXTENSION_SECTION_DATA>
</EXTENSION_SECTION>
</EXTENSION>
</FLOOD_RESPONSE>
</RESPONSE_DATA>
<STATUS _Code="S0010" _Condition="Success" _Description="This is a TEST ORDER. It cannot be used for any purpose other than system testing. Section II.B.4 applies to all buildings on property described in Sec I.2. THIS FLOOD DETERMINATION IS PROVIDED TO THE LENDER PURSUANT TO THE FLOOD DISASTER PROTECTION ACT. IT SHOULD NOT BE USED FOR ANY OTHER PURPOSE." _Name="Complete"/>
</RESPONSE>
</RESPONSE_GROUP>
и DW трансформация выглядит как
%dw 1.0
%output application/java
---
{
brwrFirstName: payload.RESPONSE_GROUP.RESPONSE.RESPONSE_DATA.FLOOD_RESPONSE.BORROWER.@"_FirstName",
brwrLastName: payload.RESPONSE_GROUP.RESPONSE.RESPONSE_DATA.FLOOD_RESPONSE.BORROWER.@"_LastName" default '',
Я вижу ошибку в brwrFirstName: payload.RESPONSE_GROUP.RESPONSE.RESPONSE_DATA.FLOOD_RESPONSE
3 ответа
Как упоминал Чад, вы должны опубликовать свой входной и фактический XML-код mule (а не только DW-код), что поможет людям лучше понять его.
Основываясь на предоставленной информации, похоже, что полезная нагрузка является строкой, а DW говорит, что не может применить "." селектор на строку. Это ошибка, которую вы получаете. Селекторы могут применяться только к тем типам, которые указаны в ошибке.
Теперь вы ожидаете, что DW интерпретирует вашу строку как XML и проанализирует соответственно. Иногда DW не знает, как это сделать. Однако вы можете принудительно указать тип полезной нагрузки, который заставит DW интерпретировать строку как XML. Просто добавьте дочерний элемент ниже с соответствующим mimeType к <dw:transform-message>
элемент.
<dw:input-payload mimeType="application/xml"/>
Это заставит DW анализировать строку как XML, и ваше приложение должно работать на этом этапе. Вы также можете применить атрибут mimeType к <dw:input-variable>
также.
Полный пример DW в файле mulexml:
<dw:transform-message doc:name="Transform Message">
<dw:input-payload mimeType="application/xml"/>
<dw:set-payload>
<![CDATA[%dw 1.0
%output application/java
---
{
brwrFirstName: payload.RESPONSE_GROUP.RESPONSE.RESPONSE_DATA.FLOOD_RESPONSE.BORROWER.@"_FirstName",
brwrLastName: payload.RESPONSE_GROUP.RESPONSE.RESPONSE_DATA.FLOOD_RESPONSE.BORROWER.@"_LastName" default ''
}]]>
</dw:set-payload>
</dw:transform-message>
Обнаружена ошибка:
ERROR 2017-03-07 12:49:50,060 [[bulk_create_poc].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy:
Message : Exception while executing:
payload.ns0#ResponseData_MT.*Item map {
^
Type mismatch for 'Value Selector' operator
found :binary, :name
required :datetime, :name or
required :localdatetime, :name or
required :object, :name or
required :time, :name or
required :array, :name or
required :date, :name or
required :localtime, :name or
required :period, :name.
Добавление приведенного ниже фрагмента для Резолюции
<dw:input-payload mimeType="application/xml"/>
Как здесь
<dw:transform-message doc:name="Transform Message" metadata:id="b12f4d65-2bb0-43e9-b775-c2077863ba48">
<dw:input-payload mimeType="application/xml"/>
<dw:set-payload><![CDATA[
Добавление типа данных для типа MIME действительно работал для меня
Ошибка, с которой я столкнулся:
ОШИБКА 2017-03-07 12:49:50,060 [[bulk_create_poc].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy:
Сообщение: Исключительная ситуация при выполнении: payload.ns0#ResponseData_MT.* Карта элементов { ^ Несоответствие типов для оператора "Выбор значения" найдено: двоичный файл, имя требуется: дата / время,: имя или требуется: локальное время,: имя или требуется: объект,: Имя или требуется: время,: имя или требуется: массив,: имя или требуется: дата,: имя или требуется: местное время,: имя или требуется: период,: имя.
****Resolution that worked for me :****