标签: mule-studio

如何读取返回JSON对象的REST服务,并使用Mule ESB,Mule Studio将其存储到PostgreSQL中

所以我有一个基于REST的服务,托管在

http://localhost:35798/RestServiceImpl.svc/json/567
Run Code Online (Sandbox Code Playgroud)

如果我查询,我得到的结果如下:

{"JSONDataResult":"You requested product 567"}
Run Code Online (Sandbox Code Playgroud)

我需要将整个JSON数据存储到PostgreSQL表中:

CREATE TABLE "JsonTable"
(
  "StoreJsonObject" json
)
Run Code Online (Sandbox Code Playgroud)

如果我想解析值字段,即"你请求的产品567",程序工作(这里我使用的是一个列类型为文本的不同表):

<jdbc:postgresql-data-source name="PostgreSQL_Data_Source" user="username" password="pwd" url="jdbc:postgresql://localhost:5432/TestDB" transactionIsolation="UNSPECIFIED" doc:name="PostgreSQL Data Source"/>
<jdbc:connector name="PostgreSQL_Connector" dataSource-ref="PostgreSQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
    <jdbc:query key="InsertRecord" value="INSERT INTO &quot;AnotherJSonTable&quot;(&quot;StoreJsonObject&quot;) VALUES (#[message.payload])"/>
</jdbc:connector>
<flow name="testRestFlow1" doc:name="testRestFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:8082/index.html"  doc:name="HTTP"/>
    <http:rest-service-component httpMethod="GET" serviceUrl="http://localhost:35798/RestServiceImpl.svc/json/567">
    </http:rest-service-component>
    <json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
    <expression-transformer expression="#[message.payload.JSONDataResult]" doc:name="Expression"/>
    <jdbc:outbound-endpoint exchange-pattern="one-way" queryKey="InsertRecord" queryTimeout="-1" connector-ref="PostgreSQL_Connector" doc:name="Database"/>
</flow>
Run Code Online (Sandbox Code Playgroud)

但是如何存储整个JSON对象({"JSONDataResult":"你请求的产品567"}).
我需要在"表达式变换器"中进行哪些更改?

如果我做:

<jdbc:query key="InsertRecord" value="INSERT INTO &quot;JsonTable&quot;(&quot;StoreJsonObject&quot;) VALUES (#[message.payload])"/>

<expression-transformer expression="#[message.payload]" doc:name="Expression"/>
Run Code Online (Sandbox Code Playgroud)

我收到例外: …

postgresql json mule mule-studio

4
推荐指数
1
解决办法
4849
查看次数

Mule 3.4:java.lang.ClassNotFoundException:com.ibm.mq.jms.MQConnectionFactory

我试图使用WMQ作为入站端点,我已从示例目录中导入样本.

当我运行流程时,我收到错误,因为找不到类.

我将所需的jar文件添加到构建路径,但仍然收到错误.

请告诉我,问题是什么.

nested exception is java.lang.NoClassDefFoundError: com/ibm/mq/jms/MQConnectionFactory
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.mule.config.spring.MuleApplicationContext.loadBeanDefinitions(MuleApplicationContext.java:113)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
    at org.mule.config.spring.SpringRegistry.doInitialise(SpringRegistry.java:89)
    at org.mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:109)
    ... 13 more
Caused by: java.lang.NoClassDefFoundError: com/ibm/mq/jms/MQConnectionFactory
    at com.mulesoft.mule.transport.wmq.WebSphereMQConnector.<clinit>(WebSphereMQConnector.java:42)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:266)
    at org.apache.commons.lang.ClassUtils.getClass(ClassUtils.java:629)
    at org.apache.commons.lang.ClassUtils.getClass(ClassUtils.java:677)
    at org.apache.commons.lang.ClassUtils.getClass(ClassUtils.java:660)
    at org.mule.config.spring.parsers.assembly.DefaultBeanAssembler.methodExists(DefaultBeanAssembler.java:568)
    at org.mule.config.spring.parsers.assembly.DefaultBeanAssembler.bestGuessName(DefaultBeanAssembler.java:537)
    at org.mule.config.spring.parsers.assembly.DefaultBeanAssembler.extendBean(DefaultBeanAssembler.java:116)
    at org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser.processProperty(AbstractMuleBeanDefinitionParser.java:204)
    at org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser.doParse(AbstractMuleBeanDefinitionParser.java:424)
    at org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser.parseInternal(AbstractMuleBeanDefinitionParser.java:297)
    at org.mule.config.spring.parsers.generic.MuleOrphanDefinitionParser.parseInternal(MuleOrphanDefinitionParser.java:41)
    at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:59)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
    at org.mule.config.spring.MuleHierarchicalBeanDefinitionParserDelegate.parseCustomElement(MuleHierarchicalBeanDefinitionParserDelegate.java:88)
    at org.mule.config.spring.MuleHierarchicalBeanDefinitionParserDelegate.parseCustomElement(MuleHierarchicalBeanDefinitionParserDelegate.java:130)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:190)
    at org.mule.config.spring.MuleBeanDefinitionDocumentReader.parseBeanDefinitions(MuleBeanDefinitionDocumentReader.java:55)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
    at …
