检索导致错误的元数据连接器 - 无法解析未打包的流

Retrieve Metadata connector resulting in error - Unable to parse the unpackaged stream

根据评论here,我正在尝试使用 Mulesoft 中的检索元数据 连接器来实​​现对象的描述。

  1. 创建了 package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>CustomObject</name>
    </types>
    <version>54.0</version>
</Package>
  1. Documentation 建议为了使用 Unpackaged 字段,格式应为 Binary。因此,我读取了 package.xml 文件,然后使用此 dwl
  2. 将其转换为二进制格式
%dw 2.0
output text/plain
import dw::Crypto
---
Crypto::hashWith(write(payload,"application/xml"),'MD5')

参考:Object-Binary

  1. 下面是我在连接器中配置的

检索元数据连接器配置

<salesforce:retrieve-metadata doc:name="Retrieve metadata" doc:id="d2aa6e13-3012-4e53-a448-3c00f5058f55" config-ref="Salesforce_Config" unpackaged="#[payload]" />

这导致下面的堆栈跟踪

********************************************************************************
Message               : Unable to parse the unpackaged stream
Element               : sf-testFlow/processors/2 @ sf-test:sf-test.xml:74 (Retrieve metadata)
Element DSL           : <salesforce:retrieve-metadata doc:name="Retrieve metadata" doc:id="d2aa6e13-3012-4e53-a448-3c00f5058f55" config-ref="Salesforce_Config" unpackaged="#[payload]"></salesforce:retrieve-metadata>
Error type            : MULE:UNKNOWN
FlowStack             : at sf-testFlow(sf-testFlow/processors/2 @ sf-test:sf-test.xml:74 (Retrieve metadata))
--------------------------------------------------------------------------------
Root Exception stack trace:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.

不确定连接器需要这种格式吗?或者这种做法是否错误?

您没有将 XML 转换为二进制文件,而是对其进行数字哈希处理,这使得无法恢复原始内容。基本上就是加密内容,丢掉密钥。

您是否尝试过 <salesforce:read-metadata> 操作?参考https://docs.mulesoft.com/salesforce-connector/10.11/salesforce-connector-reference#ReadMetadata

示例:

            <salesforce:read-metadata type="CustomObject" config-ref="config">
                <salesforce:full-names><![CDATA[#[["Lead"]]]]></salesforce:full-names>
            </salesforce:read-metadata>