|

楼主 |
发表于 2010-4-26 12:25:29
|
显示全部楼层
这个代码定义启动流程:
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;
urls: TStrings;
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', '');
urls:=TStringList.Create();
//只有主任(ZR) 副主任(FZR) 才有权限查看
OrgSys.OrgSystem.GetBizURLsByOrgExpr('OrgChildren(OrgKey('+ADept+',''FZR'', '''') , OrgCondition(''*.psm'', '''', ''''), True, False) or OrgChildren(OrgKey('+ADept+',''ZR'', '''') , OrgCondition(''*.psm'', '''', ''''), True, False)',urls);
// OrgSys.OrgSystem.GetBizURLsByOrgExpr('OrgChildren(OrgKey('''',''FZR'', '''') , OrgCondition(''*.psm'', '''', ''''), True, False) or OrgChildren(OrgKey('''',''ZR'', '''') , OrgCondition(''*.psm'', '''', ''''), True, False)',urls);
//Memo1.Text:='OrgChildren(OrgKey('+ADept+',''FZR'', '''') , OrgCondition(''*.psm'', '''', ''''), True, False) or OrgChildren(OrgKey('+ADept+',''ZR'', '''') , OrgCondition(''*.psm'', '''', ''''), True, False)';
// Memo1.Lines.Add(urls.Text);
urls.Free;
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; |
|