1

我在之前关于 PBNI 的文章中提到了这个应用程序。该应用程序(税务软件)是用 PB/Java/EAF 编写的,在 EA 服务器上运行。它是在大约 8 年前使用当时可用的技术开发的。该应用程序运行良好,但我正在尝试清理代码/设计的遗留问题。

有某些代码可以跨 PB 和 Java 执行数据库 (Oracle) 事务,并且由于这两个恰好位于不同的数据库 (Oracle) 会话中,因此其中一个的更改在另一个中不可见。因此,在这些情况下,应用程序使用开关将 PB 代码用于完整事务,而不是在 PB 和 Java 之间拆分。否则,它使用 PB/Java 组合。

这意味着在 PB 和 Java 中存在相同的程序块集。维修噩梦!!我相信 PB 对象是首先创建的,有人出于性能原因将它们移植到 Java(不考虑上述拆分事务问题)。我正在尝试消除一个(可能是 PB 代码,考虑到性能)。在这种情况下,我正在探索 PBNI。

请让我知道,如果你们中的任何人遇到类似的情况以及如何解决它。

提前非常感谢。

山姆

4

1 回答 1

0

我并没有声称完全理解您的应用程序的性质,但是,请考虑我的意见。

让 PowerBuilder 和 Java 执行必要的更新。在我看来,您可以在任一系统中提交事务并采用逻辑提交的想法。在事务开始时,更新一列以指示该记录在逻辑上未提交。Java 和 PowerBuilder 轮流更新和提交记录。在两个程序之间传递 ROWID,并且任何一个程序中的 SELECT 都会提供准确的数据。当事务在逻辑上完成时,将列更新为逻辑提交。

至于性能,将业务逻辑移至 Oracle 包或存储过程绝不是一个坏主意。这可能需要一些计划,但是,相同的代码可以从 PowerBuilder 或 Java 运行。此外,还有一些出色的 Oracle 调优工具。保持交易简短并在包/过程中提交。

不要害怕将逻辑上不完整的事务放在“工作”表中,并将逻辑上完整的行复制到“完整”表中。

于 2018-04-12T05:05:35.113 回答