2017-08-28 12 views
0

DSUltimateIdに関して応答をフィルタリングする必要があります。以下は、私が同じことをテスト中に取得しているエラーです。私は複数回発生する可能性がある「DSUltimateID」**に基づいて重複したレコードをフィルタリングしようとしています。ここでデータウィーブ:1レコードセットフィールドの値に基づいて重複レコードセットを削除します

ERROR 2017-08-28 16:34:13,669 [[esb-domain].HTTPS_EIP_Listener_Configuration.worker.01] org.mule.exception.CatchMessagingExceptionStrategy: 
******************************************************************************** 
Message    : Exception while executing: 
      (ns0#DSUltimateId: $.ns01#stringValue ) when $.ns01#name == "IU_ROWID" distinctBy $ , 
                  ^
Cannot coerce a :array to a :boolean 
Type     : com.mulesoft.weave.mule.exception.WeaveExecutionException 
Code     : MULE_ERROR--2 

は、ここに私のデータは、コードを織りです。ここ

%dw 1.0 
%output application/xml 
%output application/xml inlineCloseOn = "empty" 
%output application/xml skipNullOn="attributes" 
%namespace ns0 http://www.example.org/IUGetMasterOrganizationRecordByIdOrName 
%namespace ns01 urn:siperian.api 
--- 
ns0#CustomerMasterDataDSUltimateResponse: { 
    ns0#DSUltimate: { 
     (payload.ns01#searchQueryReturn.*ns01#record.*ns01#field map 
           { 

      (ns0#ElectronicAddressTypeCd: $.ns01#stringValue) when $.ns01#name == "EADDR_TYPE_CD" and ($.ns0#stringValue != ("" and null)), 
      (ns0#ElectronicAddressTxt: $.ns01#stringValue) when $.ns01#name == "EADDR_TXT" and $.ns0#stringValue != ("" or null), 
      (ns0#DSUltimateId: $.ns01#stringValue ) when $.ns01#name == "IU_ROWID" distinctBy $ , 
      (ns0#DSUltimateNm : $.ns01#stringValue) when $.ns01#name == "IU_NM", 
      (ns0#DSUltimateClassificationCd : $.ns01#stringValue) when $.ns01#name == "IU_CLASS_CODE", 
      (ns0#ApprovalStatusDSUltimateRequesterId : $.ns01#stringValue) when $.ns01#name == "APRV_STS_IU_RQSTR_ID", 
      (ns0#DSUltimateCreateReasonCd : $.ns01#stringValue) when $.ns01#name == "IU_CRE_RSN_CD", 
      (ns0#DSUltimateApprovalStatusCd : $.ns01#stringValue) when $.ns01#name == "IU_APRV_STS_CD", 
      (ns0#DSUltimateEffectiveStartDtm : $.ns01#dateValue) when $.ns01#name == "EFF_STRT_DTM", 
      (ns0#DSUltimateEffectiveEndDtm : $.ns01#dateValue !=null) when $.ns01#name == "EFF_END_DTM" 
     } 
      ) 
    } 
} 

私のサンプル入力は、あなたがマッピングながらdistinctByを使用しているが、それはマッピングした後に使用する必要があります

+0

を参照してください。 – Dhanjeet

答えて

0
 %dw 1.0 
%output application/xml inlineCloseOn = "empty" ,skipNullOn="attributes" 
%namespace ns0 http://www.example.org/IUGetMasterOrganizationRecordByIdOrName 
%namespace ns01 urn:siperian.api 
--- 
{CustomerMasterDataDSUltimateResponse : {((payload.ns01#searchQueryReturn.*ns01#record map 
      DSUltimate: { 
      ( $.*field map { 
      (ElectronicAddressTypeCd: $.ns01#stringValue) when $.ns01#name == "EADDR_TYPE_CD" and $.ns01#stringValue != null and $.ns01#stringValue != "", 
      (ElectronicAddressTxt: $.ns01#stringValue) when $.ns01#name == "EADDR_TXT" and $.ns01#stringValue != null and $.ns01#stringValue != "", 
      (DSUltimateId: trim $.ns01#stringValue) when $.ns01#name == "IU_ROWID", 
      (DSUltimateNm : $.ns01#stringValue) when $.ns01#name == "IU_NM", 
      (DSUltimateClassificationCd : $.ns01#stringValue) when $.ns01#name == "IU_CLASS_CODE", 
      (ApprovalStatusDSUltimateRequesterId : $.ns01#stringValue) when $.ns01#name == "APRV_STS_IU_RQSTR_ID", 
      (DSUltimateCreateReasonCd : $.ns01#stringValue) when $.ns01#name == "IU_CRE_RSN_CD", 
      (DSUltimateApprovalStatusCd : $.ns01#stringValue) when $.ns01#name == "IU_APRV_STS_CD", 
      (DSUltimateEffectiveStartDtm : $.ns01#dateValue) when $.ns01#name == "EFF_STRT_DTM", 
      (DSUltimateEffectiveEndDtm : $.ns01#dateValue) when $.ns01#name == "EFF_END_DTM" and $.ns01#stringValue != null and $.ns01#stringValue != "" 
      } 
     ) 
     } 
    ) distinctBy $.DSUltimate.DSUltimateId)}} 
1

です。私はこのためにウェブサイトが私を与えていたことをいくつかの奇妙なとはないので、有効なエラーの問題のサンプル入力を投稿することができませんでしたanswer here

+0

これと助けに時間を費やしてくれてありがとう。 – Dhanjeet

関連する問題