2016-08-03 5 views
0

Mulesoft 개발을 처음 접했습니다. 최근에 쉼표로 구분 된 CSV 파일에서 일부 값을 읽고 제공된 값으로 REST API를 호출하는 MuleESB 응용 프로그램을 개발하라는 요청을 받았습니다. 내가 제대로하고 있는지 잘 모르는지 모르겠다. 제대로 지내고 있는지 정확히 알지 못한다. WARN 2016-08-03 02 : 39 : 49,209 [creditsFlow.stage1.02] org.mule.routing. ExpressionSplitter : 분배기가 결과를 반환하지 않았습니다. 이것이 예상되지 않으면 분할 표현을 확인하십시오. 다음에 아무 것도 나타나지 않습니다. https://xx.xx.com/server/CreditPost/views/CreditPost?ID=12345678&CompletionDt=2017-08-03&CourseNbr=90000001MuleESB가 REST API를 사용합니다.

아래는 내 MuleESB 코드의 조각입니다 :

<flow name="creditsFlow"> 
     <file:inbound-endpoint path="C:\Users\kteo1\Downloads\Inbound" responseTimeout="10000" metadata:id="a67520d0-f60d-4b5c-9fc8-3578d6c6434d" doc:name="input file" mimeType="application/csv"> 
      <file:filename-regex-filter pattern="credits_(?:(?!\.csv)(?:.|\n))*\.csv" caseSensitive="true"/> 
     </file:inbound-endpoint> 
     <dw:transform-message metadata:id="0e395c12-6af5-4894-b9c2-f7642816f8d3" doc:name="CSV to XML"> 
      <dw:input-payload doc:sample="list_credits.csv"/> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/xml 
--- 
{ 
    credits: { 
     (payload map ((payload01 , indexOfPayload01) -> { 
      credit: { 
       ID: payload01.ID, 
       CourseNbr: payload01.CourseNbr, 
       CompletionDt: payload01.CompletionDt as :string 
      } 
     })) 
    } 
}]]></dw:set-payload> 
     </dw:transform-message> 
     <json:xml-to-json-transformer doc:name="XML to JSON"/> 
     <logger message="#[message.payload]" level="INFO" doc:name="Logger"/> 
     <json:json-to-object-transformer doc:name="JSON to Object"/> 
     <set-variable variableName="totalCredits" value="#[json:credits]" doc:name="totalCredits"/> 
     <set-variable variableName="creditsArrayList" value="#[new java.util.ArrayList()]" doc:name="creditsArrayList"/> 
     <foreach collection="#[json:credit]" doc:name="For Each" > 
      <logger message="#[json:ID]" level="INFO" doc:name="Logger"/> 
      <http:request config-ref="HTTP_Request_Configuration" path="/server/CreditPost/views/CreditPost?ID={ID}&amp;CompletionDt={CompletionDt}&amp;CourseNbr={CourseNbr}" method="GET" doc:name="HTTP"> 
       <http:request-builder> 
        <http:uri-param paramName="ID" value="#[json:ID]"/>      
        <http:uri-param paramName="CompletionDt" value="#[json:CompletionDt]"/> 
        <http:uri-param paramName="CourseNbr" value="#[json:CourseNbr]"/> 
       </http:request-builder> 
      </http:request> 
     </foreach> 
    </flow> 

은 알려 주시기 바랍니다

은 보통이 우리가 REST API를 호출하는 방법입니다.

답변

0

먼저 xml로 변환 한 다음 json으로 변환 한 다음 java로 변환하지 않아도됩니다.

%dw 1.0 
%output application/java 
--- 
(payload map ((payload01 , indexOfPayload01) -> { 
    ID: payload01.ID, 
    CourseNbr: payload01.CourseNbr, 
    CompletionDt: payload01.CompletionDt as :string 
})) 

같은

사용 뭔가 그것은 ArrayList에 빌더를 요청할를 통과 생성합니다. 또 다른 문제는 uri-params에 관한 것입니다. 쿼리 매개 변수를 설정하는 동안 uri-pamars를 대신 사용하고 #[payload.ID], #[payload.CourseNbr], #[payload.CompletionDt]과 같은 필드에 액세스하십시오.

 <dw:transform-message doc:name="Transform Message" metadata:id="55f04db1-ed48-4e1f-b966-562768a3c173"> 
     <dw:input-payload doc:sample="list_csv.csv"> 
      <dw:reader-property name="header" value="false"/> 
     </dw:input-payload> 
     <dw:set-payload><![CDATA[%dw 1.0 
%output application/java 
--- 
(payload map ((payload01 , indexOfPayload01) -> { 
    ID: payload01.ID, 
    CourseNbr: payload01.CourseNbr, 
    CompletionDt: payload01.CompletionDt as :string 
})) 

]]></dw:set-payload> 
    </dw:transform-message> 
    <foreach doc:name="For Each"> 
     <http:request config-ref="HTTP_Request_Configuration" path="/server/CreditPost/views/CreditPost" method="GET" doc:name="HTTP"> 
      <http:request-builder> 
       <http:query-param paramName="ID" value="#[payload.ID]"/> 
       <http:query-param paramName="CourseNbr" value="#[payload.CourseNbr]"/> 
       <http:query-param paramName="CompletionDt" value="#[payload.CompletionDt]"/> 
      </http:request-builder> 
     </http:request> 
    </foreach> 

희망이 있습니다.

+0

귀하의 조언에 감사드립니다. 지금 나는 HTTP 요청을 보내는 _Error 인 또 다른 오류에 부딪 혔다. 메시지 페이로드 유형은 LinkedHashMap_입니다. 나는 다른 것을 시도하고있을 때이 오류를 보았지만 그것이 무엇을 기대하고 왜 효과가 없는지 이해하지 못한다. –

+0

조언 해 주시겠습니까? –

+0

최근 mule-config와 테스트하려는 데이터를 게시 해주십시오. – AnupamBhusari