问题:创建了一个任务,但是处理该任务的时候一直在工作台上我的任务的详细窗口打开,而不能打开自己的功能窗口。
代码如下:
lQuery := TQuery.Create(nil);
lQueryPrev := TQuery.Create(nil);
lQuery.ConnectionString := 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
lQueryPrev.ConnectionString := 'DATABASEURL=Biz:\DDJHXT\MAINTAIN.Database';
lList := TStringList.Create;
lPersons := TList.Create;
lBizUrl:=TBizUrl.Create;
try
OrgSys.OrgSystem.GetFuncOwners('Biz:\DDJHXT\YCSBRJXYHQGN.Func', TOrgFuncKind.ofkRun, lList);
if lList.Count > 0 then
begin
for i := 0 to lList.Count - 1 do
begin
if StringUtils.Pos('.PTM', SysUtils.UpperCase(lList)) > 0 then
begin
lBizUrl.URL := lList;
lOrgUnit := OrgSys.OrgSystem.GetUnit(lBizUrl);
lQuery.Close;
lQuery.CommandText := 'select * from TORGSYSTEM where FPATH like ''' + SysUtils.UpperCase(StringUtils.Copy(lBIzUrl.URL, 5, Length(lBizUrl.URL))) + '%'' and FKIND = ''.PSM''';
lQuery.Open;
TASKPUBFUNC.TTaskPubFunc.UserStartTask(Context, '预会签功能:' + TJXJHBZ(DocView1.Doc).DataEditEQUIPMENT_ID.Text, DataSetBrokerTicket.DataSet.FieldByName('TICKET_ID').AsString, lBizUrl);
end;
end;
end;
finally
lQueryPrev.Free;
lQuery.Free;
lList.Free;
end;
------------------------------
unit TaskPubFunc;
interface
uses
Business.System, Business.Model, Business.Model.Flow, Business.Model.Org, TaskLib, TAskDEfineInfo, Business.Data;
type
TTaskPubFunc = class(TBizLibrary)
private
{private declarations}
public
static procedure UserStartTask(AContext: TContext; ASubject, AValue1{, AValue2}: string; ABizUrl: TBizUrl);
end;
implementation
{无流程任务
任务表,任务业务数据表,业务数据表: 通过任务guid, 业务数据guid关联}
static procedure TTaskPubFunc.UserStartTask(AContext: TContext; ASubject, AValue1{, AValue2}: string; ABizUrl: TBizUrl);
var
lTask: TTask;
lStorage: TTaskDBStorage;
lContextCurrent: TContextCurrent;
lbizData: TTaskBizData;
lQuery: TQuery;
lOrgUnit: TOrgUnit;
begin
lContextCurrent:= TContextCurrent.Create(AContext);
lQuery := TQuery.Create(nil);
try
// Save Task Message
lTask:= TTask.Create;
lStorage:= TTaskDBStorage.Create;
lTask.New(TTaskDefineInfo.Instance(AContext).GetTaskTypeInfo('PRIPREVIEW'));
lTask.Subject := ASubject;
lTask.SenderOgnID := lContextCurrent.Organ.ID;
lTask.SenderDeptID := lContextCurrent.Dept.ID;
lTask.SenderPositionID := lContextCurrent.PositionMember.ID;
lTask.SenderID := lContextCurrent.PersonMember.ID;
lbizData:= TTaskBizData.Create;
lBizData.BizDataKey[0].BizField := 'Biz:\DDJHXT\GGYSZ.ElementGroup\JXDID.Element';
lBizData.BizDataKey[0].Value := AValue1;
//lBizData.BizDataKey[1].BizField := 'Biz:\DDJHXT\COMMENPARIS.ParamGroup\YHQR.Param';
//lBizData.BizDataKey[1].Value := AValue2;
lTask.BizDatas.Add(lBizData);
lQuery.ConnectionString := 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
lQuery.CommandText := 'select * from TORGSYSTEM where FPATH like ''' + SysUtils.UpperCase(StringUtils.Copy(ABizUrl.URL, 5, Length(ABizUrl.URL))) + '%'' and FKIND = ''.PSM''';
lQuery.Open;
lOrgUnit := OrgSys.OrgSystem.GetUnit(ABizUrl);
while not lQuery.Eof do
begin
lTask.TaskMessages.AddTaskMessage(nil, lOrgUnit.Parent.ID, lOrgUnit.ID, lQuery.FieldByName('FID').AsString);
lQuery.Next;
end;
lStorage.Save(lTask);
finally
lContextCurrent.Free;
lQuery.Free;
end;
end; |