1

我的公司在内部运行一个 4GL 应用程序。它非常古老,没有人真正知道如何改进/开发它,因为开发人员早已不在。

我需要对我的 Magento 网上商店进行简单的 SOAP 调用。网上有大量使用多种语言的示例,但我找不到一个 4GL (OpenEdgee ABL) 示例。

我正在尝试将 SKU 设置为缺货状态。

有没有人有一个我可以看的简单示例,或者至少是一个起点,因为网络上关于 4GL 的信息似乎很少。

我在 PHP 中需要的调用示例:

<?php
$proxy = new SoapClient('http://www.domain.com/api/soap/?wsdl');
$sessionId = $proxy->login('admin', 'password');

$proxy->call($sessionId, 'product_stock.update', array('sku123', array('qty'=>50, 'is_in_stock'=>1)));
4

1 回答 1

3

对于 10.2B 版本,内置支持在 Progress ABL 中使用 Web 服务。

这是关于如何在 ABL 中为基于 SOAP 的 Web 服务创建客户端的基本教程。这不是最佳实践,也不是完整的。只是一个快速入门指南。

1.分析WSDL

有一个通过命令行可用的内置工具,可让您分析 WSDL 并创建有关可用服务、数据类型、语法等的文档。像这样在 wsdl 上调用它:

proenv> bprowsdldoc yourwsdl-file c:\temp\docs

wsdl 可以是本地的或远程的。如果它是远程的,你指定 URL,如果它是本地的,你可以只指定本地的完整路径。html 格式的文档将在 c:\temp\docs 中结束。在该文件夹中打开 index.html。

2.创建一个基本客户端

在 index.html 文档中有许多标题。单击“端口类型”下的链接。在端口类型文档中,您会发现一些有用的数据。

将“连接详细信息”中的示例复制并粘贴到您的进度编辑器中。它应该看起来像这样(服务和过程的名称会有所不同 - 它们在 wsdl 中定义):

DEFINE VARIABLE hWebService AS HANDLE NO-UNDO.
DEFINE VARIABLE hYYY AS HANDLE NO-UNDO.

CREATE SERVER hWebService.

hWebService:CONNECT("-WSDL 'file_or_url_to_wsdl.wsdl'").

RUN XXX SET hYYY ON hWebService.

如果您运行此代码,您的客户端已连接到 Web 服务,但它仍然没有执行任何操作。

在同一份文档的下方,有一个名为“操作(内部程序)详细信息”的标题。这是调用实际 Web 服务的地方。它看起来像下面的代码。它实际上显示了两种进行相同调用的方法,一种是功能调用,一种是程序调用,因此请选择您喜欢的任何内容并将其插入到您的编辑器中(除了旧习惯之外,我通常没有真正的原因使用程序):

DEFINE VARIABLE strXMLRequest AS CHARACTER NO-UNDO.
DEFINE VARIABLE ProcessXMLResult AS CHARACTER NO-UNDO.


FUNCTION ProcessXML RETURNS CHARACTER
  (INPUT strXMLRequest AS CHARACTER)
  IN hYYY.


/* Function invocation of ProcessXML operation. */
ProcessXMLResult = ProcessXML(strXMLRequest).


/* Procedure invocation of ProcessXML operation. */
RUN ProcessXML IN hYYY (INPUT strXMLRequest, OUTPUT ProcessXMLResult).

现在,结束程序所需要做的就是断开连接并进行清理。所以插入:

hWebService:DISCONNECT().
DELETE OBJECT hWebService.

如果您已经完成了所有步骤,那么您应该有一个用于调用 Web 服务的框架。唯一的问题是您需要处理输入和输出数据。

3. 处理答案和请求

根据 Web 服务的构建方式,这可能很容易(如果您只输入和输出简单数据,如字符串和数字)或相当复杂(如果您输入和输出整个 xml 文档)。您在第一步中创建的文档列出了所有数据类型(在 index.html 文档中),但它没有为您如何创建任何所需的 xml 文档提供任何支持。有关于如何使用 xml 的特定进度文档...

更好的方法是查看官方文档。在那里,您将找到以上所有内容以及更多内容 - 如何处理错误等。

是所有 10.2B 文档的概述,这里是名为 Web Services 的 PDF。

是 Progress KnowledgeBase 中一个完整(但实际上不是很好)示例的链接,其中创建并处理了客户端和相应的请求/响应 xml。

看看这些章节:

  • 6 - 从 WSDL 创建 ABL 客户端
  • 7 - 从 ABL 连接到 Web 服务
  • 8 - 从 ABL 调用 Web 服务操作

这基本上将带您完成从开始到开始的整个过程。

于 2013-10-22T11:29:55.053 回答