起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 279|回复: 14

【搞定】[问题] 终止流程出现错误!**

[复制链接]
发表于 2007-10-16 11:39:59 | 显示全部楼层 |阅读模式
在功能的终止流程中,增加删除文档的代码,增加在FlowBroker1 的AfterTaskAbort 事件中,先提示是否终止流程的提示,然后提示是否保存稿签的提示,最后提示删除文档的提示。

用户在终止流程时出现错误提示:“正在提交!”,后台的文档这时已经被被删除,但流程没有终止。如果再次进入功能信息界面,下方的文档管理栏内的文档图标变为不可识别的图标,再次终止流程报错:“文件"ATTACHOC946D7B5684B349C7AD3D9A73A1F95005.DOC"不存在”,这时流程无法终止。

如何能在后台文档已经不存在的情况下,系统自动判断将关联的文档信息删除? 或者在存在信息引用文档的情况下,用户无法从后台知识中心删除文档?

终止流程出错_文档图标无法识别.jpg

19.33 KB, 下载次数: 153

回复

使用道具 举报

 楼主| 发表于 2007-10-16 11:45:28 | 显示全部楼层

事件代码

procedure TMAINFORM.FlowBroker1AfterTaskAbort(Sender: TObject; Command: TTaskAbortCommand);
var
  docs: TStrings;
  i: integer;
  tmpBool:Boolean;
begin
  tmpBool := False;
  if  (dvDoc.Doc as TRELEVANCYDOC).listview.Items.Count >0 then
    tmpBool:=True;
  if  (dvAttach.Doc as TRELEVANCYDOC).listview.Items.Count >0 then
    tmpBool:=True;
  if tmpBool then
  begin
    if forms.Application.MessageBox('终止流程同时删除文档,是否继续?','提示',4  ) <> 6 then
    begin
      raise Exception.Create('流程未终止!');
    end;
    docs:=TStringList.Create;
    try
      (dvDoc.Doc as TRelevancyDoc).GetDocURLList(docs);
      for i:=0 to  docs.Count-1 do
      begin
        TDocSystem.DeleteFile(docs);
      end;
    finally
       docs.free;
    end;
    (dvDoc.Doc as TRelevancyDoc).DataSet.First;
    while not (dvDoc.Doc as TRelevancyDoc).DataSet.Eof   do
    begin
      (dvDoc.Doc as TRelevancyDoc).DataSet.Delete;
      (dvDoc.Doc as TRelevancyDoc).DataSet.ApplyUpdates;
    end;

      docs:=TStringList.Create;
    try
      (dvAttach.Doc as TRelevancyDoc).GetDocURLList(docs);
      for i:=0 to  docs.Count-1 do
      begin
        TDocSystem.DeleteFile(docs);
      end;
    finally
       docs.free;
    end;
    (dvAttach.Doc as TRelevancyDoc).DataSet.First;
    while not (dvAttach.Doc as TRelevancyDoc).DataSet.Eof   do
    begin
      (dvAttach.Doc as TRelevancyDoc).DataSet.Delete;
      (dvAttach.Doc as TRelevancyDoc).DataSet.ApplyUpdates;
    end;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-16 11:58:54 | 显示全部楼层
出现文件不存在的提示后,再次终止流程出现报错:

这时只有关闭功能,再次进入才可以继续终止流程。

终止流程报错.jpg

113.92 KB, 下载次数: 149

回复 支持 反对

使用道具 举报

发表于 2007-10-16 14:05:20 | 显示全部楼层
需求已经提交。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-16 15:19:54 | 显示全部楼层
这时无法终止的流程怎么处理?
回复 支持 反对

使用道具 举报

发表于 2007-10-16 15:29:13 | 显示全部楼层
手工把文件删掉后可以终止流程吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-16 16:12:11 | 显示全部楼层
此时的文件已经无法删除了,因为只有文档关联的信息,但是后台的文档已经不存在了,这时删除文档同样出现“文件... 不存在”的报错提示。
回复 支持 反对

使用道具 举报

发表于 2007-10-16 17:19:08 | 显示全部楼层
(dvDoc.Doc as TRelevancyDoc).DataSet.First;
    while not (dvDoc.Doc as TRelevancyDoc).DataSet.Eof   do
    begin
      (dvDoc.Doc as TRelevancyDoc).DataSet.Delete;
      (dvDoc.Doc as TRelevancyDoc).DataSet.ApplyUpdates;
    end;
   


   
      
    (dvAttach.Doc as TRelevancyDoc).DataSet.First;
    while not (dvAttach.Doc as TRelevancyDoc).DataSet.Eof   do
    begin
      (dvAttach.Doc as TRelevancyDoc).DataSet.Delete;
      (dvAttach.Doc as TRelevancyDoc).DataSet.ApplyUpdates;
    end;
   

   
以上代码即删除关联的代码。同步的问题后续会由平台提供升级解决。
已经发生问题的数据两个方法:
1。单独执行一下以上代码
2。去数据库文档关联表里面删除相应的记录即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-16 17:41:34 | 显示全部楼层
这段代码是没有办法单独运行的。

1楼的原因是因为在删除文档时出现错误,程序没有执行后面删除文档关联的操作而导致的,能否类似数据库的操作,删除可以回滚,如果出现错误则不进行任何操作,没有错误则执行所有代码?
回复 支持 反对

使用道具 举报

发表于 2007-10-16 18:13:33 | 显示全部楼层
9楼所说的后续版本会封装。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-28 23:53 , Processed in 0.044023 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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