现在情况是,非流程任务已经在待办任务中显示,右击菜单中只有“详细”/“刷新”按钮,没有“处理”功能;
代码如下:
procedure TMainForm.UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID,
ASubject, ABizField, ABizFieldValue, ADept, APosition, APerson : string);
var
lOrgURL : TOrgURL;
lTask : TTask;
lTaskBizData : TTaskBizData;
lTaskBizDataRec : TTaskBizDataRec;
begin
lTask := TTask.Create;
{任务接受者}
lOrgURl := TOrgURL.Create(ADept, APosition, APerson);
{任务业务关联数据定义}
lTaskBizData := TTaskBizData.Create;
lTaskBizDataRec := TTaskBizDataRec.Create;
try
lTaskBizDatarec.BizField := ABizField; //业务数据的关键字段,用于检索业务数据
lTaskBizDataRec.Value := ABizFieldValue; //业务数据的关键字段值
lTaskBizData.BizDataKeys.Add(lTaskBizDataRec);
//lTaskBizData.BizDatas.Add(lTaskBizDataRec);
{任务信息的定义}
lTask.Subject := ASubject;
lTask.Kind:= ''; //无流程任务为空
lTask.TaskType := ATaskTypeID; //任务类型,如:工作任务:WORKTASKDEAL, WORKTASK
lTask.TaskTypeName := ATaskTypeName;
lTask.FuncURL := AFuncURL; //处理任务的功能
lTask.SenderDeptID := ADept;
lTask.SenderPositionID := APosition;
lTask.SenderID := APerson;
lTask.BizDatas.Add(lTaskBizData); //设置业务数据与任务关联关系, 保存任务业务关联信息到‘系统空间\系统数据库\任务业务数据表’
lTask.TaskMessages.AddTaskMessage(nil, lOrgURl, TTaskmessagestate.tmsSend, 0,
False); //添加到任务列表
{保存任务}
Flow.FlowEngine.SaveTask(lTask); //保存任务信息到‘系统空间\系统数据库\任务表’,任务消息到‘任务消息表’
finally
//lTaskBizDataRec.Free;
//lTaskBizData.Free;
lTask .Free;
lOrgURL.Free;
end;
end;
procedure TMainForm.DataNavigatorBeforeAction(Sender: TObject; var Accept: Boolean);
var
lRegPerson: string;
lMsg: string;
ds: TDataSet;
i: Integer;
begin
AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue,
ADept, APosition, APerson : string;
ds := TDataSet.Create(nil);
ds.Data := DSGoWherePersons.DataSet.Delta;
for i:=0 to ds.RecordCount - 1 do
begin
if ds.FieldByName('ID').AsString = '' then exit;
AFuncURL := 'Biz:\TZERP\TZOA\RYDXGN.Func'; // 自定义任务关联功能
ATaskTypeName := '动向提醒'; // 自定义任务关联的任务名称
ATaskTypeID := 'MYCUSTOMFUNCDEAL'; // 自定义任务关联的任务ID
ASubject := '动向提醒:请在人员动向中设置返回。';
ABizField := 'Biz:\TZERP\TZOA\TZOADB.DATABASE\OA_GoWherePersons.Table\ID.Field'; // 关联字段
ABizFieldValue := ds.FieldByName('ID').AsString; // 关联字段值
ADept := dsb.DataSet.FieldByName('FDept').AsString;// 接收部门
APosition := dsb.DataSet.FieldByName('FPosition').AsString; //接收岗位
APerson := ds.FieldByName('PersonId').AsString; // 接收人
UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue, ADept, APosition, APerson);
ds.Next;
end;
end; |