我们安装了 PeopleSoft,我正在构建一个单独的 Web 应用程序,该应用程序需要从 PeopleSoft 数据库中提取数据。Web 应用程序将位于与 PeopleSoft 不同的服务器上,但位于相同的内部网络上。
我有哪些选择?
我们安装了 PeopleSoft,我正在构建一个单独的 Web 应用程序,该应用程序需要从 PeopleSoft 数据库中提取数据。Web 应用程序将位于与 PeopleSoft 不同的服务器上,但位于相同的内部网络上。
我有哪些选择?
是 - 集成代理是 Peoplesoft 的发布/订阅机制的专有实现,使用 xml。您当然可以使用 JDBC 或 OLE/ODBC 编写与您的数据库相反的代码。没有什么能阻止你这样做。但是,您必须了解 Peoplesoft 数据库架构,以便从中提取或插入/更新/删除所有正确的数据。Peoplesoft 会为您解决这个问题。
此外,请查看组件接口——它们作为 API 公开给 Java 或 C/C++。
这是一个老歌,但它可能仍然很有趣。
PeopleSoft 在主机数据库(Oracle、SQL Server、DB2 等)中有自己的模式,即 PSxxx 表,例如:PSRECDEFN 相当于 Oracle 的 DBA_TABLES。这些表不应被任何外部代码触及。应用程序表存储在 PS_xxx 表中,例如:PS_JOB。任何 SQL 代码都可以读取和更新这些表。
PeopleSoft 中的许多批处理程序(例如:应用程序引擎、COBOL 或 SQR)直接访问表,这是将数据输入或输出数据库的最快方式。然而,PeopleSoft 有相当丰富的应用层,在执行直接 SQL 时会被绕过。此应用程序层必须在直接 SQL 代码中复制,尤其是对于插入或更新。数据库存储的计数器可能会更新其他表、计算或增量。
要确定如何执行此操作,必须查看 PeopleCode(一种类似 VB6 的解释语言)、页面设计(通过应用程序设计器)并使用 PeopleCode 和 SQL 跟踪工具。如今,应用程序层非常庞大,因此对于非平凡的页面来说,这可能是一项冗长的任务。PeopleSoft 将相关页面分组到“组件”中,组件中的所有页面同时保存。
组件接口是在 PeopleTools 8 中引入的,作为避免所有这些的一种手段。使用 PeopleSoft 应用程序设计器中的生成器,基于组件生成组件接口。对于许多组件,这些组件可用于像用户一样访问页面,并且可以通过 PeopleCode 程序访问,因此也可以通过 App Engine 程序和集成代理访问。它们也可以包装在 Java 代码中,并通过能够使用 Web 服务包装器针对应用服务器执行的代码直接访问。这种方法最适合低容量事务:大量提取与本机 SQL 一起工作得更好。
PeopleSoft 中的在线开发和跟踪工具非常好,文档也非常好(尽管相当广泛),可从以下网址获得:http: //download.oracle.com/docs/cd/E17566_01/epm91pbr0/eng/psbooks/psft_homepage。 htm
如果您只是想从给定的组件中提取数据,最简单的方法是打开 SQL 跟踪(在 PeopleSoft 的实用程序菜单下)并为该组件调出一些记录。浏览跟踪文件会让您很好地了解要做什么,并且可以剪切和粘贴大部分 SQL。另一种方法是找到与您尝试执行的操作类似的现有报告并删除 SQL。
有一个 PeopleSoft 业务分析师来帮助您开发需求也不会受到伤害。
我想这取决于您的要求,以及您使用的 PeopleSoft 版本。
您想要实时查找吗?如果是这种情况,那么您将需要查看 Web 服务/集成代理。
如果您想要批量/批量导出,那么预定的 App Engine 就可以了。
最好的方法是使用集成代理 (IB) 服务将 PeopleSoft 数据库数据公开给外部应用程序。外部应用程序将能够通过 HTTP 作为 XML 访问 PeopleSoft IB 服务,从而允许您为此目的使用任何广泛使用的 XML 解析器。
与集成代理相比,组件接口的问题在于,组件接口往往比从 IB 服务 PeopleCode 中直接访问数据库要慢得多。此外,附加到组件接口的组件的未来添加有时会“破坏”接口。
有关 PeopleSoft 集成代理的更多详细信息,您可以访问位于http://docs.oracle.com/cd/E26239_01/pt851h3/eng/psbooks/tibr/book.htm的在线文档
直接进入数据库意味着您必须重新创建表示逻辑......请参阅上面我更长的答案。您可以对简单的页面执行此操作,否则使用组件界面是可行的方法。
您还可以编写一个用于批量数据提取的 sqr 进程。SQR 将创建其他应用程序可以选择的输出文件。SQR 将比应用程序引擎程序更快,因为它在内存中执行大部分操作。