现象: A 执行者发送任务给B
B看到任务的发起者是应该是A .但是现在测试的结果是任务的
提交人和处理人都是 B .
X3 2617
参考代码:
No.12
首先在平台中定义任务关联,然后创建任务。参考代码如下:
unit TaskPubFunc;
interface
uses
Business.System, Business.Model, Business.Model.Flow, Business.Model.Org;
type
TTaskPubFunc = class(TBizLibrary)
private
{private declarations}
public
procedure UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject,
ABizField, ABizFieldValue, ADept, APosition, APerson : string);
end;
implementation
{无流程任务
任务表,任务业务数据表,业务数据表: 通过任务guid, 业务数据guid关联}
procedure TTaskPubFunc.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;
end.
// *******************************************************************************
// 创建任务
procedure TDMCJWLCRW.CreateCustomTaskClick(Sender: TObject);
VAR
tpf : TTaskPubFunc;
AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue,
ADept, APosition, APerson : string;
begin
if dsb.DataSet.FieldByName('GUID').AsString = '' then exit;
tpf := TTaskPubFunc.Create(Self.Context);
try
AFuncURL := 'Biz:\PXAL\ZDYYWGN.Func'; // 自定义任务关联功能
ATaskTypeName := '我的功能'; // 自定义任务关联的任务名称
ATaskTypeID := 'MYCUSTOMFUNCDEAL'; // 自定义任务关联的任务ID
ASubject := dsb.DataSet.FieldByName('Subject').AsString;
ABizField := 'BIZ:\PXAL\DEMOSJK.DATABASE\ZDYRWGLDEMOB.TABLE\GUID.Field'; // 关联字段
ABizFieldValue := dsb.DataSet.FieldByName('GUID').AsString; // 关联字段值
ADept := dsb.DataSet.FieldByName('FDept').AsString;; // 接收部门
APosition := dsb.DataSet.FieldByName('FPosition').AsString;; // 接收岗位
APerson := dsb.DataSet.FieldByName('FPerson').AsString;; // 接收人
tpf.UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField,
ABizFieldValue, ADept, APosition, APerson);
jsDialogs.ShowMsg('启动 ' + ASubject + ' 成功', '启动无流程任务');
finally
tpf.Free;
end;
end;
向版主反映这个帖子 | IP: 已记录 |