CreateTaskEvent (TdbmEvent)

De Wiki1000
(Différences entre les versions)
 
(Une révision intermédiaire par un utilisateur est masquée)
Ligne 1 : Ligne 1 :
<source lang='delphi'>class procedure CreateTaskEvent(const iQueuName:string; const iParameter:string; iNames:Array of variant; iValues:Array of variant);</source>
+
<source lang='delphi'>class procedure CreateTaskEvent(const iEventId:string; iNames:Array of variant; iValues:Array of variant);</source>
  
Cette méthode de classe crée un évènement de type tâche.  
+
Cette méthode de classe crée un événement de type tâche.  
  
Le type de l'évènement est TASK
+
Le type de l'événement est TASK
  
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
|iQueueName
+
|iEventId
|Nom de la file d'attente
+
|identifiant de l'événement
|-
+
|iParameter
+
|Paramètre de l'identifiant du message
+
 
|-
 
|-
 
|iNames
 
|iNames
Ligne 19 : Ligne 16 :
 
|Tableau de valeurs de paramètre de l'évènement
 
|Tableau de valeurs de paramètre de l'évènement
 
|}
 
|}
 
L'identifiant de l'évènement sera :
 
 
$iQueueName.task.iParameter
 
  
 
Exemple :
 
Exemple :
Ligne 28 : Ligne 21 :
 
<source lang='delphi'>
 
<source lang='delphi'>
  
// call back class to be executed on event
+
// Task to be triggered by an event
 
Type
 
Type
   OnMyOperationEvent = class(TitTask)
+
   TMyOperationEvent = class(TitTask)
 
     function Execute():Integer;
 
     function Execute():Integer;
     function RegisterThisTask;
+
     class function RegisterThisTask;
 +
    class procedure Start;
 
   end;
 
   end;
  
function OnMyOperationEvent.Execute():Integer;
+
function TMyOperationEvent.Execute():Integer;
 
var idx:Integer; S:string; aMsg:TdbmQueueMessage;
 
var idx:Integer; S:string; aMsg:TdbmQueueMessage;
 
begin
 
begin
Ligne 66 : Ligne 60 :
 
end;
 
end;
  
function OnMyOperation.RegisterThisTask;
+
class function TMyOperation.RegisterThisTask;
 
var aReason:string;
 
var aReason:string;
 
begin
 
begin
   if not SubscribeToEvent('task.myoperation.start',aReason) then
+
   if not SubscribeToEvent(TMyOperation.OnStartId(),aReason) then
 
   showMessage('subscribe failed '+aReason);  
 
   showMessage('subscribe failed '+aReason);  
 
end;
 
end;
  
// operation code which fire event
+
class procedure TMyOperation.Start;
//
+
procedure MyOperation.Start;
+
 
begin
 
begin
  doStart(...);
+
   TdbmEvent.CreateTaskEvent(TMyOperation.OnStartId(), ['name1','name2'],['value1',2]);
 
+
  // create start event
+
  // => id = $myqueue.task.myoperation.start
+
  //
+
   TdbmEvent.CreateTaskEvent('myqueue_not_used_by_task', 'myoperation.start', ['name1','name2'],['value1',2]);
+
 
end;
 
end;
 
</source>
 
</source>
Ligne 89 : Ligne 76 :
  
 
* [[CreateCustomEvent (TdbmEvent)|CreateCustomEvent]]
 
* [[CreateCustomEvent (TdbmEvent)|CreateCustomEvent]]
 +
* [[TTask.Subscribe_(TitTask)|Subscribe]]
  
 
[[Category:TdbmEvent]]
 
[[Category:TdbmEvent]]

Version actuelle en date du 5 décembre 2024 à 11:12

class procedure CreateTaskEvent(const iEventId: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

iEventId identifiant de l'événement
iNames Tableau de noms de paramètre de l'évènement
iValues Tableau de valeurs de paramètre de l'évènement

Exemple :

// Task to be triggered by an event
Type
  TMyOperationEvent = class(TitTask)
    function Execute():Integer;
    class function RegisterThisTask;
    class procedure Start;
  end;
 
function TMyOperationEvent.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;
 
class function TMyOperation.RegisterThisTask;
var aReason:string;
begin
  if not SubscribeToEvent(TMyOperation.OnStartId(),aReason) then
   showMessage('subscribe failed '+aReason); 
end;
 
class procedure TMyOperation.Start;
begin
  TdbmEvent.CreateTaskEvent(TMyOperation.OnStartId(), ['name1','name2'],['value1',2]);
end;

Voir aussi :

Outils personnels