起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: caoyeziqq

【结】一个在启动模式是“处理时”问题**

[复制链接]
 楼主| 发表于 2008-2-27 13:13:57 | 显示全部楼层

我的是2918啊

我的是2918.

新建文件夹.rar

131.45 KB, 下载次数: 56

回复 支持 反对

使用道具 举报

发表于 2008-2-27 15:07:12 | 显示全部楼层
楼主,对你前面的描述理解有点偏了。
5楼说的现象是正常的,不怪
当我连续录入两条业务数据并保存的时候,他只会在代办任务中显示连续录入的第一条业务数据的任务消息,第二条就算刷新主界面也显示不出来
这是因为两个数据的流程字段的值肯定不一样,当打开任务的时候,仅仅能看到的当前流程实例的流程字段值对应的那条记录,还有一条被过滤掉了。(后面说 先录入一条再关掉窗体,然后打开窗体再录入一条,才能显示两条任务消息. 这个道理是一样的,因为创建了两次流程实例,对应了不同的流程字段的值)

11楼的资源包,正在看,稍后跟帖反馈结果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-27 15:43:50 | 显示全部楼层

不是打开任务的时候而是在主界面的代办任务中只能看见一条任务消息

不是打开任务的时候而是在主界面的代办任务中只能看见一条任务消息.
回复 支持 反对

使用道具 举报

发表于 2008-2-27 15:56:53 | 显示全部楼层
我看了你资源,看不出问题,

你这样把,还是通过导出工具(Exporter.exe),把这部分资源导出来,我恢复环境运行起来看一下效果,

另外,你最后能录入一下你操作的步骤,便于我理解你的操作步骤,好吗?

要不,我远程看一下你的机器?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-27 16:13:00 | 显示全部楼层

远程看一下,谢谢

远程看一下吧.谢谢
回复 支持 反对

使用道具 举报

发表于 2008-2-27 16:15:28 | 显示全部楼层
请主动跟呼我,261627143
回复 支持 反对

使用道具 举报

发表于 2008-2-28 08:43:30 | 显示全部楼层
1楼的需求 “怎么样避免出现多条任务消息对应一条业务数据”
可以在入口环节上截获AfterFlowStartup事件,在这个事件中检查这条业务数据时候已经启动了流程,如果已经启动了,就Command.Accept := False就可以了

检查这条业务数据时候已经启动了流程 可以参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=18984
回复 支持 反对

使用道具 举报

发表于 2008-2-28 09:08:37 | 显示全部楼层
在不修改流程字段的情况下,使用下面的方法可以避免启动重复的流程。

procedure TMainForm.DoGetFlowGUIDs(const AFlowID: string; AFlowGUIDs: TStrings);
begin
  Query.CommandText := SysUtils.Format('SELECT FFLOWGUID FROM TFLOWID WHERE FID = ''%s''', [AFlowID]);
  Query.Open;
  while not Query.Eof do
  begin
    AFlowGUIDs.Add(Query.FieldByName('FFLOWGUID').AsString);
    Query.Next;
  end;
  Query.Close;
end;

procedure TMainForm.FlowBroker1BeforeFlowStartup(Sender: TObject; Command: TFlowStartupCommand);
var
  lTaskParam: TLoadTaskParam;
  lFlowParam: TLoadFlowParam;
  lTasks: TTasks;
  lFlows: TObjectList;
  i: Integer;
  lDataSet : TDataSet;
begin
  lDataSet := DataSetBroker1.DataSet;
  if not lDataSet.Active or lDataSet.Eof then
    Exit;

  lFlowParam := TLoadFlowParam.Create;
  lFlowParam.ProcURLs.Add('Biz:\YANCMPRIVATE\PROC\YWLC2.Proc');
  lFlows := TObjectList.Create;
  try
    //根据ProductID,找到对应的流程Guid值
    DoGetFlowGUIDs(lDataSet.FieldByName('ID').AsString, lFlowParam.GUIDs);
    //以给定的条件查询流程实例(这里给定的条件由lFlowParam给出,根据流程Guid值查询)
    Flow.FlowEngine.GetFlows(lFlowParam, lFlows);
    Dialogs.Showmessage(SysUtils.IntToStr(lFlows.Count));
    if lFlows.Count>0 then
    begin
      Command.Accept:=false;
    end;
  finally
    lFlowParam.Free;
    lFlows.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-28 10:35:49 | 显示全部楼层

好象BeforeFlowStartup事件与流程的能否多次启动是冲突的

好象BeforeFlowStartup事件与流程的能否多次启动是冲突.此事件会被多次启动屏蔽掉,所以不起作用.而如果不多次启动的话,当连续输入两条记录的话,只会产生一条业务消息.
回复 支持 反对

使用道具 举报

发表于 2008-2-28 15:51:54 | 显示全部楼层
修改一下18楼的代码:
procedure TMainForm.DoGetFlowGUIDs(const AFlowID: string; AFlowGUIDs: TStrings);
begin
  Query.CommandText := SysUtils.Format('SELECT FFLOWGUID FROM TFLOWID WHERE FID = ''%s''', [AFlowID]);
  Query.Open;
  AFlowGuids.Clear;
  while not Query.Eof do
  begin
    AFlowGUIDs.Add(Query.FieldByName('FFLOWGUID').AsString);
    Query.Next;
  end;
  Query.Close;
end;

procedure TMainForm.FlowBroker1BeforeFlowStartup(Sender: TObject; Command: TFlowStartupCommand);
var
  lTaskParam: TLoadTaskParam;
  lFlowParam: TLoadFlowParam;
  lTasks: TTasks;
  lFlows: TObjectList;
  i: Integer;
  lDataSet : TDataSet;
begin
  lDataSet := DataSetBroker1.DataSet;
  if not lDataSet.Active or lDataSet.Eof then
    Exit;

  lFlowParam := TLoadFlowParam.Create;
  lFlowParam.ProcURLs.Add('Biz:\YANCMPRIVATE\PROC\YWLC2.Proc');
  lFlows := TObjectList.Create;
  try
    //根据ProductID,找到对应的流程Guid值
    DoGetFlowGUIDs(lDataSet.FieldByName('ID').AsString, lFlowParam.GUIDs);
    //以给定的条件查询流程实例(这里给定的条件由lFlowParam给出,根据流程Guid值查询)
    if lFlowParam.GUIDs.Count>0 then
      begin
      Flow.FlowEngine.GetFlows(lFlowParam, lFlows);
      Dialogs.Showmessage(SysUtils.IntToStr(lFlows.Count));
      if lFlows.Count>0 then
      begin
        Command.Accept:=false;
      end;
    end;
  finally
    lFlowParam.Free;
    lFlows.Free;
  end;
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-7 18:22 , Processed in 0.044133 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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