2016-10-18 2 views
0

Salesforce에서 주문을 만드는 방법을 배우려고합니다. 작업 흐름에서 주문을 만들었으므로 Mule 3.7.3을 사용하여 Salesforce에 주문 항목을 삽입하려고하므로 주문과 관련된 제품을 지정하려고합니다.salesforce에서 주문 항목을 만들 때 노새의 형식이 일치하지 않습니다.

는 는

현재 다음과 같은 오류 반환 내 워크 플로우 :

워크 플로에 대한 페이로드는 여기 세일즈 포스 웹 사이트에서 가져
******************************************************************************** 
Message    : Exception while executing: 
payload.OrderItems.records map ((record , indexOfRecord) -> { 
     ^
Type mismatch 
    found :name, :string 
    required :name, :object 
Type     : com.mulesoft.weave.mule.exception.WeaveExecutionException 
Code     : MULE_ERROR--2 
******************************************************************************** 
Exception stack is: 
1. Type mismatch 
    found :name, :string 
    required :name, :object (com.mulesoft.weave.engine.ast.dynamic.DynamicDispatchException) 
    com.mulesoft.weave.engine.ast.dynamic.DynamicDispatchNode:65 (null) 
2. Exception while executing: 
payload.OrderItems.records map ((record , indexOfRecord) -> { 
     ^
Type mismatch 
    found :name, :string 
    required :name, :object (com.mulesoft.weave.mule.exception.WeaveExecutionException) 
    com.mulesoft.weave.mule.WeaveMessageProcessor:124 (null) 
******************************************************************************** 
Root Exception stack trace: 
com.mulesoft.weave.engine.ast.dynamic.DynamicDispatchException: Type mismatch 
    found :name, :string 
    required :name, :object 

: https://developer.salesforce.com/docs/atlas.en-us.api_placeorder.meta/api_placeorder/sforce_placeorder_rest_api_place_order_account.htm 과 메시지를 변환 한 후 오류없이 미리보기에서 결과를 표시하지만 실패 워크 플로우를 실행할 때.

아무도 도와 줄 수 있습니까?

페이로드 :

{ 
    "order": { 
     "attributes": { 
      "type": "Order" 
     }, 
     "EffectiveDate": "2016-10-18", 
     "Status": "Draft", 
     "billingCity": "SFO-Inside-OrderEntity-1", 
     "accountId": "0012400000LKPfzAAH", 
     "Pricebook2Id": "01s24000002JoD1AAK", 
     "OrderItems": { 
      "records": [{ 
       "attributes": { 
        "type": "OrderItem" 
       }, 
       "PricebookEntryId": "01u24000001rauFAAQ", 
       "quantity": "1", 
       "UnitPrice": "15.99" 
      }] 
     } 
    } 
} 

뮬 XML 워크 플로우 :

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:sfdc="http://www.mulesoft.org/schema/mule/sfdc" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:apikit="http://www.mulesoft.org/schema/mule/apikit" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/apikit http://www.mulesoft.org/schema/mule/apikit/current/mule-apikit.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
http://www.mulesoft.org/schema/mule/sfdc http://www.mulesoft.org/schema/mule/sfdc/current/mule-sfdc.xsd 
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd"> 
    <http:listener-config name="order-flow-httpListenerConfig" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration" basePath="/api"/> 
    <apikit:config name="order-flow-config" raml="order-flow.raml" consoleEnabled="true" consolePath="console" doc:name="Router"/> 
    <sfdc:config name="Salesforce__Basic_Authentication" username="${sf.username}" password="${sf.password}" securityToken="${sf.token}" doc:name="Salesforce: Basic Authentication"/> 
    <apikit:config name="Router" raml="order-flow.raml" consoleEnabled="true" consolePath="console" doc:name="Router"> 
     <apikit:flow-mapping resource="/orders/order" action="post" content-type="application/json" flow-ref="post:/orders/order:order-flow-config"/> 
    </apikit:config> 
    <flow name="order-flow-main"> 
     <http:listener config-ref="order-flow-httpListenerConfig" path="/*" doc:name="HTTP"/> 
     <apikit:router config-ref="Router" doc:name="APIkit Router"/> 
     <exception-strategy ref="order-flow-apiKitGlobalExceptionMapping" doc:name="Reference Exception Strategy"/> 
    </flow> 

    <flow name="post:/orders/order:order-flow-config"> 
     <set-payload value="{&quot;order&quot;:{&quot;attributes&quot;:{&quot;type&quot;:&quot;Order&quot;},&quot;EffectiveDate&quot;:&quot;2016-10-18&quot;,&quot;Status&quot;:&quot;Draft&quot;,&quot;billingCity&quot;:&quot;SFO-Inside-OrderEntity-1&quot;,&quot;accountId&quot;:&quot;0012400000LKPfzAAH&quot;,&quot;Pricebook2Id&quot;:&quot;01s24000002JoD1AAK&quot;,&quot;OrderItems&quot;:{&quot;records&quot;:[{&quot;attributes&quot;:{&quot;type&quot;:&quot;OrderItem&quot;},&quot;PricebookEntryId&quot;:&quot;01u24000001rauFAAQ&quot;,&quot;quantity&quot;:&quot;1&quot;,&quot;UnitPrice&quot;:&quot;15.99&quot;}]}}}" mimeType="application/json" doc:name="Set Payload"/> 
     <dw:transform-message metadata:id="054c5e6b-272f-4970-8c1c-d97cd802e792" doc:name="Transform Message"> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/java 
--- 
{ 
    ContractId: "80024000000OhfWAAS", 
    AccountId: payload.order.accountId, 
    Pricebook2Id: payload.order.Pricebook2Id, 
    EffectiveDate: payload.order.EffectiveDate as :date, 
    Status: payload.order.Status, 
    Type: payload.order.attributes.type, 
    BillingCity: payload.order.billingCity 
}]]></dw:set-payload> 
     </dw:transform-message> 
     <sfdc:create-single config-ref="Salesforce__Basic_Authentication" doc:name="Salesforce" type="Order"> 
      <sfdc:object ref="#[payload]"/> 
     </sfdc:create-single> 
     <set-variable variableName="varOrderId" value="#[payload.id]" doc:name="Set Order Id"/> 
     <object-to-string-transformer doc:name="Object to String"/> 
     <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
     <set-payload value="{&quot;OrderItems&quot;:{&quot;records&quot;:[{&quot;attributes&quot;:{&quot;type&quot;:&quot;OrderItem&quot;},&quot;PricebookEntryId&quot;:&quot;01u24000001rauFAAQ&quot;,&quot;quantity&quot;:&quot;1&quot;,&quot;UnitPrice&quot;:&quot;15.99&quot;}]}}}" doc:name="Set Payload"/> 
     <dw:transform-message metadata:id="a38edabd-4deb-413f-8bcb-5691e64bc230" doc:name="Transform Message"> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/java 
--- 
payload.OrderItems.records map ((record , indexOfRecord) -> { 
    OrderId: flowVars.varOrderId, 
    UnitPrice: record.UnitPrice 
})]]></dw:set-payload> 
     </dw:transform-message> 
     <sfdc:create config-ref="Salesforce__Basic_Authentication" type="OrderItem" doc:name="Salesforce"> 
      <sfdc:objects ref="#[payload]"/> 
     </sfdc:create> 
     <object-to-string-transformer doc:name="Object to String"/> 
     <logger level="INFO" doc:name="Logger"/> 

    </flow> 
    <apikit:mapping-exception-strategy name="order-flow-apiKitGlobalExceptionMapping"> 
     <apikit:mapping statusCode="404"> 
      <apikit:exception value="org.mule.module.apikit.exception.NotFoundException" /> 
      <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/> 
      <set-payload value="{ &quot;message&quot;: &quot;Resource not found&quot; }" doc:name="Set Payload"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="405"> 
      <apikit:exception value="org.mule.module.apikit.exception.MethodNotAllowedException" /> 
      <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/> 
      <set-payload value="{ &quot;message&quot;: &quot;Method not allowed&quot; }" doc:name="Set Payload"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="415"> 
      <apikit:exception value="org.mule.module.apikit.exception.UnsupportedMediaTypeException" /> 
      <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/> 
      <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="406"> 
      <apikit:exception value="org.mule.module.apikit.exception.NotAcceptableException" /> 
      <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/> 
      <set-payload value="{ &quot;message&quot;: &quot;Not acceptable&quot; }" doc:name="Set Payload"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="400"> 
      <apikit:exception value="org.mule.module.apikit.exception.BadRequestException" /> 
      <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/> 
      <set-payload value="{ &quot;message&quot;: &quot;Bad request&quot; }" doc:name="Set Payload"/> 
     </apikit:mapping> 
    </apikit:mapping-exception-strategy> 
