起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 欧诺万德

【搞定】[新版]**

[复制链接]
 楼主| 发表于 2007-7-10 09:53:57 | 显示全部楼层
填写的执行人和实际执行人是同一人,需求就是实现转发,是把过滤出来的代办任务列表里的任务转发给某人,
但七楼的方法并不是实现转发,等于是直接把接收人改了,等于是原先的任务强制换了个接收人而已
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-10 15:17:52 | 显示全部楼层
都一天了,没人解决吗
回复 支持 反对

使用道具 举报

发表于 2007-7-10 16:34:23 | 显示全部楼层
直接在你需要转发的任务里面设定转发规则就可以实现转发
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 10:39:05 | 显示全部楼层
回答速度又慢,回答了还等于没回答,浪费时间,之前又说了是用代码遍历实现转发了,实现转发不可能就改一接收人吧,应该是把任务转给其他人处理,接收时间,状态,任务来源,都不一样的,你们自己做的转发难道就是把原来的任务改了一接收人???
回复 支持 反对

使用道具 举报

发表于 2007-7-12 10:51:24 | 显示全部楼层
代码实现转发,需要自己创建一个流程环境,比较麻烦。

1、为每一个待办任务创建一个流程环境(FlowControl)
2、运行起这个任务(不需要启动功能)
3、代码执行转发动作flowcontrol 的 function FlowTransmit(ATasks: Business.System.TList): Boolean;


楼主可以参考一下流程监控功能或者系统核心库的RunTask方法,不过有些不同,你们不需要运行功能,而是启动任务后直接流转
function TFuncManager.RunTasks(AContext: TContext; ATasks: TList;
  AExecutor: TOrgURL): TFunc;
var
  I: Integer;

  lTask: TTask;
  lFuncURL: string;

  lUIDs: TStringList;
  lFlowControl: TFlowControl;
begin
  lTask := ATasks[0] as TTask;
  lFuncURL := GetFuncURLByTask(lTask);
  if lFuncURL = '' then
    raise Exception.CreateFmt('找不到与任务''%s''对应的业务功能', [lTask.Subject]);

  lUIDs := TStringList.Create;
  try
    for I := 0 to ATasks.Count - 1 do
      lUIDs.Add(GetTaskUniqueID(ATasks[I] as TTask));
    lFlowControl := TFlowControl.Create(AContext);
    try
      lFlowControl.ExecuteTask(ATasks, AExecutor);
      Result := CreateFunc(lFlowControl.Context, lFuncURL);
      try
        lFlowControl.Func := Result;
        InternalRunFunc(Result, '', lUIDs, nil, False);
      except
        Result.Free;
        raise;
      end;
    except
      lFlowControl.Free;
      raise;
    end;
  finally
    lUIDs.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 11:08:56 | 显示全部楼层
好的 ,我们先研究下,先结帖吧
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-12 12:07 , Processed in 0.034438 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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