Mule DataWeave转换消息失败,缺少元数据:id属性

Mule DataWeave转换消息失败,缺少元数据:id属性,mule,anypoint-studio,dataweave,Mule,Anypoint Studio,Dataweave,我有一个非常简单的hashmap负载被转换为application/json。在其他流中,我只是通过拖动dataweave组件并编写映射表达式来实现这一点 现在由于某种原因,我得到以下错误: 与元素类型“dw:transform message”关联的属性“metadata:id”的前缀“metadata”未绑定 当我查看xml时,我看到我的新dataweave组件没有metadata:id属性,但我使用的另一个dataweave组件有metadata:id属性 为什么这些行为会有所不同 为什么

我有一个非常简单的hashmap负载被转换为application/json。在其他流中,我只是通过拖动dataweave组件并编写映射表达式来实现这一点

现在由于某种原因,我得到以下错误:

与元素类型“dw:transform message”关联的属性“metadata:id”的前缀“metadata”未绑定

当我查看xml时,我看到我的新dataweave组件没有metadata:id属性,但我使用的另一个dataweave组件有metadata:id属性

  • 为什么这些行为会有所不同
  • 为什么元数据:id不像其他流那样自动生成
  • 为什么首先需要metadata:id属性?在这两种情况下,我都在调用映射器之前使用JSON到对象组件

  • 我认为,包含
    metadata
    属性是为了指向一个资源,在该资源中,您已经为示例文件后面的DataWeave输入和/或输出结构定义了一些元数据。上面详细介绍的错误看起来像是架构验证,请检查您在XML配置中打开的
    mule
    标记中是否有以下内容:

    xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" 
    xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" 
    http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
    

    希望有帮助

    使用DataWeave组件时,需要声明xml名称空间。如果您使用的是Studio designer,那么只要将组件拖放到配置中,Studio就会添加相关的名称空间

    所以,当您拖放dataweave组件时,studio会将下面的名称空间和模式位置添加到配置中-

    xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw"
    
    http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
    
    在Mule中,您可以为每个组件定义元数据,这有助于在设计时查看数据结构。所有这些元数据定义都存储在
    {project\u home}\catalog
    文件夹下,其文件名类似于
    UUID
    。然后,这些文件名将使用
    metadata:id
    属性添加到组件定义中。即使只有一个组件,您也需要元数据名称空间(不必DW,因为元数据是所有组件的公共特性)

    若您从Studio designer添加元数据,那个么Studio应该自动在名称空间和模式位置下面添加元数据。如果手动添加或将粘贴从一个xml复制到另一个没有粘贴的xml,则需要自行添加粘贴-

    xmlns:metadata=”http://www.mulesoft.org/schema/mule/metadata“

    带有Dataweave和元数据的配置示例如下所示-

    <mule xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
        xmlns:spring="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
    http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd">
    
    
    
    我最终发现,由于流程中的上游组件不同,系统出现故障。我有一个数据库命令,它传递了一个变量参数,我错过了VARCHAR数据类型。最疯狂的是,我必须在上游组件错误消息出现之前删除所有dataweave组件。我们不再需要在Mule 4中添加元数据。它由anypoint studio开箱即用支持。