查询和检索列表时的限制

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

查询和检索列表

由于 JD Edwards OneWorld 业务函数体系结构的限制,不能使用 Microsoft BizTalk Adapter for JD Edwards OneWorld 查询和检索基于搜索条件的记录列表。

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

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

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

控制迭代

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

下面列出了用于控制迭代的技术:

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

    备注

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

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

    备注

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

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

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

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

另请参阅

规划和结构