[技术讨论] osworkflow并发异常

savefrom 2010-01-22

最近的两二项目发现osworkflow的一个bug问题(小弟才书学浅、各位老大不要BT)。工作流id重复出现。count(id)和max(id)的问题。
1.在oracle下工作流的id可以直接用oracle的 sequence来完成id并发的问题。
2.在sqlserver就很难知道用什么方法来完成。(除非用事务来解决在取工作流id)
本上都是请教其他高人所得。希望大家能给出更好的办法。谢谢。关注。
fantasy 2010-01-22
使用count(id),工作流ID在删除部分之后,会出现重复ID的情况,而max(id)的效率比较低,会存在同时有两个线程执行SQL的情况。
我觉得可以使用max(id),然后对执行max(id)的SQL语句进行同步,保证每次只有一个线程执行max(id)。
第二使用事务控制,保证每次执行max(id)的时候,表处于锁定状态,但是不知道效率如何。
savefrom 2010-04-02
在Oracle的情况可以在配置文件中使用Oralce的特性sequence。
<prop key="entry.sequence">
SELECT SEQ_OS_XXXX    FROM XXX
</prop>
<prop key="step.sequence">
SELECT SEQ_OS_XXXXXX    FROM XXXXX
</prop>

在Orace中做点手脚就哦了。
fantasy 2010-07-29
savefrom 写道
在Oracle的情况可以在配置文件中使用Oralce的特性sequence。
<prop key="entry.sequence">
SELECT SEQ_OS_XXXX    FROM XXX
</prop>
<prop key="step.sequence">
SELECT SEQ_OS_XXXXXX    FROM XXXXX
</prop>

在Orace中做点手脚就哦了。

这样不支持多数据库。
Global site tag (gtag.js) - Google Analytics