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

时间:2012-07-03 14:03:48

标签: c# .net-4.0 persistence workflow-foundation-4 devart

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

我们成功实施了持续性和使用SQL实例存储保持OnIdle的恢复策略,在受控关闭中等待该状态并在恢复中加载回来。

我们需要迁移到ORACLE,我们使用了DevArt Instance Store,我们遇到了一些相同代码的问题。

到目前为止,我们仍然坚持OnIdle但现在我们不得不在受控关闭时卸载,以便能够加载恢复。

当我们想到可能出现的“不那么温和”的停机时,我们就会感到恐惧。

如果持久化实例无法达到受控关闭方法而未被卸载,那该怎么办?如何恢复它们?任何人都面临同样的情况?

2 个答案:

答案 0 :(得分:2)

找到它,

可以使用ORACLE Devart Instance Store完成。问题是OracleInstanceStoreLogic的DevArt dotConnect包中的一个错误,该错误导致锁定到期时间延长至2037年,不再允许再次加载实例。

而不是

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

应该是

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

我已经向DevArt人报告了这个问题,以便在下次更新时修复它。

答案 1 :(得分:2)

我对“The Beat”的回答有一个重要的补充:缺少括号的错误只能在两个地方修复!具体来说,脚本“OracleInstanceStoreLogic.sql”中有一个方法“ExtendLock”仍然有

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

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

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