起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 455|回复: 20

文件流转速度问题(一个文件居然要半个小时)

[复制链接]
发表于 2009-2-18 11:21:01 | 显示全部楼层 |阅读模式
现在发文的速度很慢,在使用高峰的时候向下面单位(有50多个单位)发文件的时候居然需要等待半个小时左右,现在在初步分析了一下,在发文件的时候 这个函数 lFlowControl.StartupFlow 每次执行时间居然占用了3 秒钟(每个人收到文件的时候这个函数都要执行一次,还有人设置了自动转发,每收到一个文件任务表会产生将近400条任务),请问有什么比较好的解决办法?时间比较紧,领导很关心这个问题。

同时保存流程实例的时候有时也需要3秒
lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;

目前暂时发现这二个函数,这只是其中一个,还在继续分析另外一个函数。
回复

使用道具 举报

发表于 2009-2-18 11:30:00 | 显示全部楼层
lFlowControl.StartupFlow 你把断点设到这个位置,确认下是不是这个函数执行慢。然后用客户端监视工具,看一下是否有sql语句发送。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-18 11:31:30 | 显示全部楼层
在这句的前后加了
CSSDGGZY.TCSSDGGZY.Test_WriteInfo('流程实例');
这个计时器。
时间差为3秒
回复 支持 反对

使用道具 举报

发表于 2009-2-18 11:33:19 | 显示全部楼层
最初由 lixy 发布
[B]lFlowControl.StartupFlow 你把断点设到这个位置,确认下是不是这个函数执行慢。然后用客户端监视工具,看一下是否有sql语句发送。 [/B]
回复 支持 反对

使用道具 举报

发表于 2009-2-18 17:11:18 | 显示全部楼层
经过我的测试,用楼主的方法。我的测试结果是
----------30808875
方法1测试开始
----------30809265
方法1测试结束
390毫秒
----------------测试代码

procedure TMainForm.Button1Click(Sender: TObject);
var
  lBizURL: TBizURL;
  lFlowValue: TFlowValue;
  lFlowControl: TFlowControl;
  lExecutor: TOrgURL;
  v_b: Boolean; //是否定位成功
  lFlowGUID: String;
  lTaskGUID: String;
  AutoSendFlag: String;
  AutoOutSendFlag: String;
  sNames: String;
  SenderList: String;
  OutSenderList: String;
  SendUnit: String;
  sOutNames: string;
  OutSendUnit: String;
  SenderName: String;
  SenderJG: String;
  SenderBM: String;
  SenderGW: String;
  SendSubject: String;//发送标题
  lOrgUnit: Business.Model.Org.Torgunit;
// lQuery : Business.Data.TQuery;
   v_time: TDateTime;
begin
   CSSDGGZY.TCSSDGGZY.Test_WriteInfo('方法1测试开始');
  lBizURL := TBizURL.Create;
  lFlowValue := TFlowValue.Create;
  lFlowControl := TFlowControl.Create(Self.Context);
  lExecutor := TOrgURL.Create('bm1', 'gw1', 'ry1');
  lBizURL.URL := 'Biz:\OPERATION\CSLCQD_LC.Proc';


  try

    lFlowValue.IDs.Add('2607B0A932F846EA8A206401544ACF13');//流程ID      
    lFlowValue.Subject := '启动方法1流程'; //流程主题
    //lFlowValue.Description := ADescription;//流程描述
    //启动流程实例
    lFlowControl.StartupFlow(lBizURL, 'CSLCQD_GN1', lExecutor, lFlowValue);
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.State := business.Model.Flow.TTaskState.tsStarted;
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.ExtendAttributeAsString['ESField01']:=Business.System.SysUtils.FormatDateTime('yymmddhh:nn', Business.Data.SysSrv.SysService.Time );
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.ExtendAttributeAsString['ESField02']:='收文';

    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.Subject := '方法1_'+ sysutils.DateTimeToStr(sysutils.Now);
//    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.PrevGUID := FlowBroker1.FlowControl.CurrentTask.GUID;//填充前任务ID

   { if edit1.Text <>'0' then
      begin
           v_time:=Business.Data.SysSrv.SysService.Time+ObjectHelper.toFloat(edit1.text);
           lFlowControl.FlowRunnerbyIndex[0].CurrentTask.ExtendAttributeAsString['ESField04']:=Business.System.SysUtils.FormatDateTime('yyyy-mm-dd hh:nn:ss', v_time);
           lFlowControl.FlowRunnerbyIndex[0].CurrentTask.ExtendAttributeAsString['ESField05']:='0';
      end;
    }
    //流程实例数据保存到数据库
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;
    finally
    lFlowControl.Free;
    lFlowValue.Free;
    lBizURL.Free;
    lExecutor.Free;
   // lQuery.Free;
  end;
       CSSDGGZY.TCSSDGGZY.Test_WriteInfo('方法1测试结束');
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 17:02:48 | 显示全部楼层
对数据库进行查询,速度很慢,这个是数据库的一些信息CPU占用率最少为70%,

sas.jpg

65.23 KB, 下载次数: 164

回复 支持 反对

使用道具 举报

发表于 2009-2-19 17:12:46 | 显示全部楼层
楼主,什么意思啊?
你是怀疑Oracle有问题,导致了流转慢吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 17:15:43 | 显示全部楼层
我只是怀疑而已,现在做一个简单的查询速度比较慢,打开一个功能速度也很慢,不知道平台连接oracle,oracle出现这样的记录是否属入正常情况。
回复 支持 反对

使用道具 举报

发表于 2009-2-19 17:21:48 | 显示全部楼层
我觉得不算正常情况。
想办法监控下Oracle吧,看看在干什么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 20:32:32 | 显示全部楼层
占用时间都是类似这样的语句

SELECT * FROM TTASKMESSAGE WHERE FCLIENTACCOUNT = 'RZPORT' and FTASKGUID IN('B5FBF9F081394EB0A5F8DD23BD3FB259')
SELECT * FROM TTASKBIZDATA WHERE FCLIENTACCOUNT = 'RZPORT' and FTASKGUID IN('B5FBF9F081394EB0A5F8DD23BD3FB259')
SELECT * FROM TTASK WHERE FCLIENTACCOUNT = 'RZPORT' and FGUID IN('B5FBF9F081394EB0A5F8DD23BD3FB259')
SELECT * FROM TFLOWID WHERE FCLIENTACCOUNT = 'RZPORT' and FFLOWGUID IN('20ADC04199F94B23866986F50D647AC0')
SELECT * FROM TFLOW WHERE FCLIENTACCOUNT = 'RZPORT' and FGUID IN('20ADC04199F94B23866986F50D647AC0')

SELECT * FROM TTASK WHERE FCLIENTACCOUNT = 'RZPORT' and FGUID IN('8D083AE21FA4406DA629FCCBC75CD3DD')
SELECT * FROM TTASKMESSAGE WHERE FCLIENTACCOUNT = 'RZPORT' and FTASKGUID IN('8D083AE21FA4406DA629FCCBC75CD3DD')

做前表扫描,速度肯定慢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 17:00 , Processed in 0.049879 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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