本文介绍如何根据步骤一准备的资源,完成根据车次查询城市信息的集成流设计,以及集成流的运行和调试。
前提条件
完成文档步骤一的资源准备操作,需要准备的资源包括:
在BizWorks内已经存在完成纳管的容器集群。
一个BizWorks项目,并且该项目内至少包含一个项目环境。
2个可被调用的Mock API:根据车次查询城市信息(API名称:mock-traininfo)、根据城市查询天气信息(API名称:mock-city-weather)。
本实验目标
接口效果:为客户端提供一个接口,输入为火车车次,输出为该车次起点城市和重点城市信息。
实现方式:使用集成流编排步骤一中创建的查询车次接口实现。
步骤1:创建集成应用
登录BizWorks,在选择平台下拉列表中选中应用集成平台。
单击页面右上角的图标或其文本框区域,在下拉列表中单击目标项目名称后,单击应用页签,在应用列表页面,单击新增应用。
在创建集成应用面板,填写相关参数配置,完成集成应用的创建。
步骤2:创建集成接口
在集成接口页面,单击新建接口分组。
在新建接口分组面板,接口分组名称配置为group1,BasePath配置为group1,其他内容使用默认值,完成后单击创建。
不同业务用途的接口可划分在多个分组中,调用时多个分组依靠BasePath进行区分。
在集成接口页面,单击接口分组名称为group1的接口。
在应用接口管理页面新建接口。
平台支持手动创建和导入OAS定义两种方式创建接口定义。本例中使用手动方式创建。
单击新建,选择新建接口。
在新建接口面板,您可以参考下图配置相关参数,完成后单击保存。
接口名称填写case1-查询车次。
接口路径选择GET,配置为api1。
请求参数Request中,单击新增参数。新增一个Query参数,参数名称为trainno,类型选择String。
说明返回内容Response在本例中不使用,暂不填写。
步骤3:创建集成流
在步骤2:创建集成接口中,完成了客户端可调用的接口定义。在本步骤需要创建一个集成流与步骤2中的接口绑定,用于实现对应的逻辑。
在应用接口管理页面,单击case1-查询车次接口名称右侧绑定服务列下的绑定。
在绑定服务面板,服务类型选择集成流,集成流的创建方式选择自动创建,完成后单击确定。
平台将会自动创建一个集成流,并与case1-查询车次接口绑定。
在对话框中,单击确定。
页面自动跳转至集成流设计器页面。您也可以在应用集成平台的左侧导航栏选择
,在集成流页面单击case1-查询车次集成流名称进入集成流设计器页面。
步骤4:设计集成流
本文实验在集成流中使用三个节点即可完成集成流设计,下文将分别介绍配置方式。
HTTP API Listener
当您首次进入flow-case1-查询车次集成流设计器,可看到该集成流已经根据关联的接口情况,自动创建了首尾节点。首节点HTTP API Listener表示当前集成流的触发方式和监听哪些集成接口的调用。单击HTTP API Listener节点,您可以查看到监听的接口即为步骤2:创建集成接口中创建的集成接口。
连接器HTTP
添加连接器HTTP节点。将HTTP节点拖动至画布右侧首节点HTTP API Listener下。
在集成流中使用该节点调用步骤2:创建集成接口中创建的查询车次接口。
在HTTP面板,配置过程主要包含两部分:连接配置和HTTP请求配置。节点名称设置为查询车次,选择连接配置。
连接配置用于维护被编排的应用的共性信息,每种连接器都有配套类型的连接配置。您可在连接配置的下拉列表中选择该版本的集成应用中已经有的连接配置,如果没有,您参考以下步骤新增连接配置。
在选择连接配置下拉列表中,单击新增连接配置。
在新建连接配置对话框的基本信息配置向导页,连接配置名称配置为mock-api,选择连接器版本0.0.1,完成后单击下一步。
在新建连接配置对话框的详细配置向导页,Base URL需设置为步骤一:资源准备中在API网关上添加的API调用地址,该地址由网关动态生成。由于本例中不涉及API的认证,因此此处连接配置的认证方式选择无。
完成相关配置后,单击保存。
完善接口调用地址。HTTP请求配置的URL选择为值,配置为traininfo,您可以看到完整的HTTP请求地址,此地址应为查询车次接口的调用地址。
使用代码片段完成拼接Query参数。根据查询车次接口的入参要求,并且该参数是由客户端调用时动态传入,因此Query参数页签中选择脚本方式,在代码编辑框中可以输入以下示例代码。
package bwiflto5nrt279m2lz; import com.alibaba.bwif.script.core.StepMessage import com.alibaba.bwif.script.core.BwifHandler import com.alibaba.bwif.script.core.protocol.http.HttpRequest import java.util.HashMap class SimpleHandler implements BwifHandler { @Override Object handle(StepMessage message) { //从前一节点的输出消息中,提取客户端调用时的入参trainno HttpRequest req = message.getPayload() String trainno = req.getQueryParam("trainno") //准备查询车次信息的Query参数,以HashMap类型返回给编排引擎处理 HashMap<String,String> m = new HashMap() m.put("trainno",trainno) return m } }
完成配置后的图片示例如下。
HTTP API Reply
HTTP API Reply节点是与HTTP API Listener节点配套使用的,对应HTTP Response的用于定义HTTP调用集成接口后的返回内容。
单击HTTP API Reply节点,在HTTP API Reply面板,HTTP Status Code配置为200。
说明如果需要根据集成流中执行情况返回不同的Code,则可使用脚本方式。
配置HTTP响应信息(Response)。本实验由于需要从查询车次结果中取出部分信息返回,因此使用了脚本方式,在代码编辑框中可输入以下示例代码。
package bwiflto8ro8d3mz2wk; import com.alibaba.bwif.script.core.StepMessage import com.alibaba.bwif.script.core.BwifHandler import com.alibaba.bwif.script.core.protocol.http.HttpResponse import com.alibaba.bwif.script.core.Entity import java.util.ArrayList class SimpleHandler implements BwifHandler { @Override Object handle(StepMessage message) { //从前一个节点的输出消息中取出payload部分,里面存放的是请求接口后获得的HTTP返回内容 HttpResponse rep = message.getPayload() //body部分是接口返回的json内容,类型为Entity Entity eBody = rep.getBody() //Entity会根据content-type自动反序列化,此处自动将json转换成HashMap HashMap<String,Object> mRep = eBody.getValue() //取出城市列表信息,类型为ArrayList ArrayList listCities = mRep.get('result').get('list') //将城市信息做为集成接口的返回内容,构造成Entity类型,交由引擎处理 Entity e = Entity.fromObjectValue(listCities,'application/json','UTF-8') return e } }
步骤5:运行和调试集成流
单击集成流设计器页面右上角的保存,保存成功后可看到最近一次保存成功的时间。
单击集成流设计器页面右上角的调试,页面自动跳转至集成流调试器页面,您可在该页面中对调试集成流的运行结果。
单击集成流调试器页面右上角的请选择环境,在选择环境下拉列表中选择目标环境,如果该环境中没有部署本集成应用,将会引导您先完成应用实例的部署(单击立即部署)。如果该环境中已经部署了本集成应用,您可跳过步骤4~步骤5。
页面自动跳转至实例管理页面,按界面引导完成目标环境下的部署操作。实验中单实例资源配置选择1C/2Gi,实例数量选择1。
完成相关配置后,单击开始部署。等待片刻后,集成应用实例部署成功。单击目标环境卡片,您可查看到集成接口的调用Endpoint信息。
刷新集成流设计器页面,您可以看到该环境下实例已经就绪。单击页面右上角的调用接口,将调用接口面板trainno的参数值设置为G1,单击发起调用,您即可查看到该集成接口的调用结果。
关闭调用接口面板后,集成流调试器页面左侧的运行记录面板会自动刷新,列出最近的运行记录。单击某次运行记录,您可以在调试器的底部面板中查看此次运行的基本信息,如果有报错,也可以在此处查看具体的错误原因。再次选中集成流节点后,您可以看到在此次运行过程中,该节点的输入Message和输出Message的具体内容,可以根据该信息在设计器中调整集成流。