起步软件技术论坛-X3

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

【结贴】通知默认执行者的问题

[复制链接]
发表于 2009-4-14 11:31:03 | 显示全部楼层 |阅读模式
发布通知申请在审批后进行流转时,其默认执行者是平台自身取的上级管理者.现在我想将某个环节流转的默认执行者改为前驱环节执行者(即谁发给我审的,我审完了默认就流转给谁).我在执行者范围中设定没有效果.如果要自己取该怎么处理?
回复

使用道具 举报

发表于 2009-4-14 11:33:25 | 显示全部楼层
执行者范围里面设置选择【取环节的执行者】,注意功能的授权
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-14 13:51:18 | 显示全部楼层
没用,感觉平台这方面的设置有点乱(有时默认为上次的,有时又取上级管理者,有时又取环节设置等等)。
还是跟我说下访问的方法吧。
回复 支持 反对

使用道具 举报

发表于 2009-4-14 13:54:41 | 显示全部楼层
即使是写代码的效果和设计期设置是一样的,把你设置的表达式贴上来看看,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-14 13:56:24 | 显示全部楼层
给个链接也可以
回复 支持 反对

使用道具 举报

发表于 2009-4-14 14:05:54 | 显示全部楼层
Static procedure TFlowUtils.ModifyExecutorsByPersonList(Command:TFlowOutCommand;ANextProcUnit:string;APersonList:Tstrings;AAssignMode:TTaskAssignMode;AExecuteMode:TTaskExecuteMode;AExecutorAmount:TTaskExecutorAmount;AFuncOwner:Boolean);
var
  lFlowTask:TFlowTask;
  lRange:String;
  i,j:integer;
  lPersonList : TOrgUrls;
  lPersonMembers: TList;
  lPersonMember: TOrgUnit;
begin
  lRange := '';
  lFlowTask := Command.FlowTasks.FindFlowTask(ANextProcUnit);
  if lFlowTask <> nil then
  begin
    lPersonList := TOrgUrls.Create;
    lPersonMembers := TList.Create;
    try
      lFlowTask.ExecutorMustBeFuncOwner := AFuncOwner ;
      lFlowTask.ExecutorAmount := AExecutorAmount; //TTaskExecutorAmount.teaMulti;
      lFlowTask.ExecutorKinds := [TTaskExecutorKind.ekPersonMember]; //执行者类型   人员成员
      lFlowTask.AssignMode := AAssignMode;// TTaskAssignMode.amSingleness;
      lFlowTask.ExecuteMode := AExecuteMode;
      lFlowTask.AllowExecutors.Clear;
      lFlowTask.Executors.Clear;
      for i := 0 to  APersonList.Count -1 do
      begin
        lPersonMembers.Clear;
        OrgSys.OrgSystem.GetPersonMembers(APersonList.Strings[I], lPersonMembers);
        for J := 0 to  lPersonMembers.Count - 1 do
        begin
          lFlowTask.AllowExecutors.Add(TOrgUnit(lPersonMembers.Items[J]).BizURL) ;
          lFlowTask.Executors.Add(TOrgUnit(lPersonMembers.Items[J]).BizURL);
        end;
      end;
     finally
      lPersonList.Free;
      lPersonMembers.Free;
    end;
  end;

end;
用这个试试吧
回复 支持 反对

使用道具 举报

发表于 2009-4-14 14:09:32 | 显示全部楼层
楼主,代码的话,可以通过下面的思路来做:
Command.FlowControl.Flow.Tasks
这个可以获取流程实例的所有任务
  lTask.ProcUnitID
这个是任务的环节id(与流程环节的id对应)
  lTask.TaskMessages
这个是任务的执行者列表
lTaskMessage.ReceiverDeptID
lTaskMessage.ReceiverPositionID
lTaskMessage.ReceiverID
分别是部门,岗位,人员
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-14 14:23:11 | 显示全部楼层
能不能取到任务的提交者?就是通知一开始是由谁提交的?有没有类似lTask.TaskMessages的方法?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-14 14:27:03 | 显示全部楼层
procedure TMAINFORM.FlowBrokerCreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
begin
  Command.FlowTasks[0].Executors.Clear;
  Command.FlowTasks[0].Executors.Add(GetProcUnitExecutor('NOTICEISSUEAPPLYFUNC'));
  //我想把上面一行改成Command.FlowTasks[0].Executors.Add(通知的原始提交者);就可以了
//但是我不知道取此通知的原始提交者用什么函数
end;
回复 支持 反对

使用道具 举报

发表于 2009-4-14 14:28:09 | 显示全部楼层
那你看看任务表和任务消息表中的相关字段。
任务TTask对象可以访问到任务的相关属性
任务消息TTaskmessage对象可以访问到任务消息的相关属性

动手试一下,光看和光说不一定能很好的理解的。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 21:18 , Processed in 0.050991 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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