五、运行应用程序
完成创建,配置,并保存你的新的应用程序,您就可以在嵌入Mule的服务器上运行(包括在Mule Studio中,作为捆绑下载的一部分)。
1、在Package Explorer窗格中,右键单击Basic Tutorial.mflow文件,然后选择Run As>Mule Application。 (如果您还没有保存,Mule会提示您现在保存。
2、Mule会立即显示运行进度齿轮,开始您的应用程序,并让它运行。当启动过程完成后,MuleStudio读取控制台会显示一条消息,启动应用程序“ cbr_tutorial ”。
六、使用应用
1、打开任何一个网页浏览器,然后导航至http://localhost:8081/?language=Spanish
2、您的浏览器会显示一条消息,上面写着 "Hola!"
3、检查你的Mule Studio控制台,会找到一条日志信息,上面写着,
INFO 2013-11-26 11:30:18,790 [[cbr_tutorial].connector.http.mule.default.receiver.03] org.mule.api.processor.LoggerMessageProcessor: The reply "Hola!" means "hello" in Spanish.
4、在你的浏览器的地址栏中,将url替换为 http://localhost:8081/?language=French,然后按回车。
5、你的浏览器会显示一条消息,上面写着"Bonjour!"
6、检查你的Mule Studio控制台,会找到一条日志信息,上面写着:
INFO 2013-11-26 11:36:38,826 [[cbr_tutorial].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: The reply "Bonjour!" means "hello" in French.
7、试试不使用任何参数来请求这个url:http://localhost:8081
8、你的浏览器会显示一条消息,上面写着"Hello!"
9、检查你的Mule Studio控制台,会找到一条日志信息,上面写着:
INFO 2013-11-26 11:36:53,709 [[cbr_tutorial].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: The reply "Hello!" means "hello" in English.
10、这最后一条日志消息不是非常有趣,也不能提供提供信息,你可以在额外的加分任务中修改它,如下。
七、编辑正在运行的应用
如果你在应用运行时进行了修改,并保存。Mule会自动重新部署你的应用,这通常被称为热部署
看到这个功能的作用,添加另一个日志构件到信息处理器链中,放在选择范围内的默认选项中。
2、您的浏览器会显示一条消息,上面写着 "Hola!"
3、检查你的Mule Studio控制台,会找到一条日志信息,上面写着,
INFO 2013-11-26 11:30:18,790 [[cbr_tutorial].connector.http.mule.default.receiver.03] org.mule.api.processor.LoggerMessageProcessor: The reply "Hola!" means "hello" in Spanish.
4、在你的浏览器的地址栏中,将url替换为 http://localhost:8081/?language=French,然后按回车。
5、你的浏览器会显示一条消息,上面写着"Bonjour!"
6、检查你的Mule Studio控制台,会找到一条日志信息,上面写着:
INFO 2013-11-26 11:36:38,826 [[cbr_tutorial].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: The reply "Bonjour!" means "hello" in French.
7、试试不使用任何参数来请求这个url:http://localhost:8081
8、你的浏览器会显示一条消息,上面写着"Hello!"
9、检查你的Mule Studio控制台,会找到一条日志信息,上面写着:
INFO 2013-11-26 11:36:53,709 [[cbr_tutorial].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: The reply "Hello!" means "hello" in English.
10、这最后一条日志消息不是非常有趣,也不能提供提供信息,你可以在额外的加分任务中修改它,如下。
七、编辑正在运行的应用
如果你在应用运行时进行了修改,并保存。Mule会自动重新部署你的应用,这通常被称为热部署
看到这个功能的作用,添加另一个日志构件到信息处理器链中,放在选择范围内的默认选项中。
... <choice doc:name="Choice"> <when expression="#[flowVars[‘language‘] == ‘Spanish‘]"> <set-payload value="Hola!" doc:name="Reply in Spanish"/> </when> <when expression="#[flowVars[‘language‘] == ‘French‘]"> <set-payload value="Bonjour!" doc:name="Reply in French"/> </when> <otherwise> <logger message="No language specified. Using English as a default." level="INFO" doc:name="Logger"/> <set-variable variableName="language" value="English" doc:name="Set Language to English"/> <set-payload value="Hello!" doc:name="Reply in English"/> </otherwise> </choice> ...
单击在画布下方控制台选项卡,以查看应用程序的运行日志,然后单击文件>保存保存您的应用程序。观察控制台,并注意Mule立即重新部署了你的应用。该日志显示的INFO消息指出,由于应用改变,所以重新部署。
为了测试出这种变化,并验证你的日志构件工作正常,返回到浏览器,并再次请求http://localhost:8081。检查Sudio的控制台日志,并寻找一个日志消息,写着:
INFO 2013-11-26 13:03:28,688
[[cbr_tutorial].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: No language specified. Using English as a default.
[[cbr_tutorial].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: No language specified. Using English as a default.
你修改了你的应用,并热部署成功!
八、添加一个子流程
你已经通过一个简单的, 有限的选项在你的应用中路由消息。在这个例子中,最复杂的路由选项只有三个消息处理器在一个链中,但在更复杂的应用中,可能有更多的消息处理步骤,可能带有附加的分支或路由逻辑。为了使您的代码有组织,将它打造成可重用的块,你可以移动处理的部分到独立的流程或子流程,并将这些流程或子流程与流程参考组件联系起来,在需要时调用它们。
流程和子流程之间的区别是什么?
流程和子流程都是由你链接几个单独的构件单元组成的,并控制接收,处理和路由消息。为了完成本教程的目标,你可以使用一个流程或子流程来完成下面的步骤,但在更高级的情况下,你可能需要一个或另一个。流程有更高级的配置选项,如改变处理策略和定义一个异常策略的能力。子流程总是有一个同步处理策略,它继承自被她引用的流程的异常策略。流程和子流程都使用流程引用组件调用。
编辑你的应用,添加一个子流程,移动你的选择路由器默认框中的选项到子流程中处理。要做到这一点,你需要两个构件块添加到你的应用中:
*一个流程参考组件,它调用应用中的另一个流程。在元素板的组件部分可以找到它
*一个子流程范围,这会在你的应用创建另一个流程,您可以参考使用上述流程参考组件。在元素板的作用域部分找到它。
使用Studio的可视化编辑器移动消息处理器到一个子流程是特别容易做到。
1、按住Shift,并在选择范围的默认框中,单击三个消息处理器,这样,它们三个会突出显示,然后右键单击并选择解压到.子流程。
2、Studio将提示你命名你的子流程。你可以给它随意起一个唯一的名称。本示例使用名称CBR_TutorialFlow2。
3、Studio在你的现有流程下创建子流程,以流程参考组件替换默认框中的内容。
您的完整的应用程序XML,一旦配置,应该如下所示:
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" 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/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd"> <flow name="CBR_TutorialFlow1" doc:name="CBR_TutorialFlow1"> <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/> <expression-filter expression="#[message.payload != ‘/favicon.ico‘]" doc:name="Expression"/> <set-variable doc:name="Set Language Variable" value="#[message.inboundProperties[‘language‘]]" variableName="language"/> <choice doc:name="Choice"> <when expression="#[flowVars[‘language‘] == ‘Spanish‘]"> <set-payload doc:name="Reply in Spanish" value="Hola!"/> </when> <when expression="#[flowVars[‘language‘] == ‘French‘]"> <set-payload doc:name="Reply in French" value="Bonjour!"/> </when> <otherwise> <flow-ref name="CBR_TutorialFlow2" doc:name="Flow Reference"/> </otherwise> </choice> <logger level="INFO" doc:name="Logger" message="The reply "#[message.payload]" means "hello" in #[flowVars[‘language‘]]."/> </flow> <sub-flow name="CBR_TutorialFlow2" doc:name="CBR_TutorialFlow2"> <logger message="No language specified. Using English as a default." level="INFO" doc:name="Logger"/> <set-variable variableName="language" value="English" doc:name="Set Language to English"/> <set-payload value="Hello!" doc:name="Reply in English"/> </sub-flow> </mule>
保存你的项目,并观察控制台,因为它重新部署你已经改变的应用。
重复上述步骤中的使用的应用程序,上面的。
你会注意到,结果和上次相比并没有任何变化。 组织这三个消息处理器到一个子流程,然后用流程引用组件调用该流程并没有对应用的功能造成影响。然而,正如你将在下面的附加任务部分看到的,分离出分支处理部分,使之成为子流程可以帮助你的代码保持(和Studio画布上的可视化表示形式)整齐,易于阅读。有关如何使用多个流程或子流程来组织你的应用的一些实际的使用案例,去看一些中等和高复杂性的Mule例子,如在Foreach中处理和路由选择实例。
今天累了,先到这吧,改天继续
保存你的项目,并观察控制台,因为它重新部署你已经改变的应用。
重复上述步骤中的使用的应用程序,上面的。
你会注意到,结果和上次相比并没有任何变化。 组织这三个消息处理器到一个子流程,然后用流程引用组件调用该流程并没有对应用的功能造成影响。然而,正如你将在下面的附加任务部分看到的,分离出分支处理部分,使之成为子流程可以帮助你的代码保持(和Studio画布上的可视化表示形式)整齐,易于阅读。有关如何使用多个流程或子流程来组织你的应用的一些实际的使用案例,去看一些中等和高复杂性的Mule例子,如在Foreach中处理和路由选择实例。