MuleSoft系列(四)-用Anypoint Studio创建一个Mule应用程序

在MuleSoft中,创建Application的方式有三种

  • Flow Designer:用于构建连接系统并使用API的集成应用程序的Web应用程序
  • API Designer:用于设计,记录和模拟API的Web应用
  • Anypoint Studio:桌面IDE,用于实现API和构建集成应用程序

那么来看看如何使用Anypoint Studio创建一个Mule应用程序:

打开Anypoint Studio,新建一个Mule Project,输入项目名称:BolgTest

在创建Mule Project的界面上,可以看到整个界面核心分为:包资源管理器(Package Explorer)、画布(Canvas)、mule 组件库(Mule Palette)、控制台(Console)

  • 包资源管理器:项目文件夹
  • 画布:Anypoint studio使用的组件都是直接拖拽搞定的,所以操作界面被称为画布
  • Mule 组件库:Mule Palette直译过来应该是Mule 调色板,不过这东西本质上是很多Mule的组件,拖到画布上就能使,所以我翻译成组件库
  • 控制台:输出日志,查看组件详细信息的区域

MuleSoft出的这个Anypoint Studio一般来说不需要我们强编码,他的体系更多的是一种配置化的实现,所有的组件都直接拖到画布上进行配置,从这一点来说,很类似.Net的开发模式,甚至更加简单,那么我们先拖一个HTTP的组件到画布上,命名为:TestHttpListener

然后点击 Basic Setting → 加号,打开 Global Element Properties窗口,确认参数配置是否为下列值

  • Host: 0.0.0.0
  • Port:8081

点击OK,然后在Path 上填个测试的接口地址,比如 /test,最后Apply Changes.

 接下来配置输出内容,从Mule 组件库拖一个Set Payload组件到画布上

修改Set Payload组件的属性,设置为 Test Message

Tips: Set Payload的属性,设置Value的时候有两种模式,一种是公式类型,也就是动态字段,一种就是文字类型,这里使用文字模式作为测试效果

我们可以启动这个项目,右键画布,选择 Run Project,此时会看到控制台开始输出启动日志,也就是说这个Mule应用程序已经成功启动

打开接口测试工具,选择Get请求,地址为:http://localhost:8081/test,测试接口请求结果会发现,返回信息是我们输入的 ”Test Message“

OK,在上面的Demo搞定后,我们来尝试链接MySQL数据库,这里会借助MuleSoft官方的测试接口进行

回到Anypoint Studo,关闭项目,然后右键删除Set Payload组件,在Mule组件库里面找Database,选择Select 类型,然后拖到画布上

 

接下来配置MYSQL的数据库连接信息,点击Basic Setting 右侧的加号,打开 Global Element Properties属性窗口,将Connection 设置为MySQL Connection,然后是数据库账号信息,分别如下:

  • host: "mudb.learn.mulesoft.com"
  • port: "3306"
  • user: "mule"
  • password: "mule"
  • database: "training"

接着下载MySQL JDBC驱动程序,点击Configure按钮,选择Add Maven dependency,搜索mysql- ,在显示列表中选择 mysql:mysql-connector-java,点击Edit  selected, 再点击Finish,然后等待MySQL JDBC驱动器的下载

下载完成后,回到Global Element Properties,点击Test Connection按钮,应该会得到一个连接成功的信息,然后就可以关闭弹窗,关闭Global Element Properties窗口,回到主界面

Tips: 如果链接数据库失败,请确认3306端口的访问有没有被占用,或者被防火墙挡住

完成对数据库的链接配置后,我们写入SQL语句:SELECT * FROM american

此时如果你直接通过接口测试工具去访问接口,会得到一个异常,这是因为还没有配置数据输出组件

在Mule组件库中拖一个名为Transform Message的组件到画布上,在Transform Message的属性视图中,我们修改输出类型为output application/json,并将{}替换为payload,保存

 然后重新启动Mule应用程序,通过接口测试工具访问接口Test,可以看到响应状态200,并返回对应的JSON信息

根据之前在Anypoint平台的操作,接下来我们要尝试的就是将接口传递回来的信息转义成其他结构

点击blogtestFlow,在属性视图中切换到Metadata,点击Add metadata, 选择Output:Payload,点击编辑,在新的窗口点击Add按钮,设置Type Id为:american_flights_json,选择Type为JSON,选择Schema为Example,然后打开示例文件american-flights-example.json,点击Select

american-flights-example.json 文件内容如下:

[{
    "ID": 1,
    "code": "ER38sd",
    "price": 400.00,
    "departureDate": "2016/03/20",
    "origin": "MUA",
    "destination": "SFO",
    "emptySeats": 0,
    "plane": {
        "type": "Boeing 737",
        "totalSeats": 150
    }
}, {
    "ID": 2,
    "code": "ER45if",
    "price": 345.99,
    "departureDate": "2016/02/11",
    "origin": "MUA",
    "destination": "LAX",
    "emptySeats": 52,
    "plane": {
        "type": "Boeing 777",
        "totalSeats": 300
    }
}]

回到Transform Message属性视图,现在看到的界面如下:

接下来就是拖拽字段进行关联映射

  • ID → ID

  • price → price

  • totalSeats → plane > totalSeats

  • toAirport → destination

  • takeOffDate → departureDate

  • fromAirport → origin

  • seatsAvailable → emptySeatsplane

  • planType → plane > type

比较特殊的,将两个字段映射到同一个字段,会进行字符串的链接

  • code1 → code
  • code2 → code

字段映射成功后,保存修改,然后重新运行项目,通过接口测试工具查看接口返回值,前后JSON结构对比如下:

回到Anypoint Studio,我们发现接口已经调用成功,但是从接口描述上还没有接口返回数据的示例,那么怎么做呢?回到Transform Message属性视图,点击Preview,点击 ”Create required sample data to execute preview“, 在input部分,出现一个新的页签payload,其中包含输入元数据生成的样本数据,在output部分,也可以看到对应的输出JSON示例,不过看到很多???,在input中用任意字符串替换???即可

完成上述步骤后,我们复制一份流bolgtestFlow,粘贴在画布的下方,这一过程直接Ctrl + C 然后在画布上Ctrl + V即可,如下图:

将第二个流程更名为getFlightsByID,方便调用和记忆,然后点击getFlightsByID中的HTTP监听器,修改路径包含一个请求ID

然后修改数据库中的查询语句,同时传入请求参数ID

保存然后运行项目,在接口测试工具上测试新的接口,可以看到,传入不同的参数ID能拿到不同的记录数据

以上是对MuleSoft借助Anypoint Studio开发的流程示例,以及一个简单的get请求

 

posted @ 2020-04-29 22:04  Ricardo.M.Lu  阅读(5654)  评论(1编辑  收藏  举报