1、Flow:
流,也就是消息流是由接收消息,处理消息,为消息选择路径等一系列组件组成的。它是mule中的核心思想,十分重要。以下是一个简单flow的例子以及代码:
具体细节后面会有讲的。
流中可以依据功能划分为三大类:
Message processor(消息处理器):对消息进行加工处理,如filter,transformer,router等。
Message source(消息源):flow开始的地方,接收消息进入流中,触发处理器,如:Inbound/Outbound Endpoints。
Component(组件):主要实现一些特殊的功能,mule studio中提供的完成不了的。
2、Mule Message:
消息,是通过整个应用程序可能流经很多flow。它有两个重要的组成部分:
Message header:包含该消息的基本的元数据。元数据是由属性(properties)和变量(variables)组成,元数据可以为我们提供有用的信息,譬如告诉我们这个消息去向哪里。元数据都有一个特定的范围来规定它的生命周期。
属性(properties)的范围有两种:
Inbound properties:在消息源头被创建,不能被用户设置和修改。
Outbound properties:可以被用户配置,outbound属性如果随着一个message从一个Flow的outbound endpoint(出口端)流近另一个Flow的Inbound endpoint(入口端)可以变成Inbound properties。在一些特殊情况,如新的Flow是flow-ref而不是transport的话,范围还是没有改变。
变量(variables)是用户自定义的元数据,也有两种范围:
Flow variables:仅存在当前flow中。
Session variables:存在这应用程序中。
Message payload:是你真正要在应用程序中传输的数据,消息头中的元数据只是起到更好的表明要传输的数据,而payload才是你真正要传输的数据。
工作环境:
Canvas:是用来布局各个组件的,你可以在右上角搜索需要的组件名或者根据分类查找。
下面可以切换三种视图,message flow:就是当前视图、global elements:定义的全局元素、configuration xml:xml编辑的视图。
Package explorer:flows文件中存放的.mflow文件,就是canvas中显示的文件。
Outline:缩略图。Console:控制平台。
全局元素:
你可以定义元素为全局的,这样可以在多处调用,定义全局有两种方法,一种在global elements中直接添加一个,选择你要添加的元素以及相应属性。另一种是在xml编辑环境编写。Note:全局元素要有name属性,这样才可以被别处调用。通过<元素名-ref name=””>标签被调用。
Visual editor(视图编辑):
中间是画布,用来将各种元素拖拽到这里布局配置,右侧是提供的各个元素,分成了八类,依次是Endpoints, Scopes, Components, Transformers, Filters, Flow control, Error handling, Cloud connectors。如果你想使用哪个元素,直接拖拽到画布上,双击即可以打开配置面板,配置相应属性。
以下会分开讲各类元素功能以及相应配置,视图编辑和xml编辑在一起讲,最后会有综合在一起的例子。
3、Endpoints(端点):
用来接收和发送数据,负责连接外部资源并发送数据。分为Inbound endpoints输入端点,Outbound endpoints输出端点。端点需要关联一个connector连接器完成输入输出。如果没有配置连接器系统会默认配置一个。
我们创建一个例子,右侧拖拽一个http端点到画布上,再在filter上搜索echo,找到在components中,拖拽跟http端点放在一起。Echo是一个输出组件,如图:
双击http端点,出现配置面板如图。
这里有五个选项标签,
General中可以配置显示名称,默认为http。
信息交换模式,有one-way和request-response。单向和请求响应。
Host,port,path等。
Advanced中http outbound在这里会比inbound多一个是否重定向的选项。
我们什么也不需要配置,直接ok.
右键点击flows文件夹中mflow文件,选择作为mule application程序运行。
在浏览器中打http://localhost:8081/任意字符,回车。就会在浏览器中出现该字符。
看一下xml配置文件:
port="8081" doc:name="HTTP"/>
首先定义了一个流,命名为sudy_muleFlow1,显示名为sudy_muleFlow1。在流中我们首先定义了一个http的inbound-endpoint,设置了交换模式为请求-响应,主机为localhost,端口号为8081,显示名为HTTP。接着是输出组件echo。这就构成了一个最基本的流。这里没有定义连接器,系统会提供一个默认的给它。