起步软件技术论坛-X3

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

【搞定】启动流程的入口功能,但是窗体没有显示处来

[复制链接]
发表于 2007-10-23 09:47:57 | 显示全部楼层 |阅读模式
procedure TCGXform.UserStartFlow
(AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription:string);
var
  lBizURL: TBizURL;
  lFlowValue: TFlowValue;
  lFlowControl: TFlowControl;
  lExecutor: TOrgURL;
begin
  lBizURL := TBizURL.Create;
  lFlowValue := TFlowValue.Create;
  lFlowControl := TFlowControl.Create(Self.Context);
  lExecutor := TOrgURL.Create(ADept, ARole, APerson);
  lBizURL.URL := AFlowUrl;
  try
    lFlowValue.IDs.Add(AFlowID);//流程ID
    lFlowValue.Subject := ASubject;//流程主题
    lFlowValue.Description := ADescription;//流程描述
    //启动流程实例
    lFlowControl.StartupFlow(lBizURL, AStartProc, lExecutor, lFlowValue);
    //流程实例数据保存到数据库
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;
------------------------------------------------------------------------------------------------------
procedure TCGXform.DataGridDblClick(Sender: TObject);
var
{ lFunc: TFunc;
  SUrl: String; }
  ADept,ARole,APerson,AFlowID:String;
begin
{ SUrl := 'Biz:OPERATIONOASPACESQNG_func.Func';
  lFunc := SystemCore.TSYSTEMCORE.FuncManager.RunFunc(Context.Parent, '', SUrl, '', nil, False);    }

      //在主界面中需要获取用户信息时,由于还没有环境信息,所以必须使用此种方法。
  APerson:= TSystemCore.Operator.Positions[0].PersonMember.ID;  //当前操作者ID
  ARole:=  TSystemCore.Operator.Positions[0].PositionMember.ID;  //当前操作者岗位ID
  ADept:=  TSystemCore.Operator.Positions[0].PositionMember.Parent.ID;  //当前操作者部门ID
  //TSystemCore.Operator.Positions[0].PositionMember.Parent.Parent.ID //当前操作者机构ID

  AFlowID:= SWSQXX.TSWSQLB(DocViewSWSQXX_SWSQLB.doc).DataSetBrokerSWSQSJJ.DataSet.FieldByName('guid').asString;

   UserStartFlow('Biz:OPERATIONOASPACESWSQLC.Proc',ADept,ARole,APerson,'SQNG_FUNC',AFlowID,'继续拟写申请','继续拟写申请');

end;
=======================================
procedure TCGXform.BizFormCreate(Sender: TObject);
begin
//在功能窗体的 onShow 事件上,把DataGridDblClick 赋值给 DoCview1对应的DataGrid 的ondbClick事件,实现代码参考如下
SWSQXX.TSWSQLB(DocViewSWSQXX_SWSQLB.doc).DataGrid.OnDblClick :=  DataGridDblClick;

end;

现在,里面的参数传入的都正常,都正确。就是本功能运行完了。入口功能的主窗体没有打开。

1.jpg

24.32 KB, 下载次数: 148

回复

使用道具 举报

发表于 2007-10-23 10:08:17 | 显示全部楼层
你这是代码启动流程实例,并创建任务,没有要显示流程的入口功能的窗体的代码。或者run流程的入口功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-23 11:13:24 | 显示全部楼层
话不要说到一半,【流程的入口功能的窗体的代码。或者run流程的入口功能。】怎么改?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-23 11:19:00 | 显示全部楼层
现在任务中有了,就是没有打开窗体,
回复 支持 反对

使用道具 举报

发表于 2007-10-23 11:44:09 | 显示全部楼层
呵呵,我没有说一半,我感觉你没有看懂这段代码的意思,所以你才问这样的问题的,要不,看到的现象是对的,正常的。

这些代码这句 lFlowControl.StartupFlow(lBizURL, AStartProc, lExecutor, lFlowValue);
是关键,它的意思是 给 lBizURL 流程的 AStartProc 这个环节产生一个任务,任务的接收者是lExecutor,lFlowValue存储了流程ID、任务主题等信息

你的问题应该是由这里产生的 http://bbs.justep.com/forum.php?mod=viewthread&tid=18851
我感觉,好像你理解需求有偏差,陷进自己的思路了,要不这样,你把原始的需求说来听听,我们一起想办法,好吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-24 08:30:39 | 显示全部楼层
我有个流程,其中“拟写申请”是第一个入口功能。然后有一个“草稿箱”保存作为草稿的“拟写申请”列表。我想在双击草稿箱中的记录的时候,能够打开“拟写申请”,同时带入当前所选记录数据。然后能正常流转. 我的需求就这么简单啊!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-24 08:31:44 | 显示全部楼层
现在就是,我流转的时候,在任务列表中有任务,但是没有打开入口功能窗体
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-24 08:41:29 | 显示全部楼层

视频

视频

录像2.rar

950.08 KB, 下载次数: 65

回复 支持 反对

使用道具 举报

发表于 2007-10-24 09:48:27 | 显示全部楼层
已经跟楼主电话沟通过了,这样做没有真实体现平台的特性,且这样做越来越麻烦

楼主的需求,在入口功能录入多条数据,只要没有流转走的数据,都可能随时被修改,然后进行流转,这样只有在入口功能做,结合流程的启动规则的重复处理数据范围很简单就能实现了,参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=1868  这个就可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-24 11:22:50 | 显示全部楼层
OK!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 01:05 , Processed in 0.045954 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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