Run Code Online (Sandbox Code Playgroud)

mule mule-studio

4
推荐指数
1
解决办法
5132
查看次数

mule从元素文件开始发现无效内容:inbound-endpoint

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:context="http://www.springframework.org/schema/context"  xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:quartz="http://www.mulesoft.org/schema/mule/quartz" 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" version="EE-3.4.1" 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/quartz http://www.mulesoft.org/schema/mule/quartz/current/mule-quartz.xsd
            http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
            http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.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/smtp http://www.mulesoft.org/schema/mule/smtp/current/mule-smtp.xsd">

     <file:connector name="ABCFile" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
     <flow name="abc">
      <quartz:inbound-endpoint jobName="ABCQuartz" repeatInterval="5000"  responseTimeout="10000" connector-ref="ABCQuartz" doc:name="ABC" repeatCount="2">
        <quartz:event-generator-job groupName="creativeworld" jobGroupName="creativeworld">
            <quartz:payload>Creative World Quartz Scheduler.</quartz:payload>
        </quartz:event-generator-job>
    </quartz:inbound-endpoint>
    <scripting:component doc:name="Python">
        <scripting:script engine="jython"/>
    </scripting:component>

    <set-payload value="${COMMAND_PATH}#[' ']${DB_NAME}${OUTPUT_FILE}${URL}" doc:name="Transmission Commands"/>
    <set-payload value="#[message.payload]#[' -outputpath ']${OUTPUT_FILE}${FILE_NAME}-#[server.dateTime.format('${DATETIME_FORMAT}')]${FILE_TYPE}" doc:name="Output Config"/>
    <logger message="#[payload]" level="INFO" doc:name="Display Output"/>
    <invoke object-ref="transmission" method="invoke" methodArgumentTypes="java.lang.String" methodArguments="#[payload]" name="transmissionAPI"/> …
Run Code Online (Sandbox Code Playgroud)

mule mule-studio

4
推荐指数
1
解决办法
8620
查看次数

如何在Data weaver中检查null条件:Mule

这是我的xml,首先我需要检查'RecordsEntries'不应该是'null',然后RecordEntry不应该null跟随映射代码

<?xml version="1.0" encoding="UTF-8"?>
<Records>
  <storenumber />
  <calculated>false</calculated>
  <subTotal>12</subTotal>
 <RecordsEntries>
   <RecordEntry>
     <deliverycharge>30.0</deliverycharge>
     <entryNumber>8</entryNumber>
     <Value>true</Value>
  </RecordEntry>
  <RecordEntry>
    <deliverycharge>20.0</deliverycharge>
    <entryNumber>7</entryNumber>
    <Value>false</Value>
  </RecordEntry>
</RecordsEntries>
 <RecordsEntries>
    <RecordEntry>
      <deliverycharge>30.0</deliverycharge>
      <entryNumber>8</entryNumber>
      <Value>false</Value>
    </RecordEntry>
 </RecordsEntries>
</Records>
Run Code Online (Sandbox Code Playgroud)

尝试多个场景也使用when条件检查,但某处缺少括号或正确的格式

    orders: {
    order: {
  StoreID: payload.Records.storenumber,
  Total: payload.Records.calculated,
 (( payload.Records.RecordsEntries.*RecordEntry ) map {
    IndividualEntry: {
    Number:$.entryNumber,
    DeliverCharge:$.deliverycharge
    }
  } when ( payload.Records.RecordsEntries != null and payload.Records.RecordsEntries.*RecordEntry !=null))}
}
Run Code Online (Sandbox Code Playgroud)

像失踪一样得到错误).通过在第一个循环内直接检查null条件来尝试其他方式得到了错误,例如"无法将数组强制转换为布尔值".请建议.谢谢.

mule mule-studio mule-el mule-component

4
推荐指数
1
解决办法
1万
查看次数

如何在Mule Dataweave转换中使用正则表达式替换特殊字符?

假设我有一个员工详细信息的XML文件,例如id,name和address,现在我想将它转换为JSON文件,在谈话之前我想用地址字段中的空格替换指定的特殊字符( - ,/). json文件

下面是我的Dataweave转换代码

