起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 624|回复: 13

【搞定】我怎样确定,流程已经流转成功了?**

[复制链接]
发表于 2007-4-28 16:41:40 | 显示全部楼层 |阅读模式
我发现,有时候流程任务会无缘无故的丢失,怎样判断流程已经流转成功了,是不是凡是在流程的afterflowout,写的一些代码,一定是在任务流转成功以后,才发生
回复

使用道具 举报

 楼主| 发表于 2007-4-28 18:30:06 | 显示全部楼层
ding
回复 支持 反对

使用道具 举报

发表于 2007-4-29 10:08:18 | 显示全部楼层
严格的讲,在AfterFlowOut事件中不能保证流程已经成功
请看以下代码
在流程AfterFlowOut之后,整个事务才提交
而且在26XX版本中,默认业务数据和流程数据是在同一个事务中的

        DoAfterFlowCommand(ACommand);
      end;

      if ACommand.Accept and ACommand.ApplyUpdatesInvolved and (lTransHandle.ActiveCount <> 0) then
        Transaction.Commit(lTransHandle);

      // 注意在流程运行的过程中有可能往FFlowRunners里面加流程(合并流程、子流程)
      // 所以不能用 (ACommand.CompoundFlowRunner.Count >= FlowRunnerCount)
      if ACommand.Accept and ACommand.FuncTerminate and (not DoHaveNeedProcess) then
        FuncTerminate;

      lAborted := False;
    finally
      if not ACommand.Accept or lAborted then
      begin
        ACommand.CompoundFlowRunner.Reset;
        if ACommand.ApplyUpdatesInvolved and (lTransHandle.ActiveCount <> 0) then
        begin
          lRollBacked := True;
          Transaction.Rollback(lTransHandle);
        end;
      end;
    end;
回复 支持 反对

使用道具 举报

发表于 2007-4-29 10:18:45 | 显示全部楼层
在26XX版本中,默认业务数据和流程数据是在同一个事务中的
要么流程数据和业务数据同时成功,要么同时失败,不应该出现有业务数据没有流程数据,或者有流程数据没有业务数据的情况。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-29 13:59:13 | 显示全部楼层
我在afterflowout中写的一些更新语句,我怎样才能保证和流程数据处于同一事务中,我在afterflowout写的更新语句是否,属于业务数据的范畴?这一点,请给点指教,谢谢
回复 支持 反对

使用道具 举报

发表于 2007-4-29 14:03:21 | 显示全部楼层
有关事务,请参考 http://wiki.justep.cn/mywiki/moi ... ghlight=%28trans%29

只要在流程中,你自己定义的数据集就自动跟流程在一个事务中了,除非你用TQuery来更新数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-29 14:05:43 | 显示全部楼层
其实我要实现的就是,确认流程已经流转成功了,然后我在更新一些数据!
回复 支持 反对

使用道具 举报

发表于 2007-4-29 15:06:13 | 显示全部楼层
那其实你就是在AfterFlowOut事件中处理,直接在这个事件中写就可以保证肯定是在流程成功才会做修改的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-29 15:54:51 | 显示全部楼层
谢谢
回复 支持 反对

使用道具 举报

发表于 2007-4-29 15:57:55 | 显示全部楼层
注意,如果代码动态生成的控件,有可能不在同一个事务中,比如你们有动态创建query的,就不能保证在一个事务中了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-8 17:24 , Processed in 0.040918 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表