|
lFlowControl.StartupFlow(lBizURL, AStartProc, lFlowValue); 代码启动流程
参数 lExecutor
这个怎么放进去
Business.Model.Org.OrgExpr.OrgKey(ADept, 'FZR', '')+'OR'+Business.Model.Org.OrgExpr.OrgKey(ADept, 'ZR', '');
procedure TZJ.UserStartFlow(AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription:string);
var {流程URL,部门,岗位,人员 ,流程ID,流程主题 }
lBizURL: TBizURL;
lFlowValue: TFlowValue;
lFlowControl: TFlowControl;
lExecutor: TOrgURL;
StrSubject:String;
begin
lBizURL := TBizURL.Create;
lFlowValue := TFlowValue.Create; //流程实例
lFlowControl := TFlowControl.Create(Self.Context);//流程控制组件
lExecutor := TOrgURL.Create(cDeptID,cPositionMemberID,cOperatorNameID); //执行者
lBizURL.URL := AFlowUrl;
try
lFlowValue.IDs.Add(AFlowID); //流程ID
lFlowValue.Subject:= ASubject; //流程主题
lFlowValue.Description := ADescription; //流程描述
//启动流程实例
// Business.Model.Org.OrgExpr.OrgKey(ADept, 'FZR', '')+'OR'+Business.Model.Org.OrgExpr.OrgKey(ADept, 'ZR', '');
lFlowControl.StartupFlow(lBizURL, AStartProc,lExecutor, lFlowValue);
lFlowControl.FlowRunnerbyIndex[0].CurrentTask.PreemptMode := TTaskPreemptMode.omFirstProcess;
StrSubject:=DataSetBroker1.DataSet.FieldByName('BZDH').AsString+' '+DataSetBroker1.DataSet.FieldByName('BZMC').AsString+'('+DataSetBroker4.DataSet.FieldByName('LQBM').AsString+')';
lFlowControl.FlowRunnerByIndex[0].CurrentTask.subject:=StrSubject;//这是任务主题
lFlowControl.FlowRunnerByIndex[0].CurrentTask.TaskMessages[0].ReceiverDeptID := ADept;//传入接收者的部门ID
lFlowControl.FlowRunnerByIndex[0].CurrentTask.TaskMessages[0].ReceiverPositionID :=ARole;// Business.Model.Org.OrgExpr.OrgKey(ADept, 'FZR', '')+'OR'+Business.Model.Org.OrgExpr.OrgKey(ADept, 'ZR', '');//岗位; //传入接收者的岗位ID
lFlowControl.FlowRunnerByIndex[0].CurrentTask.TaskMessages[0].ReceiverID :=APerson; //传入接收者的人员ID
//流程实例数据保存到数据库
lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;
finally
lFlowControl.Free;
lFlowValue.Free;
lBizURL.Free;
end;
end;
问题1如上怎么设置接收人只能是ZR FZR下的人员,以前好像弄过一次,现在想不起来了,帮帮忙
问题2
流程A->B->C
启动流程后ZR FZR下的人员接收的是B功能,那么B怎么能回退到A发起者那里去呢? 全部代码在上面了 |
|