ule子4:对于每个对象:org.mule.runtime.api.metadata.TypedValue无法转换为java.util.Map

时间:2020-10-19 12:01:26

标签: mule4

enter image description here方案: enter image description here

  1. 收到来自数据库的记录列表
  2. 使用“用于Salesforce映射的转换消息”和数据类型:application / java
  3. 来转换记录列表。
  4. 转换完成后,对每个块使用a将这些转换后的记录重新插入大小为1000的批处理中。

问题陈述:将有效负载传递给每个块后,有效负载的数据类型就会转换为TypedValues,并且当将有效负载传递给 Salesforce Upsert 组件时,会出现以下错误:


org.mule.runtime.core.internal.message.ErrorBuilder$ErrorImplementation
{
  description=org.mule.runtime.api.metadata.TypedValue cannot be cast to java.util.Map
  detailedDescription=org.mule.runtime.api.metadata.TypedValue cannot be cast to java.util.Map
  errorType=MULE:UNKNOWN
  cause=java.lang.ClassCastException
  errorMessage=-
  childErrors=[]
}

下面是一个mule 4示例项目,该项目将使用输入的csv文件并对其进行过滤以查找成人,然后使用a为每个范围(每5个批次)中的每个范围打印成人名称。 使用调试器,可以在每个块之前和内部检查有效载荷媒体类型。

现在在我里面使用的是Logger,因此typedValue不会造成问题,但是,如果使用Salesforce组件,则会收到如上所述的错误。由于我没有SF帐户,因此无法创建确切的方案。很抱歉给您带来不便,但这将证明每种媒体类型都在内部转换。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    xmlns:file="http://www.mulesoft.org/schema/mule/file"
    xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    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/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    <file:config name="File_Config" doc:name="File Config" doc:id="780eb98e-37d0-48ae-8f6b-47b8782284c9" >
        <file:connection workingDir="${app.home}" />
    </file:config>
    <flow name="bbazaz-json2csv-generatorFlow" doc:id="eebb7bcb-04ba-4c2a-bc7a-924d844c6aa2" >
        <scheduler doc:name="Scheduler" doc:id="f05eafdb-3cf0-43e2-9797-bedb9c4bb04a" >
            <scheduling-strategy >
                <fixed-frequency frequency="1" timeUnit="DAYS"/>
            </scheduling-strategy>
        </scheduler>
        <file:read doc:name="Read" doc:id="b1e9b51e-ab43-4965-ac0a-10c86c72b425" config-ref="File_Config" path="TestFile/InputData.csv" outputMimeType="application/csv; header=true" outputEncoding="UTF-8"/>
        <logger level="INFO" doc:name="Log Data" doc:id="74f972dc-9025-4eb7-916f-9c8dcaef4c7e" message='#["JSON Data Received"]'/>
        <ee:transform doc:name="Filter Adults and Minors" doc:id="6dfbe838-f508-4904-a651-8285b478faa7" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload reduce((item, acc = {
    'adultsList': [],
    'minorsList': []
}) -> (
    if ( (item.PersonsAge as Number) >= 18 ) {
    adultsList: (acc.adultsList default []) << {
        'Name': item.PersonName
    },
    minorsList: acc.minorsList default []
}
    else{
    minorsList: (acc.minorsList default []) << {
        'Name': item.PersonName
    },
    adultsList: acc.adultsList default []
}))]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <foreach doc:name="For Each" doc:id="ce464082-620c-41ee-8150-45264c5cb57a" collection="#[payload.adultsList]" batchSize="5">
            <logger level="INFO" doc:name="Logger" doc:id="d0953955-6c4c-4374-aed4-ee0155d8e5d5" message='#[(payload.Name joinBy(",")) ++ "is an adult"]'/>
        </foreach>
    </flow>
</mule>

示例CSV文件:

PersonName,PersonsAge
Jonas,36
Ulysses,36
Lane,31
Tate,30
Rogan,36
Bruno,37
Colt,25
Colby,34
Grady,24
Hyatt,39
Victor,20
Cade,16
Brady,34
Ulric,33
Xavier,40
Cameron,36

0 个答案:

没有答案