当前位置: 首页 > 知识库问答 >
问题:

不替代表达式中流量变量值的多表达式转换器

赵飞雨
2023-03-14
<flow name="process_incoming__eflow_messagesFlow1" doc:name="process_incoming__eflow_messagesFlow1">
    <vm:inbound-endpoint exchange-pattern="request-response" path="TransformToBod" doc:name="Transfor to BOD VM"/>
    <logger message="message received from BOD VM #[payload]" level="INFO" doc:name="Logger"/>
    <component class="com.efi.radius.components.GetMessageType" doc:name="Java - Get the type of BOD comming into Payload"/>
    <logger message="The BOD class to trasform is #[flowVars.messageType]" level="INFO" doc:name="Logger"/>
    <custom-transformer class="com.efi.radius.transformers.XMLToBODTransformer" doc:name="Java - XML to BOD Transformer">
    </custom-transformer>
    <logger message="The Data Area to map is #[flowVars.messageBODType]" level="INFO" doc:name="Logger"/>
    <logger message="The payload now is #[payload]" level="INFO" doc:name="Logger"/>
    <expression-transformer expression="#[flowVars['messageBODType']]" doc:name="Expression - Extract the Data Area"/>
</flow>
    if (payload.indexOf("<ProcessCustomerPartyMaster") != -1) {
        // Set the message type to customer
        eventContext.getMessage().setInvocationProperty("messageType", "com.efi.radius.models.bod.ProcessCustomerPartyMasterType");
        eventContext.getMessage().setInvocationProperty("messageBODType", "#[message.payload.getDataArea().getCustomerPartyMaster().get(0)]");
    }

这很好用。

如果我直接在表达式转换器中写入#message.payload.getDataArea().getCustomerPartyMaster().get(0)]“,它会像预期的那样工作,但我希望它是泛型的。有什么方法可以做到吗?

添加错误日志。

消息:未能找到组件的入口点,以下解析器尝试但失败:[ReflectionEntryPointResolver:在对象“com.efi.radius.transformers.EFlowJobToRadiusJob”上发现太多可能的方法接受参数“{class java.lang.string}”,匹配的方法有“[public final java.lang.object former.setMimetype(java.lang.string)抛出javax.activation.mimetypeParseException]”AnnotatedEntryPointResolver:component:EFlowJobToRadiusJob{this=b72e07f,name='null',ignorebadInput=false,returnclass=SimpleDataType{type=java.lang.object,mimetype='/'},sourceTypes=[]}没有任何带注释的方法,跳过。ER:对象“EflowJobtorAdiusJob{this=b72e07f,name='null',ignorebadinput=false,returnclass=simpledatatype{type=java.lang.Object,mimetype='/'},sourcetypes=[]}”不实现必需的接口“interface org.mule.api.lifecycle.callable”methodHeaderPropertyEntryPointResolver:未在事件上设置必需的属性“method”

代码:MULE_ERROR-321

异常堆栈为:1。未能找到组件的入口点,以下解析器尝试了但失败:[ReflectionEntryPointResolver:在对象“com.efi.radius.transformers.EFlowJobToRadiusJob”上发现了太多可能接受参数“{class java.lang.string}”的方法,匹配的方法是“[public final java.lang.object.setMimetype(java.lang.string)抛出javax.activation.mimetypeParseException]”AnnotatedEntryPointResolver:component:EFlowJobToRadiusJob{this=b72e07f,name='null',ignorebadInput=false,returnclass=SimpleDataType{type=java.lang.object,mimetype='/'},sourceTypes=[]}没有任何带注释的方法,跳过。callableEntryPointResolver:“EflowJobtorAdiusJob{this=b72e07f,name='null',ignorebadinput=false,returnclass=simpledatatype{type=java.lang.object,mimetype='/'},sourcetypes=[]}”没有实现必需的接口“interface org.mule.api.lifecycle.callable”methodheaderpropertyentrypointresolver:未在事件上设置必需的属性“method”

defaultEntryPointResolverSet:52(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/model/resolvers/EntryPointNotFoundException.html)

根异常堆栈跟踪:org.mule.model.resolvers.EntryPointNotFoundException:未能找到组件的入口点,以下解析器尝试了但失败:[ReflectionEntryPointResolver:在对象“com.efi.radius.transformers.EFlowJobToRadiusJob”上发现了太多可能接受参数“{class java.lang.string}”的方法,匹配的方法是“[public final java.lang.object org.mule.transformer.abstract a.lang.string),public void org.mule.transformer.abstractTransformer.setMimetype(java.lang.string)throws javax.activation.mimetypeParseException]”AnnotatedEntryPointResolver:component:EFlowJobToRadiusJob{this=b72e07f,name='null',ignoreBadInput=false,returnclass=simpleDatatype{type=java.lang.object,}没有任何带注释的方法,跳过。CallableEntryPointResolver:对象“EflowJobtorAdiusJob{this=b72e07f,name='null',ignorebadInput=false,returnClass=SimpleDataType{type=java.lang.Object,mimetype='/'},sourceTypes=[]}”不实现必需的接口“interface org.mule.api.lifecycle.callable”methodHeaderPropertyEntryPointResolver:未在事件上设置必需的

共有1个答案

裴嘉良
2023-03-14

你想要达到的目标是可以做到的,至少不是用那种方式。您看,如果您正在做的工作没有什么能阻止某人发送,让我们假设一个MEL表达式作为http请求中的有效负载,并在您的代码中执行它,如果您愿意的话,这将像MEL注入一样。

我建议您缩小所需的范围,使其成为泛型,或者将此类表达式存储在文件中,并使用消息的另一个值来选择要执行的文件。

HTH

 类似资料:
  • 变量 变量的类型: AutoHotkey 中没有明确的变量类型. 然而, 只包含数字 (可以含有小数点) 的变量进行数学运算或比较时, 会被自动转换为数值. (为了提高性能, 在内部会对数字进行缓存以避免与字符串之间的转换.) 变量的作用域和声明: 除了函数中的 局部变量, 其他所有变量都是全局的; 即可以在脚本的任意位置读取或修改它们的内容. 除了在函数页面注明的情况,变量都是不需要声明的;使用

  • 本文向大家介绍js正则表达式replace替换变量方法,包括了js正则表达式replace替换变量方法的使用技巧和注意事项,需要的朋友参考一下 JavaScript正则实战(会根据最近写的不断更新) 1、javascript 正则对象替换创建 和用法: /pattern/flags 先简单案例学习认识下replace能干什么 正则表达式构造函数: new RegExp("pattern"[,"fl

  • 通过好奇心,有没有办法用Java Stream编写它?

  • 我正在尝试执行以下操作(cb=CriteriaBuilder): 但我得到以下语法错误: 绑定不匹配:(表达式之间的泛型方法 是否可以转换表达式

  • 问题内容: 我想从表中选择一些行,这些行具有某些在编写存储过程时尚不知道的值。例如,在图书馆数据库中搜索特定类型的书籍: 凡我想成为一个运行,也许下一个,这取决于用户的选择。如何在运行时更改表达式? 不幸的是,我仍然有很多关于SQL的知识,并且不确定我是否在问一个有意义的问题。我将不胜感激! 问题答案: 这比您在SQL Server 2005中可能想像的要棘手(2008具有表值参数,这使其更容易)