wf4 WorkflowApplication中的持久性:SQL Server vs ORACLE DevArt



我们有一个 24x7 应用程序,可以处理数十个 WF4 实例。

我们成功地实现了持久化和恢复策略,使用 SQL 实例存储持久化 OnIdle,在受控关机中等待该状态,并在恢复中重新加载。

我们需要迁移到 ORACLE,并且使用了 DevArt 实例存储,并且相同的代码存在一些问题。

到目前为止,我们仍在坚持OnIdle,但现在我们必须在受控关闭时卸载才能在恢复中加载。

当我们想到可能出现的"不那么温和"的关闭时,我们的恐惧就来了。

如果持久化实例无法达到受控关闭方法,则未卸载它们怎么办?如何恢复它们?有人遇到过同样的情况吗?

找到了,

它可以通过 ORACLE Devart 实例存储来完成。问题是OracleInstanceStoreLogic的DevArt dotConnect包中的一个错误,该错误将锁定过期时间飙升至2037年,不允许再次加载实例。

而不是

新锁过期 := 系统日期 + p_lockTimeout/24*60*60;

应该是

newLockExpiration := sysdate + p_lockTimeout/(24*60*60);

我已经向 DevArt 人员报告了该问题,以便在下一次更新中修复它。

我对"节拍"的答案有一个重要的补充:缺少括号的错误只在两个地方得到修复!具体来说,脚本"OracleInstanceStoreLogic.sql"中有一个方法"ExtendLock",它仍然具有

新锁过期 := 系统日期 + p_lockTimeout/24*60*60;

(在撰写本文时,我们有 Devart 版本 7.8.287.0,并且该错误仍然存在。这肯定会导致我们的工作流程出现问题,在添加括号后就消失了。

我刚刚向Devart提交了错误报告。

最新更新