随着企业服务总线ESB产品功能的逐渐完善,对用户来说,使用时流畅便捷是对产品的基本需求。那么对于数通畅联来说,让用户使用产品时更便捷是产品不断完善的前进方向。在产品功能实现的基础上,提升应是交互越简单越好,丰富场景也可让客户多一种选择。
AEAI ESB作为我们公司的一款核心产品,用于解决各个业务系统之间的异构集成难题。对于服务流程的集成调用在产品中也是一个很重要的功能,为了方便对于产品的整个使用感受更流畅,对于调用功能进行重新调整,对不同类型的服务和流程都可进行调用。现对ESB产品服务接口和集成流程不同场景下的调用功能进行分析总结。
本篇文档将对于SMC控制台中的调用场景,整体进行介绍说明,方便后续客户以及公司同事进行调用功能的使用。在使用的过程中,也希望其他人提出意见,从而使调用功能可以更加完善。
为方便客户减少打开其他调用软件的次数,在SMC控制台内可直接进行接口与流程的调用查看,对于HTTP调用页面和流程调用页面都进行了调整,本篇文档将对于调整后的调用模块功能进行调用操作的说明。
调用功能主要分为两种,一种是服务接口的调用,另一种是流程的调用,而流程的调用又分为集成流程和HTTP流程。对于服务接口调用,主要是主要在API管理的调用模块中,接口若要调用成功,需要进行如下步骤的操作,在后面的文档(服务调用部分)中会详细介绍说明。
流程调用分为两块,集成流程的调用主要在应用集成模块,流程调用需要对入参进行配置,不同请求类型的入参设置不同,具体的操作在后面文档中(流程调用部分)也会详细介绍说明。
普通HTTP流程的调用可在服务工程中的消息流程进行调用,也需要配置入参。具体调用方式跟集成流程一样。
服务调用是将程序的执行交给其他的代码段,通常是一个流程或者接口,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。当操作系统不允许用户直接操作各种硬件资源时,用户程序只能通过系统调用的方式来请求内核为其服务,间接地使用各种资源。
IP地址提供了在互联网上找到这台机器的凭证,协议以及服务端口提供了在这台机器上找到提供服务的进程的凭证,根据IP地址在互联网上查到要访问的服务所在的机器,根据协议和端口查到服务进程,再根据服务名查询到对应的服务,完成服务调用。
当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由以下3部分组成:
1.请求方法URI协议/版本:请求的第一行是“方法URI协议/版本”。
例如:GET/sample.jsp HTTP/1.1。
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
2.请求头(Request Header):请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
3.请求正文:请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息,如:username=jinqiao&password=1234。
在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。
在服务工程模块是通过设计器创建工程后在SMC管理控制台服务工程模块才可以看到工程列表,点击具体某个工程后会显示当前工程的基本信息、Web服务、消息流程,也可以通过本界面来管理工程。在该模块场景下可以对创建的工程应用中的流程进行调用,并可对服务流程进行启停操作。
调用位置可在消息流程中调用,选择一个流程就可进行调用。
点击“调用”按钮,会弹出一个手工调用的弹窗。
该弹窗可以对调用流程的入参信息进行填写,调用后可查看相应输出的内容。
HTTP流程的调用也可以直接选择工程的MF服务下的流程进行直接调用。
点击“调用”按钮会弹出对应流程的手动调用页面,调用后可查看相应输出的内容。
在服务工程中只可对类型为“Http”的流程进行手动调用,对于所有类型的流程,可以对流程进行“启动”和“停止”。
在消息流程下也可对定时流程进行启停。
选择一个http流程进行调用,填写入参,并点击调用按钮,展现调用结果如下。
API服务是在SMC管理控制台的API管理模块下的功能页面,API服务功能主要是对是将各个系统的服务在ESB进行管理的模块,管理的方式包括导入、注册和配置。ESB产品中的服务调用也可对这些服务进行调用,共有四类,分别是导入、注册、代理、配置服务。
在API服务中,不同服务的调用位置都是在对应服务的接口中,有两个方式进到调用页面。
第一种方式,在API服务可先选择一个服务,点击进去。
来到服务的API列表页面,选择调用的服务接口,再点击“调用样例”按钮。
可以直接跳转到接口的调用样例页面,该部分有三种调用,分别是HTTP调用、CURL调用、JAVA调用。HTTP调用页面显示接口信息,可以支持调用;CURL调用中CURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等,在CURL调用页面中的调用URL的语句就可以直接在服务器中调用。JAVA调用页面,可直接复制JAVA代码,粘贴到开发工具类中调用,也可直接下载工程,把工程放在设计器的workspace文件夹,导入到设计器即可。
第二种方式是可直接双击进入API列表服务接口的基础信息页面。
在接口基本信息页面点击右上角的“调用样例”标签按钮,同样可以来到接口调用样例的模块。
对于想要调用的接口进行入参出参的配置,入参和出参有不同的创建方法,下图为模板创建。
对于该接口的出参,配置的是以模型进行创建的。
接下来对配置好的接口进行调用展示。以Web服务的服务查单条接口为例,点击接口基本信息页面的“调用样例”,来到调用页面。如果入参显示方式为“文本”,需调整入参数据,再点击“调用”按钮,就可以得到出参信息。
如果入参数据的显示方式为“表格”,则可调整下图入参位置再进行调用。
API超市同样是在SMC管理控制台的API管理模块下的功能页面,API超市主要是对是将注册到API服务中的每个API接口进行直接的调用。其中,API分组查询,以API分组方式对服务接口进行归类;API应用查询,以应用系统方式对服务接口进行归类;API调用查询,以调用系统方式对服务接口进行归类。
API超市的调用位置,在详情页面包括HTTP调用、CURL调用以及JAVA调用的三种调用方式。
CURL调用页面,显示接口信息,支持调用:
JAVA调用页面,显示代码信息,支持复制代码、下载工程、调用:
对于想要调用的接口进行入参出参的配置,这里以预置服务中的认证服务为例。该服务下只有一个服务接口,是用来获取tokenId的。该接口入参类型为QueryParam,出参类型为String。
那对应入参设置页面需要进行“添加根节点”如下。
添加之后如下图显示,继续添加入参信息字段,需选中根节点,点击“添加节点”的操作。
添加对应所需入参数据,对于该接口需要一个“appCode”和“appPwd”,如下图。
该接口出参数据只是一个tokenId的值,可以不添加出参数据。如服务接口需添加可参照“调用接口”中的出参数据进行添加。
对HTTP调用、JAVA调用、CURL调用进行调用演示。首先HTTP调用与API服务的调用一样,这里就不多介绍了。
对于CURL调用,点击“复制调用URL”,把复制的内容直接到服务器中执行,即可输出对应响应内容。
JAVA调用页面,可直接复制JAVA代码,粘贴到开发工具类中调用,也可直接下载工程,把工程放在设计器的workspace文件夹,导入到设计器即可。
点击下载工程后,对下载的压缩文件进行解压。
对于解压的文件夹放在ESB设计器的workspace文件夹中。
接下来在新版本设计器中导入该工程;
选择刚刚导入到/workspace目录下的工程文件:
点击确定按钮后直接Finish即可。在“com.xcorp.api.test”分组下,是调用的代码,在“com.xcorp.api.utils”中的RequestUrlHelper.java文件,是在模板中创建一个公共类,公共类内封装包含获取tokenId以及动态获取调用URL等一些固定的方法。代码中的24行和25行,是需要调整成对应工程应用的编码和密码(图中27、28行为对应调整)。
调用方法为在代码页面单击右键,选择“Run As”-“Java Application”进行调用。
出参的信息显示在“console”中,这就是JAVA调用的方法。
应用集成部分主要是场景配置和集成流程两个模块。场景配置功能是将已注册的系统间接口进行对接,实现系统集成逻辑,是实现集成工作的关键配置。集成流程则为设计器开发的业务集成类流程,点击单条可查看或编辑集成流程,手工调用页面点击调用按钮可以直接调用当前流程。接下来对应用集成流程如何配置、调用进行介绍。
对于流程调用的逻辑以及调用位置进行简单介绍说明,应用集成的流程调用功能在应用集成下的集成流程模块中,可选择一个集成流程。
在详情页面选择对应的HTTP流程的“查看”按钮。
会弹出HTTP流程的详情页面,点击“调用”按钮。
会再弹出一个“手工调用”弹窗页面,输入入参信息,再点击调用即可完成在响应输出中看到调用结果。
基于接口的调用,来配置集成场景,设置来源数据与目标数据。首先,新增场景配置,填写名称和编码,来源选择Rest服务的Retrieve接口,目标选择Web服务的Create接口,然后点击保存。
来到映射参数页面,进行参数解析。
解析完毕后,回到基本信息页面进行场景提交。
接下来可在设计器中,对于提交的场景配置进行创建。在应用集成中心的MF服务中,创建一个消息流程。
选择“HTTP请求响应消息流程”-“应用服务集成”。
点击Next,刷新目标表,可查看刚刚提交的流程,选择刚刚在场景配置中配置的集成流程完成创建。
创建完成后,流程图大致如下:
首先,在httpRequest中添加一个入参,参数为code。如下图:
初始化操作节点,就是为了获取值。此样例中没有需要修改的部分。接下来处理源数据调用接口,在调用URL中删除自身带的code值,并且在变量中选择刚刚httpRequest节点中设置的入参参数code。如下:
接下来,对于映射转换组件进行配置,主要就是把源数据映射到对应的目标数据字段中。
然后对目标接口调用组件进行配置修改,主要就是对入参数据进行修改,具体入参配置如下。
点击“Next”,解析策略选择“提取报文CDATA”,如下图。
点击完成后,对流程进行部署,就完成了本次流程的配置。
接下来,对于配置好的流程进行调用测试,可到集成流程模块,选择查看流程详情。
点击调用,填写入参数据,对其进行调用即可,如下即为调用成功。
对于ESB产品服务流程的调用通过HTTP网络传输协议进行的,调用的场景也是多样的。接下来会从场景应用、调用总结以及心得总结三个方面介绍本次撰写ESB场景分析的心得体会。
GET和POST是HTTP请求的两种最基本的方法,GET和POST也是传输数据最基本的方法,虽然两者都是传输数据,但是这两种方法有很大区别,比如:
1.请求数据的不同:
GET请求方法的数据可URL中,而POST请求方法的数据不在URL中。
2.数据大小的不同:
GET最大不超过32k(头文件空间32k,一般GET大小不超过1k),而POST最大可达1G。
3.用途不同:
在浏览器中:GET是从指定的资源请求数据;POST则是向指定的资源提交要被处理的数据。
4.其他不同:
a)GET在浏览器回退时是无害的,而POST会再次提交请求;
b)GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
c)GET请求会被浏览器主动cache,而POST不会,除非手动设置;
d)对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
作为产品的开发者,随着对产品开发工作的逐渐深入,对于各个的功能也慢慢熟悉。通过本次调用功能场景的梳理分析,对ESB产品的业务逻辑了解得更深入。调用功能会有一些涉及底层的逻辑,需要去了解并理解。在后续产品使用中,对调用功能部分的完善以及进一步开发也更得心应手,通过不断测试来暴露问题,才能慢慢解决问题。
本文对每个调用功能的场景进行说明,有关调用方面还包含很多的知识,需要后续不断学习,需要不断积累夯实基础。本次对调用模块功能的场景分析后,对于整体ESB产品的使用逐渐能够串联起来,对于HTTP调用以及底层接口的实现逻辑有掌握了一些。
在之前调用功能开发升级的过程中,在代码方面的能力有所提升,学习到很多新知识。在工作学习中,不断完善知识体系,扫除知识盲点,不断提升自身的技术能力。工作时要认真仔细,开发时要全方面考虑问题,只有这样才能把工作做得更好,打造出更完善的产品。