查询和检索列表时的限制

JD Edwards OneWorld 通信体系结构是单消息、单答复体系结构。 不能返回消息列表或数组。 基础代码是 C++,它使用指向单个结构的指针调用 ,在 结构中进行更改,然后退出。

查询和检索列表

由于 JD Edwards OneWorld 业务功能体系结构存在限制,无法使用适用于 JD Edwards OneWorld 的 Microsoft BizTalk 适配器根据搜索条件查询和检索记录列表。

在 JD Edwards OneWorld 中,数据库连接通过使用一组专有 (和复杂的) 内部函数调用来提供。 这些调用要求非常显式和低级别调用来创建要检索或更新的列列表,并创建用于排序或选择的专用结构,从而屏蔽基础数据库版本。 这些 API 集不通过 Java (或任何其他) 连接方法公开;因此,无法通过业务功能处理记录集。

在 JD Edwards OneWorld 工具集中,可以创建处理单个记录或对一组记录进行操作的业务函数;但是,访问 JD Edwards OneWorld 工具之外的项列表会更加困难。

若要解决此问题,可以创建一个基于查询返回记录键列表的自定义业务函数。 必须对列表进行分段,因为 JDENET (JD Edwards OneWorld 内部专有消息传送 API) 对用于管理大型或无限制结果集的消息缓冲区大小有限制。 客户端代码必须通过连续调用业务函数来循环 (循环) ,直到返回指示列表已完成的指示器。

控制迭代

对 JD Edwards OneWorld 业务函数的所有调用都是无状态的;因此,业务函数无法维护打开的游标,并按请求返回更多行。 定位信息必须在每次调用时传递给 JD Edwards OneWorld XE 业务函数。

下面是用于控制迭代的技术列表:

  • 在 JD Edwards OneWorld 端,将结果集写入临时存储文件,该文件返回 ID (如文件名或作业编号) (可在连续调用时提供),以及用于定位光标的记录编号。 任何连续调用都基于传入的记录编号定位在列表中。

    注意

    通过适用于 JD Edwards OneWorld 的 BizTalk 适配器的调用可以进行负载均衡;但是,它们最终由单个应用程序服务器根据所调用的凭据和业务函数提供服务。 因此,如果调用在服务器上创建临时文件,则其他调用将由同一服务器提供服务。 有关详细信息,请参阅 JD Edwards OneWorld CNC Guides(《JD Edwards OneWorld CNC 指南》)中的 Object Configuration Mapping(“对象配置映射”)。

  • 位置信息 ((如主键值) )可以在第二次和后续调用中返回,并且可以根据键作为附加参数重新发出查询。 此方法在适用于 JD Edwards OneWorld 的 BizTalk 适配器的存储库浏览代码中使用。

    注意

    在前两种方法中,建议的方法是使用主键值并重新发出查询。 此方法需要最少的代码量,并将优化和缓存负担置于数据库上。

  • 调用应用程序可以存储主键列表 (,例如交叉引用) 。 例如,如果客户关系管理 (CRM) 系统创建客户记录,然后使用业务函数调用将其添加到 JD Edwards OneWorld,则添加客户记录的业务函数 (短地址号) 设置 AN8 字段的值,并在返回缓冲区中可见。 然后,可以将此数字写入原始客户记录上的引用字段,或将其存储到自定义的交叉引用表中。

  • JD Edwards OneWorld 中的所有主记录中的大多数都有查找或备用键的概念。 此密钥可用于存储来自调用系统的密钥信息。 业务函数可以在 JD Edwards OneWorld 端执行查找。 将参数传递给业务函数以创建客户记录时,将设置长键值。

    有关这些概念的详细信息,请参阅 JD Edwards OneWorld 帮助系统中的“Interoperability”(互操作性)主题。

另请参阅

规划和结构