%dw 1.0
%output application/json
---
payload map ((payload01 , indexOfPayload01) -> {
    Id: payload01 .d as :string,
    Name: payload01.Name as :string, 
    Address: payload01.Address replace /(?)/ with " "
})
Run Code Online (Sandbox Code Playgroud)

那么我应该在replace /()/函数中写什么来替换特殊字符, -/空格

java mule mule-studio anypoint-studio dataweave

4
推荐指数
1
解决办法
9515
查看次数

splitBy regex 问题 dataweave 2.0

我正在尝试使用 dataweave 2.0 中的 splitBy 拆分点符号字符串,使用简单的正则表达式来避免拆分转义字符串,在线测试正则表达式按预期工作,但 dataweave 函数输出不同的结果。

'root.sources.data.`jenkins.branch.BranchSource`.source.traits' splitBy(/[^\.`]+|"([^`]*)"|`([^`]*)`/)
Run Code Online (Sandbox Code Playgroud)

输出:

["", ".", ".", ".", ".", "." ]
Run Code Online (Sandbox Code Playgroud)

预期的:

["root", "sources", "data", "`jenkins.branch.BranchSource`", "source, "traits"]
Run Code Online (Sandbox Code Playgroud)

mule-studio dataweave

4
推荐指数
1
解决办法
155
查看次数

在Eclipse中创建Mule项目

我已经开始与骡子合作了.我正在与Mule Studio合作.这看起来不错.但是当我想在Eclipse中创建一个Mule项目时,我很震惊.请建议我如何在Eclipse中创建Mule项目.

eclipse mule mule-studio

3
推荐指数
1
解决办法
7771
查看次数

MULE Studio和MULE ESB有什么区别?

我是骡子柔软的新人.我不知道mule studio和mule esb有什么区别.两种软件看起来都一样.mule studio是图形表示,我们也可以通过代码生成.我怎么能区分两者.什么是mule esb的用途.我们可以在哪里使用mule esb.我们如何使用这种骡子esb.我需要mule esb和mule studio之间的确切区别.哪一个最适合整合.

mule mule-studio mule-el mule-module-jpa

3
推荐指数
1
解决办法
2244
查看次数

Mule Groovy 脚本文件位置可在 Studio 中使用,但不能独立使用

我有一个 groovy 脚本转换器,它位于 src\main\resources 下存储的文件中。 我的项目在 Mule Studio 中按预期工作。当我将它部署到独立的 Mule 服务器时,它无法部署,因为它找不到相关文件位置。无法从类路径或文件系统加载“src\main\resources\myTransform.groovy”
<scripting:transformer doc:name="myXform">
<scripting:script engine="Groovy" file="src\main\resources\myTransform.groovy">
</scripting:script>
</scripting:transformer>


我有几个问题:
- 这是保持我的 groovy 转换的合适位置吗?
- 我该如何解决这个问题,因为在部署版本中 src\main\resources 存在于 META-INF 下?
- 如果它是一个类路径设置,那么我应该更改什么来修复它(.classpath、独立服务器上的系统变量等)?

谢谢你。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
好的,我重新安装了 Mule Studio(版本:3.5.0 Build Id:201312091746)并从头开始构建(使用 Maven)一个 vanilla 项目:
`

<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" 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:spring="http://www.springframework.org/schema/beans" version="EE-3.4.1"
    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/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd">
    <flow name="gpFlow1" doc:name="gpFlow1">
        <file:inbound-endpoint path="H:\DCH_ESB_Test\InMuleTest" responseTimeout="10000" doc:name="FileIn"/>
        <byte-array-to-string-transformer doc:name="Byte Array to String"/>
        <scripting:transformer doc:name="Groovy">
            <scripting:script engine="Groovy" file="myTransform.groovy"/>
        </scripting:transformer>
        <file:outbound-endpoint path="H:\DCH_ESB_Test\OutMuleTest" responseTimeout="10000" …
Run Code Online (Sandbox Code Playgroud)

mule mule-studio

3
推荐指数
1
解决办法
3157
查看次数

如何检查Mule MEL中是否存在会话变量?

我需要检查会话变量是否存在.我可以检查它是否存在并设置为变量:

<when expression="#[sessionVars['foo'] == 'true']">
Run Code Online (Sandbox Code Playgroud)

但是我想要这样的东西:

<when expression="#[sessionVars['foo']]">
-- or --
<when expression="#[Exists(sessionVars['foo'])]">
Run Code Online (Sandbox Code Playgroud)

因为,有时'foo'没有赋值变量.

有任何想法吗?

variables mule mel mule-studio

3
推荐指数
1
解决办法
4957
查看次数