|
需求:
根据表单里面的字段“使用中心”,在流转时,修改流程执行者的范围,并且功能权限已经分配给了岗位成员。
方法:
在功能层下加入一个flowbroker,并且在其CreateFlowOutFlowTasks事件中增加以下代码
VAR
syzx:string; //使用中心
lFlowTask:TFlowTask;
Range:String;
begin
syzx:=InfoBrokerBGSBSQDXX.Info.DataSetByID['BGSBSQD').FieldByName('syzx').ASSTRING;
//流转给中心领导
lFlowTask := Command.FlowTasks.FindFlowTask('BGSBWX_BMYJ');
if lFlowTask <> nil then
begin
lFlowTask.Executors.Clear;
lFlowTask.ExecutorMustBeFuncOwner := true;
lFlowTask.ExecutorAmount:=TTaskExecutorAmount.teaMulti;
lFlowTask.ExecutorKinds :=[TTaskExecutorKind.ekPositionMember];
lFlowTask.AutoCalcExecutor:=true;
lFlowTask.ExecuteMode := TTaskExecuteMode.emMonopolize ; //任务执行方式 独占方式
lFlowTask.PreemptMode :=TTaskPreemptMode.omFirstProcess; //抢占方式 第一个数据处理
lFlowTask.AssignMode := TTaskAssignMode.amTogether; //任务分配方式 共同分配
Range:='OrgManager(OrgKey('''+syzx+''', '''', ''''), '''', false)';
lFlowTask.AllowExecutorRange:=Range;
lFlowTask.Executorrange:=range; ;)
end;
问题:
1、流转时,发现AllowExecutorRange这个是好用的,可以在“允许的执行者”里面看到我要选择的执行人。但是,在最后一步Executorrange:=range中,虽然执行了,对话框中是空的,如下图,很奇怪。
2、将代码删除,使用流程里面的系统自带的执行规则,写了同样的表达式'OrgManager(OrgKey('''+syzx+''', '''', ''''), '''', false)'就可以达到要求,并且速度比代码快得多,奇怪!!! 
|
-
-
1.jpg
29.87 KB, 下载次数: 201
|