起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 276|回复: 10

【结帖】[请求] 任务回收时,如何撤销文档的编辑状态?**

[复制链接]
发表于 2009-5-21 14:31:51 | 显示全部楼层 |阅读模式
流程是 A——>B——>C ,现在在每一个流程功能中都增加代码判断当前用户是否编辑文档,如果正在编辑文档则提示用户“文档正在编辑,不允许回退和流转”。

  现在遇到这样一个问题:如果C 正在编辑文档,这时B 将任务回收了,这个文档当前编辑人还是C ,所以B 回收后,无法将任务回退和流转,流程进入死机状态,所以在B 回收任务时需要判断关联文档的编辑状态,如果文档处于编辑状态,则要提示B :“文档正处于编辑,回收将撤销其他人的修改内容”。

   在 业务模型\协同系统\任务\任务中心信息 的代码里,没有文档关联的组件,请问如何将撤销文档编辑的代码加到任务回收的代码里?
回复

使用道具 举报

发表于 2009-5-21 15:32:32 | 显示全部楼层
你这个实现的过程我不太清楚,我觉得
可否直接访问文档关联的数据表去修改状态?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-21 16:02:07 | 显示全部楼层
直接操作平台的文档表风险太高了。

业务模型\协同系统\任务\任务中心信息 代码
procedure TTASKCENTERINFO.TaskFetchBack;
var
  lAutoSave: Boolean;
begin
  try
    FTaskExecution.Task := Task;
    lAutoSave := FTaskExecution.AutoSave;
    FTaskExecution.AutoSave := False;
    try
      // 如果C 正在编辑文档,则提示B:“如果回收,文档丢失修改内容!”,B 确认后将任务回收
      // 这里如何加撤销文档编辑的代码?

      FTaskExecution.FetchBack(nil, Context);
    finally
      FTaskExecution.AutoSave := lAutoSave;
    end;
  except
    if FTask <> nil then
      ReLoadTask;
    raise;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-21 16:05:47 | 显示全部楼层
在功能窗体里,有文档关联的组件 dvDoc,所以可以判断文档的状态,进行对应的操作,但在“业务模型\协同系统\任务\任务中心信息”里不行:

procedure TMAINFORM.FlowBroker1BeforeFlowOut(Sender: TObject; Command: TFlowOutCommand);
var
  temBool:Boolean;
  I:Integer;
begin
  temBool := False;
  while not (dvDoc.Doc as TRELEVANCYGRID).dsbRelevancy.DataSet.Eof do
  begin
   if  (dvDoc.Doc as TRELEVANCYGRID).dsbRelevancy.DataSet.FieldByName('FEDITSTATE').AsString<> 'esNone'  then
    begin
      temBool:=True;
      break
    end;
    (dvDoc.Doc as TRELEVANCYGRID).dsbRelevancy.DataSet.Next;
  end;

  if  temBool then
  begin
    raise Exception.Create('文档未上传,请上传后再流转');
  end;

end;
回复 支持 反对

使用道具 举报

发表于 2009-5-21 16:21:07 | 显示全部楼层
这个跟访问表有啥区别啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-25 10:22:53 | 显示全部楼层
请问 lixy 提交任务中的“回收”按钮事件如何判断当前附件的状态,并把附件文档设置为撤销编辑状态?
回复 支持 反对

使用道具 举报

发表于 2009-5-25 10:29:26 | 显示全部楼层
读数据表
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-25 10:46:47 | 显示全部楼层
1楼的问题本身是平台的缺陷,现在要完善这个BUG需要修改平台自带的文档关联表,这个工作对我们来讲风险很大,工作量也有极大的不确定性,能不能给一个例子或者可参照的方案,就告诉修改表,我怎么知道修改哪个表,改哪个字段,把字段改成什么,修改的表之间的关联关系如何,修改之后会对其他模块有什么影响,后续还可能会出现什么问题?

4楼的代码只是利用平台的组件判断文档状态和业务逻辑,并不是直接读表、写表
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-27 15:33:45 | 显示全部楼层
在3楼的代码事件里,没有数据组件,如何获取当前任务的GUID和其关联文档的GUID?

没有文档的GUID 又如何撤销文档的编辑状态?
回复 支持 反对

使用道具 举报

发表于 2009-5-31 09:26:45 | 显示全部楼层
想办法操作文档系统表,
把 下面3个字段的内容清空,那么就撤销编辑这个文档了:
当前修改人URL、当前修改人、当前修改部门
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 06:15 , Processed in 0.046662 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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