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