使用 nodejs 和 Java 访问远程服务器的服务

既然这篇文章用的是 nodejs 和 Java 访问远程服务器的服务,那么咱们先用另一门编程语言,SAP 的 ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧。
这是我用 ABAP 编程语言实现服务的类:ZCL_DIS_HTTP_HANDLER

这个类实现了一个接口 IF_HTTP_EXTENSION 里定义的一个方法 HANDLE_REQUEST.

大家可以不用被 ABAP 陌生的语法所迷惑,其实和 Java 的 Servlet 是相通的。

我画了张图:

我的这个远程服务很简单,就是无论调用者发送什么,都简单地返回一个文本:HELLO WORLD。
现在我们就分别用 nodejs 和 Java 去消费。
nodejs

看下 nodejs 代码。
下面的代码传入 Buffer 的 WANGJER 为我的用户名,123456 为密码。使用的登录方式是 Basic Authentication。
执行结果:算上网络开销总共花了 1.4 秒。

java
下面代码的 WANGJER 为我的用户名,123456 为密码。使用的登录方式是 Basic Authentication。
执行结果,耗时和 nodejs 差不多。

注意,用本文介绍的方法不仅能访问远程服务器的服务,也能达到资源下载的目标:比如下载某服务器上的图片,mp3 等。只需要把对应资源的 url 传入系统即可。

我们从 SAP CRM,Cloud for Customer(简称 C4C)和 S/4HANA 这三个产品分别来看看。
SAP CRM
我们使用所谓的 Application Enhancement Tool(AET)来创建扩展字段。首先在 Personalize 里将 Configuration 模式打开,这样才能够直接在浏览器里创建扩展字段。

把这个“Enable configuration mode”的勾选中,就打开了 Configuration 模式了。

比如我想在下面这个界面上添加一个新的字段。非常简单,点这个齿轮进入 Configuration mode - 配置模式:

当前界面可以添加新字段的区域自动被高亮成了蓝色:

然后我随便在高亮区域处点一下鼠标左键,从弹出的对话框中点击按钮“Create Field”来创建新的字段。

这个新字段从技术上来说得从属于某一个 BO 模型的某个节点上,所以此处我选择了 ORDERADM_H 这个节点。

然后就是指定这个字段的标签,数据类型,字段长度等等。此处我新建的字段标签为“city name”:

点击 Save and Generate 进行字段创建:

之后该字段就出现在 UI 界面上了:

现在可以在 UI 上对该字段进行值的维护了:

根据扩展字段进行搜索的功能也是自动实现的:

以上就是 SAP CRM 自定义字段的创建和使用。
SAP Cloud for Customer
同样,点 Edit->Edit Master Layout 进入编辑模式:

比如我想在下图 Additional Information 这个区域增加一些新的字段,只需要把鼠标放上去,就会弹出一个悬浮的工具栏:

选择 Add Fields 就能开始新字段的添加了:

和 CRM 一样,需要维护扩展字段的类型:

同 SAP CRM 相比,C4C 的扩展字段除了 UI 之外,还能放到其他模型上,比如放到 Adobe Form template 上:

以及加到 Report data source 里:

以及加到 Enterprise search 里:

以及加到 extension scenario 里去。

以上图的 extension scenario 为例:意思就是如果一个 Opportunity 上的扩展字段值为 A,那么这个 Opportunity 生成的后续文档 Service Request,其同名扩展字段的值也为 A。
扩展字段也能自动加到 SAP 标准的 Web Service 和 OData service 上:


保存之后,可以给该扩展字段赋值。

S/4HANA
同 SAP CRM 和 SAP C4C 直接在想添加扩展字段的 UI 上进行字段创建不同,S/4HANA 采取的方式是首先统一创建扩展字段,然后用户再决定将这些字段放到哪些 UI 上去。
S/4HANA launchpad 的 Custom Fields and Logic 这个 tile 专门负责扩展字段的创建工作:

这次我想在 S/4HANA 的物料主数据上创建扩展字段,所以从 Business Context 的下拉菜单里选择了 Product Master General。
字段标签维护成“Jerry extension field on MARA”,类型为 Text,长度为 20。

然后点击标签页“UIs and Reports", 点击 I_PRODUCTWD 和 MD_C_PRODUCT_MAINTAIN_MDLD 对应的 Enable Usage 按钮:


完毕之后点保存,再点发布按钮,确保扩展字段的状态处于发布状态(Published)。

点这个按钮:

点"Adapt UI"按钮:

屏幕右上角提示当前已经处于“Adaption”模式了:

点右键,从“Available Fields”的列表里选择我之前创建的扩展字段“JDK Minimum version”:

然后终端用户就能针对该扩展字段进行编辑了:

要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙".
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/bd4fda89c805d7e8412dd65e3】。文章转载请联系作者。
评论