所以我有一个基于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 "AnotherJSonTable"("StoreJsonObject") 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 "JsonTable"("StoreJsonObject") VALUES (#[message.payload])"/>
<expression-transformer expression="#[message.payload]" doc:name="Expression"/>
Run Code Online (Sandbox Code Playgroud)
我收到例外: …
我试图使用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) <?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) 这是我的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条件来尝试其他方式得到了错误,例如"无法将数组强制转换为布尔值".请建议.谢谢.
假设我有一个员工详细信息的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 /()/函数中写什么来替换特殊字符, -和/和空格?
我正在尝试使用 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合作.这看起来不错.但是当我想在Eclipse中创建一个Mule项目时,我很震惊.请建议我如何在Eclipse中创建Mule项目.
我是骡子柔软的新人.我不知道mule studio和mule esb有什么区别.两种软件看起来都一样.mule studio是图形表示,我们也可以通过代码生成.我怎么能区分两者.什么是mule esb的用途.我们可以在哪里使用mule esb.我们如何使用这种骡子esb.我需要mule esb和mule 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) 我需要检查会话变量是否存在.我可以检查它是否存在并设置为变量:
<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'没有赋值变量.
有任何想法吗?
mule-studio ×10
mule ×9
dataweave ×2
mule-el ×2
eclipse ×1
java ×1
json ×1
mel ×1
postgresql ×1
variables ×1