zoukankan      html  css  js  c++  java
  • 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请求

  • 相关阅读:
    Codeforces Round #639 Div2 A~D题解
    Codeforces Round #548 Div2 A~C题解
    Codeforces Round #581 Div2 A~D题解
    Educational Codeforces Round 69 Div2 A~D题解
    Codeforces Round #572 Div2 A~E题解
    Codeforces Round #663 Div2 A~D 题解
    44. 通配符匹配 leetcode 每日一题
    174. 地下城游戏 leetcode每日一题
    将有序数组转换为二叉搜索树 2020/7/3
    Multiplication 3 AtCoder
  • 原文地址:https://www.cnblogs.com/luqinghua/p/12790525.html
Copyright © 2011-2022 走看看