我在之前关于PBNI的帖子中提到过这个应用程序。应用程序(Tax Software)是在EA Server上运行的PB / Java / EAF中编写的。它是在大约8年前用当时可用的技术开发的。该应用程序工作正常,但我试图清理代码/设计过去遗留下来的遗留物。
某些代码在PB和Java之间执行数据库(Oracle)事务,并且由于2恰好位于不同的数据库(Oracle)会话中,因此一个中的更改在另一个中不可见。因此,在这些情况下,应用程序使用开关将PB代码用于完整事务,而不是在PB和Java之间进行拆分。否则,它使用PB / Java组合。
这意味着PB和Java中存在相同的程序块集。维护噩梦!!我相信首先创建了PB对象,并且出于性能原因将其移植到Java(不考虑上面的拆分事务问题)。我试图消除一个(可能是PB代码,考虑性能)。我正在这个背景下探索PBNI。
如果您有任何人遇到类似情况以及如何解决,请告诉我。
提前多多感谢。
萨姆
答案 0 :(得分:0)
我并不是完全理解您的申请的性质,但请考虑我的意见。
让PowerBuilder和Java执行必要的更新。在我看来,您可以在任一系统中提交事务并使用逻辑提交的想法。在事务开始时,更新列以指示该记录在逻辑上是未提交的。 Java和PowerBuilder轮流更新并提交记录。在两个程序之间传递ROWID,任一程序中的SELECT都可以提供准确的数据。当事务在逻辑上完成时,将列更新为逻辑提交。
至于性能,将业务逻辑移动到Oracle包或存储过程绝不是一个坏主意。可能需要一些计划,但是,相同的代码可以从PowerBuilder或Java运行。此外,Oracle还有一些出色的调优工具。保持您的交易简短并在包/程序内提交。
不要害怕将逻辑上不完整的事务放在“工作”表中,并将逻辑上完整的行复制到“完整”表中。