CreateTaskEvent (TdbmEvent)
class procedure CreateTaskEvent(const iQueuName:string; const iParameter:string; iNames:Array of variant; iValues:Array of variant);
Cette méthode de classe crée un évènement de type tâche.
Le type de l'évènement est TASK
| iQueueName | Nom de la file d'attente |
| iParameter | Paramètre de l'identifiant du message |
| iNames | Tableau de noms de paramètre de l'évènement |
| iValues | Tableau de valeurs de paramètre de l'évènement |
L'identifiant de l'évènement sera :
$iQueueName.task.iParameter
Exemple :
// call back class to be executed on event
Type
OnMyOperationEvent = class(TitTask)
function Execute():Integer;
function RegisterThisTask;
end;
function OnMyOperationEvent.Execute():Integer;
var idx:Integer; S:string; aMsg:TdbmQueueMessage;
begin
Result := True;
// Add messages to the log
ProgressMessage('On Task event');
if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then
begin
userContext.TaskContext.AddMessage('Task context');
//
aMsg := userContext.TaskContext.EventContext.ReceivedMsg;
if Assigned(aMsg) then
begin
// get message parameters
//
userContext.TaskContext.AddMessage('Task context has message');
userContext.TaskContext.AddMessage(Format('Message parameter count:%d',[aMsg.Count]));
for idx:=0 to aMsg.Count-1 do
begin
S := aMsg.DisplayStrings(idx);
UserContext.TaskContext.AddMessage(S);
end;
end;
end
else ProgressMessage('no task context');
Result := True;
end;
function OnMyOperation.RegisterThisTask;
var aReason:string;
begin
if not SubscribeToEvent('task.myoperation.start',aReason) then
showMessage('subscribe failed '+aReason);
end;
// operation code which fire event
//
procedure MyOperation.Start;
begin
doStart(...);
// create start event
// => id = $myqueue.task.myoperation.start
//
TdbmEvent.CreateTaskEvent('myqueue_not_used_by_task', 'myoperation.start', ['name1','name2'],['value1',2]);
end;
Voir aussi :