</mule> 

감사

답변

0

당신은 문자열로 페이로드를 설정하고 JSON으로 액세스하려고하는 것처럼이 오류를 얻고있다.

이 도움이

<set-payload mimeType="application/json" value="{&quot;OrderItems&quot;:{&quot;records&quot;:[{&quot;attributes&quot;:{&quot;type&quot;:&quot;OrderItem&quot;},&quot;PricebookEntryId&quot;:&quot;01u24000001rauFAAQ&quot;,&quot;quantity&quot;:&quot;1&quot;,&quot;UnitPrice&quot;:&quot;15.99&quot;}]}}}" doc:name="Set Payload" /> 

또는

<dw:transform-message doc:name="Transform Message"> 
       <dw:input-payload mimeType="application/json" /> 
       <dw:set-payload><![CDATA[%dw 1.0 
    %output application/json 
    %var timeZone = now as :datetime as :string {format:"z"} 
    --- 
    payload.OrderItems.records map ((record , indexOfRecord) -> { 
     OrderId: flowVars.varOrderId, 
     UnitPrice: record.UnitPrice 
    }) ]]></dw:set-payload> 
</dw:transform-message> 

희망을 시도처럼 하나 또는 일련의 페이로드에 설정 MIME 형식은 dataweave합니다.

+0

고맙습니다. 그 중 하나를 놓치지 않았습니다. – user3165854

관련 문제