gpt4 book ai didi

java - MuleSoft NetSuite 连接器搜索

转载 作者:行者123 更新时间:2023-12-01 08:53:01 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 Mulesoft 中的 NetSuite 连接器从返回的搜索负载中获取值。

每当我使用此连接器时,它都会返回 List<Map<String, Object>> 的输出,由于这种类型的输出,我不确定是否有办法使用 DataWeave 并映射返回的值。

有没有办法实际获取此列表的组件,并使用 Dataweave 将其映射到其他内容?

在一个示例中,我使用#[payload.hasNext() ? 'Employee Found: ' + payload.next().get('internalId') : 'Employee Not Found']获取搜索结果记录的internalId我可以成功获取该值。

在另一种情况下,我尝试将内部 ID 与 NetSuite 连接器“获取记录”功能一起使用,我尝试输入内部 ID 参数 payload.next().get('internalId')同样的方法,报错如下。

<netsuite:get-record config-ref="NetSuite_Login_Auth" internalId="#[payload.next().get('internalId')]" type="EMPLOYEE" doc:name="NetSuite"/>

错误:

Message : Failed to invoke getRecord. Payload
: org.mule.streaming.ConsumerIterator@20969555 Payload Type : org.mule.streaming.ConsumerIterator Element : /streamMigrateAccountToCustomer/processors/10/0/1/0/1/searchEmployeeByEntityId/subprocessors/3/1/0 @ sfdc-netsuite-api Element XML : -------------------------------------------------------------------------------- Root Exception stack trace: java.util.NoSuchElementException at org.mule.streaming.AbstractConsumer.consume(AbstractConsumer.java:70) at org.mule.streaming.ConsumerIterator.next(ConsumerIterator.java:60) at sun.reflect.GeneratedMethodAccessor148.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)

最佳答案

您可以获取值并将其传递到批处理执行中,并在批处理内进行映射

 <flow name="swt-ns-data-pull">
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
basic: {
lastModifiedDate: {
operator: "AFTER",
searchValue: flowVars.modifiedDate
},
recordType: {
operator: "IS",
searchValue: "vendorPayment"
}
}
} as :object {
class : "com.netsuite.webservices.transactions.sales.TransactionSearch"
}
]]></dw:set-payload>
</dw:transform-message>
<logger message="started" level="INFO" doc:name="Logger"/>
<netsuite:search config-ref="NetSuite__Request_Level_Token_Based_Authentication" searchRecord="TRANSACTION" bodyFieldsOnly="false" fetchSize="1000" doc:name="NetSuite"/>
</flow>

批处理内映射

<batch:step name="RemittanceDetailCreation">
<json:object-to-json-transformer doc:name="Object to JSON"/>
<batch:set-record-variable variableName="rec" value="#[payload]" doc:name="Record Variable"/>
<dw:transform-message metadata:id="b7f75c92-a6c7-423a-8faa-cb9080914888" doc:name="Transform Message">
<dw:input-payload mimeType="application/json" doc:sample="C:\Users\sathekumar\Desktop\VedorPayment.json"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/csv header = false
%var NIC=sizeOf payload.applyList.apply
---
payload.applyList.apply map (( payment, indexOfPayment) ->{
NumberInCollection: '"' ++ NIC ++ '"' when NIC != null otherwise null,
ExternalPayableReferenceNumber: null,
ExternalSecondaryPayableReferenceNumber: null,
AdjustmentAmount: null,
DiscountAmount: '"' ++ payment.discAmt ++ '"' when payment.discAmt != null otherwise null,
GrossAmount: '"' ++ (payment.total as :string) ++ '"' when payment.total != null otherwise null,
NetAmount: '"' ++ (payment.amount as :string) ++ '"' when payment.amount != null otherwise null,
PayableDate: payload.PayableDate,
PayableReferenceNumber: paylaod.PR,
PayableType: null,
SecondaryPayableReferenceNumber: null,
SecondaryPayableType: null,
SupplierPayableReferenceNumber: null

})]]></dw:set-payload>
</dw:transform-message>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<batch:commit size="1000" doc:name="Batch Commit">

关于java - MuleSoft NetSuite 连接器搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42258919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com