- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我对 Mulesoft 还很陌生,而且我已经参加了基础类(class)。
我想我可以让我的开发人员更轻松,并为他们创建一个模板来开始开发。一切都很顺利,直到我开始异常处理。下面的选择异常策略应该使用 boolean 值 pagerDuty.active 来确定是否将异常数据 POST 到 Pager Duty 服务。我意识到我的 JSON Body 还不正确,但即使如此,我也无法理解为什么 Web 服务会因 404 错误而失败,并且有效负载会被损坏。以下是在 global.xml 中定义的全局元素:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:secure-property-placeholder="http://www.mulesoft.org/schema/mule/secure-property-placeholder"
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:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:apikit="http://www.mulesoft.org/schema/mule/apikit" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/secure-property-placeholder http://www.mulesoft.org/schema/mule/secure-property-placeholder/current/mule-secure-property-placeholder.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/apikit http://www.mulesoft.org/schema/mule/apikit/current/mule-apikit.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">
<context:property-placeholder location="${env}.properties"/>
<http:listener-config name="httpListenerConfig" host="0.0.0.0" port="${http.port}" doc:name="HTTP Listener Configuration"/>
<http:request-config name="HttpConfiguration_GetTheBearerToken" host="${accountTranslation.host}" port="${accountTranslation.port}" basePath="/" doc:name="HttpConfiguration_GetTheBearerToken"/>
<http:request-config name="HttpConfiguration_TranslateAccountNumbers" host="${accountTranslation.host}" port="${accountTranslation.port}" basePath="/api" doc:name="HTTP Request Configuration">
<http:raml-api-configuration location="https://anypoint.mulesoft.com/apiplatform/repository/v2/organizations/95208566-ca0c-48df-8e18-22377534fd5e/public/apis/5521343/versions/103885/files/root"/>
</http:request-config>
<db:generic-config name="ERP_Integration_Database_Connector_Configuration" url="jdbc:sqlserver://${sqlServer.ip}:${sqlServer.port};databaseName=${sqlServer.database};user=${sqlServer.user};password=${sqlServer.password}" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" doc:name="Generic Database Configuration"/>
<http:request-config name="HttpRequest_PagerDuty" host="${pagerDuty.host}" port="${pagerDuty.port}" basePath="/" doc:name="HTTP Request Configuration" protocol="HTTPS"/>
</mule>
下面是异常策略的定义:
<choice-exception-strategy name="templateChoice_Exception_Strategy">
<catch-exception-strategy when="#[${pagerDuty.active}]"
doc:name="Catch Exception Strategy with Pager Duty">
<set-variable variableName="exceptionPayload"
value="#[groovy:message.getExceptionPayload()]" doc:name="Get the exception payload" />
<choice doc:name="Choice">
<when expression="#[flowVars.exceptionPayload != null]">
<set-variable variableName="message"
value="#[exceptionPayload.getMessage()]" doc:name="Get the message" />
<set-variable variableName="stackTrace"
value="#[exceptionPayload.info.get("Element")]"
doc:name="Get the Stack Trace" />
</when>
<otherwise>
<set-variable variableName="message" value="Unknown exception"
doc:name="Default message" />
<set-variable variableName="stackTrace"
value="The stack trace was not available" doc:name="Default stack trace" />
</otherwise>
</choice>
<set-variable variableName="serviceKey" value="${pagerDuty.serviceKey}" doc:name="Variable"/>
<set-payload
value="#[{"service_key": "flowVars.serviceKey", "event_type": "trigger", "incident_key": "${workflowName}", "description": "#[flowVars.message]", "details": { "Failure Context": "${env}", "Stack Trace": "#[flowVars.stackTrace]" }}] "
mimeType="application/json" doc:name="Set the JSON Body" encoding="US-ASCII" />
<http:request config-ref="HttpRequest_PagerDuty" path="${pagerDuty.basePath}"
method="POST" doc:name="Post to Pager Duty" />
<dw:transform-message metadata:id="0c07879b-66b0-4a52-879b-2635c3c92ed5"
doc:name="Transform Message">
<dw:input-payload />
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
Status: payload.status,
Message: payload.message,
IncidentKey: payload.incident_key
}
]]></dw:set-payload>
</dw:transform-message>
<choice doc:name="Choice">
<when expression="#[payload.Status == "success"]">
<logger message="Exception logged for #[payload.IncidentKey]"
level="DEBUG" doc:name="Logger" />
</when>
<otherwise>
<logger
message="Failed to log exception Status: #[payload.Status] Message: #[payload.Message] Incident: #[payload.IncidentKey]"
level="ERROR" doc:name="Logger" />
</otherwise>
</choice>
</catch-exception-strategy>
<catch-exception-strategy doc:name="Catch Exception Strategy no Pager Duty"
when="#[${pagerDuty.active} == false]">
<logger
message="Exception: #[groovy:message.getExceptionPayload().getRootException.getMessage()]"
level="ERROR" doc:name="Logger" />
</catch-exception-strategy>
</choice-exception-strategy>
有人能看出这有什么明显的问题吗?我根本无法让它工作,这就是我引发异常来测试它的方法:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:apikit="http://www.mulesoft.org/schema/mule/apikit" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw"
xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:http="http://www.mulesoft.org/schema/mule/http" 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.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/apikit http://www.mulesoft.org/schema/mule/apikit/current/mule-apikit.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
<flow name="mainFlow">
<http:listener config-ref="httpListenerConfig" path="/testMe" doc:name="HTTP"/>
<flow-ref name="GetBearerToken" doc:name="GetBearerToken"/>
<db:select config-ref="ERP_Integration_Database_Connector_Configuration" doc:name="Get the accounts to process">
<db:parameterized-query><![CDATA[SELECT DISTINCT
CASE
WHEN DynamicsCompanyNumber = 2 THEN 'TVI'
WHEN DynamicsCompanyNumber = 15 THEN 'SRU'
WHEN DynamicsCompanyNumber = 16 THEN 'SAP'
WHEN DynamicsCompanyNumber = 18 THEN 'VVSP'
WHEN DynamicsCompanyNumber = 21 THEN 'UNIQ'
WHEN DynamicsCompanyNumber = 40 THEN 'UNIC'
WHEN DynamicsCompanyNumber = 42 THEN 'SWMC'
WHEN DynamicsCompanyNumber = 43 THEN 'ADSU'
WHEN DynamicsCompanyNumber = 44 THEN 'ADSC'
END CompanyName
,Acct2, Acct3, Acct4, '' LedgerDimension
FROM dbo.GLTransactions glt WITH (NOLOCK)
INNER JOIN dbo.GLBatch gl WITH (NOLOCK) ON gl.GLBatchID = glt.GLBatchID
UNION
SELECT DISTINCT
CASE
WHEN DynamicsCompanyNumber = 2 THEN 'TVI'
WHEN DynamicsCompanyNumber = 15 THEN 'SRU'
WHEN DynamicsCompanyNumber = 16 THEN 'SAP'
WHEN DynamicsCompanyNumber = 18 THEN 'VVSP'
WHEN DynamicsCompanyNumber = 21 THEN 'UNIQ'
WHEN DynamicsCompanyNumber = 40 THEN 'UNIC'
WHEN DynamicsCompanyNumber = 42 THEN 'SWMC'
WHEN DynamicsCompanyNumber = 43 THEN 'ADSU'
WHEN DynamicsCompanyNumber = 44 THEN 'ADSC'
END CompanyName
,OffsetAcct2, OffsetAcct3, OffsetAcct4, '' LedgerDimension
FROM dbo.GLTransactions glt WITH (NOLOCK)
INNER JOIN dbo.GLBatch gl WITH (NOLOCK) ON gl.GLBatchID = glt.GLBatchID]]></db:parameterized-query>
</db:select>
<set-variable variableName="nullRef" value="#[null]" mimeType="text/plain" doc:name="Set var to null"/>
<expression-component doc:name="induce null ref"><![CDATA[#[flowVars.nullRef[0]] ]]></expression-component>
<flow-ref name="GetTheDistinctAccounts" doc:name="GetTheDistinctAccounts"/>
<logger message="Processed #[sessionVars.accountMap.size()] records and ignored #[sessionVars.accountsNotMapped.size()] records" level="INFO" doc:name="Logger"/>
<set-payload value="#['Not Mapped records:' + sessionVars.accountsNotMapped + 'Mapped records:' + sessionVars.accountMap.values()]" mimeType="text/plain" doc:name="Set Payload"/>
<exception-strategy ref="templateChoice_Exception_Strategy" doc:name="Reference Exception Strategy"/>
</flow>
</mule>
非常感谢任何帮助,坦率地说,Mulesoft 文档在这方面非常缺乏!
最佳答案
我相信问题出在这行代码上:
<catch-exception-strategy when="#[${pagerDuty.active}]"
您正在尝试根据 boolean 值捕获异常, boolean 值的结果不能被视为异常。
仅当流程中发生异常时,流程才会转移到任何异常策略。如果没有异常则流程的执行不会转移到捕获异常策略。 所以你需要像这样定义你的代码: <catch-exception-strategy when="#[exception.causedBy("the exception")]"
捕获异常
关于java - Mulesoft 3.8.1中的这个选择异常策略有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40371422/
我们在设计中心(Anypoint Platform - Mulesoft)中创建了多个 RAML 文件。我们在团队中工作,因此多个用户可以通过创建单独的分支来编辑该 RAML 文件。现在我想将这些分支
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 3 年前。 Improve t
我成功地从我的 Alfresco ECM 实例中检索记录。当我尝试将它们插入 MongoDb 时,我得到以下信息: 无法从“com.mulesoft.weave.mule.WeaveMessagePr
我正在用 mule studio 开发一个应用程序,我需要使用“选择”组件,但我想评估的不是负载中包含的消息属性,而是属性文件中包含的变量,如下所示:
我无法从SYS Api(try(插入db)-> ON ERROR PROPAGATE-> RAISE ERROR(原始错误-DB:Connectivity)和(customer Error-APPCu
好吧,我对整个 mulesoft 很陌生。我目前正在做的是,我得到了一个 mulesoft 流程,它首先授权我使用 Linkedin,然后获取我的基本个人资料详细信息。我知道想要做的是在我的 Reac
在转换消息中,我正在尝试编写一个 MongoDB 查询。查询需要像这样的正斜杠: {Event: { $in: [ /NOVEMBER/, /OUTDOORS/]}} 我目前正在转换消息中编写此内容:
使用MuleSoft进行一些数据转换。它和 Java 语言本身都相对较新。经过多次尝试谷歌搜索后,我想我应该在这里问。 从 11g Oracle 数据库中提取数据。我有一个数据库查询被发送到 Mule
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我想在 Mulesoft 流程中做出决定,并查看了 Choice Flow Control。我的问题是,如果条件为真,我想做某事,如果条件为假,我什么都不做,例如: if (condition ==
我不知道如何在 Mulesoft 中使用 Java Transformer。我基本上想获取一个字符串并将其转换为 URL,但我不知道如何使用 Java 方法或任何东西。 我做错了什么?我怎样才能调用我
我正在尝试弄清楚如何使用 Mulesoft 中的 NetSuite 连接器从返回的搜索负载中获取值。 每当我使用此连接器时,它都会返回 List> 的输出,由于这种类型的输出,我不确定是否有办法使用
我有一个 Python 脚本,在 PyCharm 中运行时可以成功将 JSON 转换为 CSV。当我将该 Python 脚本移动到 MuleSoft 中的 Python Transformer 中时,
我是 mule 的新手,所以请多多包涵。我在评估进入数据库连接器的 mule 表达式时遇到问题。在调试时,我注意到我的表达式有空值,因此导致了错误。我需要一个 map 结果对象,这样我就可以将它插入数
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试在 Bamboo 中使用 maven 构建 mulesoft 代码。Build 成功,但现在出现如下错误。我使用的是 Bamboo 6.5.0 和 jdk 1.8。使用 Maven 3。错误
有没有办法断言流引用在 Mulesoft 中引发了异常?搜索谷歌和文档没有发现任何东西。 基本上,我正在测试一个子流,如果某个项目存在,则会引发 NotFound 异常,但 MUnit 在收到错误时会
刚开始使用 MuleSoft,在将转换消息添加到消息流中时,我收到错误“当前类路径中存在一些错误”。我刚刚完成 Anypoint Studio 的设置,因此这可能是我在某处遗漏的配置步骤。 DW Sc
所以,我对 Mulesoft 还很陌生,而且我已经参加了基础类(class)。 我想我可以让我的开发人员更轻松,并为他们创建一个模板来开始开发。一切都很顺利,直到我开始异常处理。下面的选择异常策略应该
我正在编写我的第一个 Mulesoft 连接器。我正在尝试实现@ConnectionManagementStrategy。我引用了: https://developer.mulesoft.com/do
我是一名优秀的程序员,十分优秀!