起步软件技术论坛-X3

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

流程轨迹显示问题

[复制链接]
发表于 2011-1-18 08:37:46 | 显示全部楼层
回8楼
property cFlow: TFlow read FFlow write FFlow;   
不需要放FlowBroker,因为查询功能可能不在任何流程环境里,放了也没用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-18 09:19:26 | 显示全部楼层
最初由 dynasty0628 发布
[B]9楼的
你这样查询功能必须是流程中的某个环节才行吧
可能楼主需要的是在一个普通的查询功能中显示流程。 [/B]

嗯 对就是没有FlowBroker,只是一个简单的查询
回复 支持 反对

使用道具 举报

发表于 2011-1-18 09:51:18 | 显示全部楼层
参考吧。下面的是根据当前记录获取任务,6楼的代码是根据任务加载轨迹

property cTask: TTask read FTask write FTask;
property cFlow: TFlow read FFlow write FFlow;

if DataSetBroker.DataSet.RecordCount <> 0 then
  begin
    lQuery:= TQuery.Create(nil);
    try
    lQuery.ConnectionString := 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
    lQuery.CommandText := 'select FTASKGUID as FGUID from TTASKBIZDATA'
                      + ' where FKEYVALUE0='''+ DataSetBroker.DataSet.FieldByName(GetKeyField).AsString +''''
                      + ' and FKEY0='''+ SysUtils.UpperCase(FlowField) +'''';

    lQuery.OPen;
    if cTask = nil then
     cTask:= TTask.Create;
    if lQuery.RecordCount <> 0 then
        begin
          lQuery.First;
          cTask.LoadFromDB(lQuery.FieldByName('FGUID').AsString);
          while (not lQuery.Eof) and (cTask.NextGUID <> '-1') do
          begin
            cTask.LoadFromDB(lQuery.FieldByName('FGUID').AsString);
            lQuery.Next;
          end;
        end
    else
    cTask:= nil;
   // LoadTrack;
  finally
  lQuery.Free;
  end;
end
else
begin
    FlowPertView.Flow:= nil;
   FlowGanttView.Flow:= nil;
   FlowTrackView.Flow:= nil;
end;
回复 支持 反对

使用道具 举报

发表于 2011-1-18 11:57:20 | 显示全部楼层
哇塞,两种方法测试都成功了,全都收集。谢谢啦!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-18 15:36:11 | 显示全部楼层
最初由 aboy 发布
[B]哇塞,两种方法测试都成功了,全都收集。谢谢啦! [/B]


property cTask: TTask read FTask write FTask;
property cFlow: TFlow read FFlow write FFlow;

我这这两行代码报错。
提示未定义FTask和FFlow
回复 支持 反对

使用道具 举报

发表于 2011-1-18 15:41:29 | 显示全部楼层
他的代码没有给全的,你取他有用的东西就可以了,自己再补充点啊!
回复 支持 反对

使用道具 举报

发表于 2011-1-18 15:43:02 | 显示全部楼层
我的方法:
放置 DocView 通过DocClassID关联到轨迹(业务系统-公共-运行期基础资源-OA模型-流程监控信息-轨迹)

1.1. 在流程环境里通过流程控件处理
if FlowBroker1.FlowControl.Flow <> nil then
     begin
       OAFLOWMONITORINFO.TFlowView(DocView1.Doc).Flow := FlowBroker1.FlowControl.Flow;
     end;
这里的OAFLOWMONITORINFO 为流程监控信息,DocView1 为引用了流程轨迹的docview


2.不在流程环境里通过流程ID处理
procedure TWPCGSQFORM.Button4Click(Sender: TObject);
var
cFlow: TFlow;
cTask: TTask;
lQuery:TQuery;
begin
  if FlowBroker1.FlowControl.Flow <> nil then
     begin
       cFlow := TFlow.Create;
       lQuery:= TQuery.Create(nil);
       try
         lQuery.ConnectionString := 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
         lQuery.CommandText := 'select FTASKGUID as FGUID from TTASKBIZDATA'
                        + ' where FKEYVALUE0='''+ dsbMaster.DataSet.FieldByName('Stock_ID').AsString +'''';
         lQuery.OPen;
         if cTask = nil then
           cTask:= TTask.Create;
        if lQuery.RecordCount <> 0 then
          begin
            lQuery.First;
            cTask.LoadFromDB(lQuery.FieldByName('FGUID').AsString);
            while (not lQuery.Eof) and (cTask.NextGUID <> '-1') do
            begin
              cTask.LoadFromDB(lQuery.FieldByName('FGUID').AsString);
              lQuery.Next;
            end;
            Flow.FlowEngine.LoadFlow(cTask.FlowGUID, cFlow);
            OAFLOWMONITORINFO.TFlowView(DocView1.Doc).Flow :=cFlow;
          end
        else
          begin
            cTask.Free;
            cTask:= nil;
          end;
      finally
        cFlow.Free;
        lQuery.Free;
      end;
     end;
end;


dsbMaster.DataSet.FieldByName('Stock_ID').AsString  为流程ID
回复 支持 反对

使用道具 举报

发表于 2011-1-18 16:17:24 | 显示全部楼层
17楼稍微有点问题
lQuery.CommandText := 'select FTASKGUID as FGUID from TTASKBIZDATA'
                        + ' where FKEYVALUE0='''+ dsbMaster.DataSet.FieldByName('Stock_ID').AsString +'''';

还需要在where部分加流程字段,否则,如果碰巧两个不同业务有相同的主键值,会有问题。
打开TTASKBIZDATA这个表研究下数据就会明白。

还有,既然不在流程环境里了,干嘛还要放flowbroker控件?
回复 支持 反对

使用道具 举报

发表于 2011-1-18 16:42:03 | 显示全部楼层
楼上,正解。谢谢!


自己做了第一个,就顺便把第二个也测试了,
忘了 删除 if FlowBroker1.FlowControl.Flow <> nil then 了
不好意思。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-20 10:21:23 | 显示全部楼层
最初由 aboy 发布
[B]他的代码没有给全的,你取他有用的东西就可以了,自己再补充点啊! [/B]

嗯 搞定了
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 18:48 , Processed in 0.037137 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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