起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1066|回复: 25

如何在流程功能外,通过代码控制流程(不仅是启动,还可能是流转,回退)**

[复制链接]
发表于 2008-9-24 10:51:26 | 显示全部楼层 |阅读模式
紧急求助,我的需要本质上是: 在一个完全与流程A无关的功能里,根据我的业务数据,控制流程A(不仅是启动,还可能是流转,回退).

假如我知道了流程A一个实例的当前任务是"AE92B76439434F20BC9E9CBB8521DD7C",也知道了该任务的一条消息"1A55300A062043628E95205A98438294",
我该如何构造工作流的上下文信息(Context),并如何使用相关类,来实现我的目的?

下面是我的测试代码:

procedure TFRM_BXDCX.Button1Click(Sender: TObject);
var
  tpFC: TFlowControl;
  tpList:Tlist;
  tpTask:Business.Model.Flow.TTask;
  tpTask2:TTask;
  tpEngine:TFlowEngine;
  tpContext:TContext;
  tpMessage:Business.Model.Flow.TTaskMessage;
  tpOrgUrl:TBizUrl;
begin
  tpList:=Tlist.Create;
  try
    tpEngine:=TFlowEngine.Create;
    tpTask:=Business.Model.Flow.TTask.Create;
    tpEngine.LoadTask('AE92B76439434F20BC9E9CBB8521DD7C',tpTask);
    tpMessage:=tpTask.TaskMessages.FindTaskMessage('1A55300A062043628E95205A98438294');
    tpTask.TaskMessages.Add(tpMessage);
    tpList.Add(tpTask);

    tpTask2 := TaskLib.TTask.Create;
    tpTask2.Assign(tpTask);

    tpContext := TaskLib.TTaskServices.FindTaskRunContext(Context,tpTask2,tpTask2.TaskMessages[0]);
    tpFC := TFlowControl.Create(tpContext);
    try
       tpOrgUrl:=TBizUrl.Create;
       tpOrgUrl.URL:='Biz:ROOTJYGS.OGNFZGHB.DPTBMJL.PTMFZGHBZ.PSM';
       tpFC.Executor:=TOrgURL.Create(tpOrgUrl);
       tpFC.InitializationByTask(tpTask);
       tpFC.FlowOut(tpList);
    finally
      tpFC.Free;
    end;
  finally
    tpList.Free();
  end;
end;

目前的测试代码报错如图所示!

r.jpg

94.01 KB, 下载次数: 419

回复

使用道具 举报

 楼主| 发表于 2008-9-24 10:59:14 | 显示全部楼层
似乎已解决,TFlowControl.Create的Context取当前窗体的即可。不知对否?如果是这样,通过Message来取的context一般用来干吗啦?再者,不明白你们自己的类库,为什么会出现重名的事情?!TTask在Business.model.Flow中有,在TaskLib中也有,TTaskMessage也是,可以的话,解释一下它们的用法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-24 11:04:58 | 显示全部楼层
本人对X3尚不熟悉,再问一个问题!tpFC.InitializationByTask(tpTask)是否确实需要在tpFC.FlowOut(tpList)之前调用?tpFC.FlowOut传nil时,是否意味着由FlowControl自动感知当前功能窗体的当前工作流任务;传入参数,是否就意味着处理传入的任务?两个问题,谢谢!
回复 支持 反对

使用道具 举报

发表于 2008-9-24 11:57:43 | 显示全部楼层
楼主,这段代码是从哪里找到的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-24 15:03:25 | 显示全部楼层
还没帮我解答问题啦! "从哪里找到的?" ,不知何意?!
回复 支持 反对

使用道具 举报

发表于 2008-9-24 15:13:35 | 显示全部楼层
哦,我对这段代码不熟悉,想了解一下楼主是从哪里看到的,我去找资料学习一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-24 15:23:02 | 显示全部楼层
代码是自己写的,参考了贵公司论坛上的一些代码。我的事情很着急,麻烦帮我找找内行问问!谢谢!
回复 支持 反对

使用道具 举报

发表于 2008-9-24 15:45:11 | 显示全部楼层
楼主,你把你参考的帖子连接贴出来,给我看看吧。
我没有找到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-24 16:03:06 | 显示全部楼层
哥们,要解决我的问题,得基于你对你们产品内部实现的了解。我的问题是不是有什么地方描述的不清楚?

不知道你非要找我说的贴子干什么,看我的代码不能回答问题吗?!我的代码不是抄的,是自己写的,我只是参考了论坛里的一些知识。

搜"流程","FlowControl","代码启动流程",一大堆啦,这些帖子我全看了。但是你去看这些帖子没有意义,因为我现在要解决的问题在这些帖子里没有提过,也找不到我的代码。
回复 支持 反对

使用道具 举报

发表于 2008-9-24 17:10:12 | 显示全部楼层
楼主,你的这种用法我从来没有见过,所以非常好奇。希望能看到更多资料。

用流程引擎流转任务,需要完整的流程环境(包括:流程、任务对应的功能),否则无法流转。1楼的错误应该与这个有关。

我觉得,你这种做法不行,必须的把功能也运行起来。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-28 02:51 , Processed in 0.040839 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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