起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1688|回复: 24

【搞定】流程轨迹的问题**

[复制链接]
发表于 2007-1-8 16:00:30 | 显示全部楼层 |阅读模式
我们要实现个收文办结,就是把在办的任务设置为已办,做了个测试在收文登记流转后 状态设置为在办,然后直接办结 ,所经历的功能只有收文登记,但流程轨迹显示经过所有功能,这是为什么?

jpg.rar

92.67 KB, 下载次数: 155

回复

使用道具 举报

 楼主| 发表于 2007-1-8 16:03:12 | 显示全部楼层
{ 办结 }
procedure TFRM_INFILEVIEW.tbnArchiveClick(Sender: TObject);
begin
  if dsbInFile.DataSet.IsEmpty then
  begin
    ShowWarning('对不起,没有数据记录', '注意');
    exit;
  end;
  if ConfirmBox('确实要办结本条记录吗?', '', 1) then
  begin
    LIB_GC.TLIB_GC.FinishFlowInTransaction(dsbInFile.DataSet, '2');
    dsbInFile.DataSet.Refresh;
  end;
end;
调用资源集
cSystemDataBase = 'DATABASEURL=Biz:\SYSTEM\System.DataBase';
static procedure TLIB_GC.FinishFlow(const AFlowID: string; AQuery: TQuery);
begin
  AQuery.ConnectionString := cSystemDataBase;

  AQuery.CommandText := 'UPDATE TFLOW SET FSTATE = ''fsFinished''' +
    'WHERE FGUID = (SELECT FFLOWGUID FROM TFLOWID WHERE FID=''' + AFlowID + ''')';
  AQuery.Execute;

  AQuery.Close;
  AQuery.CommandText := 'UPDATE TTASK SET FSTATE = ''tsFinished''' +
    'WHERE FFLOWGUID = (SELECT FFLOWGUID FROM TFLOWID WHERE FID=''' + AFlowID + ''')';
  AQuery.Execute;

  AQuery.Close;
  AQuery.CommandText := 'UPDATE TTASKMESSAGE SET FSTATE = ''tmsFinished''' +
    'WHERE FTASKGUID IN (SELECT FGUID FROM TTASK WHERE FFLOWGUID = ' +
    '(SELECT FFLOWGUID FROM TFLOWID WHERE FID = ''' + AFlowID + '''))';
  AQuery.Execute;
end;

static procedure TLIB_GC.FinishFlowInTransaction(Ads: TDataSet; const AFlag: string);
var
  lTransactionHandle: TTransactionHandle;
  lQuery: TQuery;
begin
  lQuery := TQuery.Create(nil);
  try
    lQuery.Connection := Ads.Connection;
    lQuery.Connection.Transaction := Ads.Connection.Transaction;

    with Ads.Connection.Transaction do
    begin
      lTransactionHandle := Start(False);
      try
        // 处理
        Ads.Edit;
        Ads.FieldByName('F_STATUS').AsString := AFlag;
        Ads.ApplyUpdates(True);

        lQuery.ConnectionString := cConnectionStr;
        FinishFlow(Ads.FieldByName('F_FLOWID').AsString, lQuery);

        Commit(lTransactionHandle);
      except
        Rollback(lTransactionHandle);
      end;
    end;
  finally
    lQuery.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-9 09:04:48 | 显示全部楼层
在线等。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-9 17:37:45 | 显示全部楼层
顶下
回复 支持 反对

使用道具 举报

发表于 2007-1-10 10:00:45 | 显示全部楼层
斑竹给个是否看到了这个帖子的信息好吗
回复 支持 反对

使用道具 举报

发表于 2007-1-10 14:51:42 | 显示全部楼层
楼主,这个问题有点复杂,从表现看,应该是个缺陷,

请到“任务表”中找一下,这个实例的任务是几个,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-10 18:31:27 | 显示全部楼层
通过数据库查询当前的流程实例就有两个任务,按照二楼的步骤能否重现这个问题呢
回复 支持 反对

使用道具 举报

发表于 2007-1-11 10:35:39 | 显示全部楼层
atiger,先说能重现这个问题吗^_^
回复 支持 反对

使用道具 举报

发表于 2007-1-11 15:08:06 | 显示全部楼层
atiger
回复 支持 反对

使用道具 举报

发表于 2007-1-11 16:28:53 | 显示全部楼层
已经作为缺陷提交了
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 16:02 , Processed in 0.049242 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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