起步软件技术论坛-X3

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

[分享]根据需要做一个查询任务的功能,并且可以运行查询到的任务

[复制链接]
发表于 2007-10-29 18:34:43 | 显示全部楼层
学三楼做了。。。
找出21条 SELECT * FROM TFLOWID WHERE FID = '24' 也弹出21个不同的流程图

是不是过滤不够啊。。。

uses
  Business.System, Business.Model, Business.Forms, Business.Data,
  Business.Model.Flow, Business.Model.Org,SystemCore ;

//查询流程ID表,根据流程ID,查询出对应的FlowGuid值
procedure TMainForm.DoGetFlowGUIDs(const AFlowID: string; AFlowGUIDs: TStrings);
var
  Query : tQuery ;

begin
  Query := tQuery.Create(nil)  ;
  Query.ConnectionString := 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
  Query.CommandText := 'SELECT FFLOWGUID FROM TFLOWID WHERE FID = '+ ''''+AFlowID+'''' ;
  Query.Open;
  while not Query.Eof do
  begin
    AFlowGUIDs.Add(Query.FieldByName('FFLOWGUID').AsString);
    Query.Next;
  end;
  Query.Close;
end;

procedure TMainForm.DataGridSwichForms(ColumnName : string);   // TGLLRCT为本窗体
var
  ColumnList : TStringList ;
  lDetailForm : TXXXXCKCT;
begin
  ColumnList := TStringList.Create;
  ColumnList.Add('详细信息');   //""内的内容为表达式字段的名称
  case ColumnList.IndexOf(ColumnName) of
    0:
      begin
        lDetailForm := TXXXXCKCT.Create(Context);
        try
          lDetailForm.Showmodal;
        finally
          lDetailForm.Free;
        end;
       end;
   end;
end;

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

  lFlowParam := TLoadFlowParam.Create;
  lFlows := TObjectList.Create;
  try
    //根据ProductID,找到对应的流程Guid值
    DoGetFlowGUIDs(lDataSet.FieldByName('Inst_ID').AsString, lFlowParam.GUIDs);
    //以给定的条件查询流程实例(这里给定的条件由lFlowParam给出,根据流程Guid值查询)
    Flow.FlowEngine.GetFlows(lFlowParam, lFlows);
    Dialogs.Showmessage(SysUtils.IntToStr(lFlows.Count));
    for i:=0 to lFlows.Count-1 do
      SystemCore.TSystemCore.SystemInterface.ShowFlowView(lFlows as TFlow);
  finally
    lFlowParam.Free;
    lFlows.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 09:19:57 | 显示全部楼层
3楼是按照流程ID过滤的,你可以增加几个条件啊,比如增加流程的BizURL作为条件,多提供条件就很容易定位到需要的流程实例了
回复 支持 反对

使用道具 举报

发表于 2007-10-30 09:23:21 | 显示全部楼层
最初由 alang 发布
[B]3楼是按照流程ID过滤的,你可以增加几个条件啊,比如增加流程的BizURL作为条件,多提供条件就很容易定位到需要的流程实例了 [/B]


上面是我的实例,要在哪写 如何写。。。

直接提示。。。。麻烦你们啦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 09:35:06 | 显示全部楼层
看看2楼的注释
你只要在 GetFlows 之前设置一下
lFlowParam.ProcURLs.Add('Biz:\LZ\YWLC1.Proc')
就可以了
回复 支持 反对

使用道具 举报

发表于 2007-10-30 11:53:07 | 显示全部楼层
学3楼 引用了任务中心

任务处理时 会显示
List index out of bounds(0)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 11:56:43 | 显示全部楼层
那你看看查询结果是不是空啊
lFlows.Count是多少?
回复 支持 反对

使用道具 举报

发表于 2007-10-30 11:59:42 | 显示全部楼层
这个任务处理完成的 会出这样的错误。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 12:02:45 | 显示全部楼层
那你跟踪一下,看错误出在哪里
我上面给你的例子,在我的环境都运行过,没有出现错误的
回复 支持 反对

使用道具 举报

发表于 2007-10-30 12:11:17 | 显示全部楼层
lFlowParam.Free;  这个会出错
List index out of bounds(0),这个流程是已完成的

procedure TMainForm.btnRunTaskClick(Sender: TObject);
var
  lTaskParam: TLoadTaskParam;
  lFlowParam: TLoadFlowParam;
  lTasks: TTasks;
  lDataSet : TDataSet;
begin
  lDataSet := DataSetBroker.DataSet;
  if not lDataSet.Active or lDataSet.Eof then
    Exit;

  lFlowParam := TLoadFlowParam.Create;
  lTaskParam := TLoadTaskParam.Create;
  lTasks := TTasks.Create;
  try

    //根据ProductID,找到对应的流程Guid值
    DoGetFlowGUIDs(lDataSet.FieldByName('Inst_ID').AsString, lFlowParam.GUIDs);
    lTaskParam.States := [TTaskState.tsStarted, TTaskState.tsProcessing, TTaskState.tsWaiting];
    //流程模型的BizURL
    lFlowParam.ProcURLs.Add('Biz:\DMISXT\ZDHXSBTZTCLC.Proc') ;
    //以给定的条件查询任务(这里给定的条件由lFlowParam给出,根据流程Guid值查询,lTaskParam条件是按照任务状态,只查询出需要处理的任务)
    Flow.FlowEngine.GetTasks(lFlowParam, lTaskParam, lTasks);
    SystemCore.TSystemCore.FuncManager.RunTask(SystemCore.TSystemCore.Operator.Positions[0], lTasks[0]);
  finally
    lFlowParam.Free;
    lTaskParam.Free;
    lTasks.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 13:42:06 | 显示全部楼层
lFlowParam.Free;  这个会出错

这个不应该的,抓个图看看
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-2 19:46 , Processed in 0.041068 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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