« CreateTaskEvent (TdbmEvent) » : différence entre les versions

De Wiki1000
(Page créée avec « <source lang='delphi'>class procedure CreateTaskEvent(const iQueuName:string; const iParameter:string; iArgs:Array of variant);</source> Cette méthode de classe crée un... »)
 
Aucun résumé des modifications
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
<source lang='delphi'>class procedure CreateTaskEvent(const iQueuName:string; const iParameter:string; iArgs: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
|iNames
|Paramètre de l'identifiant du message
|Tableau de noms de paramètre de l'évènement
|-
|-
|iArgs
|iValues
|Alimente les paramètres de l'évènement par la méthode [[AddParameterArray (TdbmEvent)|AddParameterArray]]
|Tableau de valeurs de paramètre de l'évènement
|}
|}


L'identifiant de l'évènement sera :
Exemple :
 
<source lang='delphi'>
 
// Task to be triggered by an event
Type
  TMyOperationEvent = class(TitTask)
    function Execute():Integer;
    class function RegisterThisTask;
    class procedure Start;
  end;


$iQueueName.task.iParameter
function TMyOperationEvent.Execute():Integer;
var idx:Integer; S:string; aMsg:TdbmQueueMessage;
begin
  Result := True;


Exemple :
  // 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;


<source lang='delphi'>
class procedure TMyOperation.Start;
begin
begin
  // => id = $myqueue.task.myoperation.start
   TdbmEvent.CreateTaskEvent(TMyOperation.OnStartId(), ['name1','name2'],['value1',2]);
   TdbmEvent.CreateTaskEvent('myqueue', 'myoperation.start', ['name1','value1','name2',2]);
end;
end;
</source>
</source>
Ligne 33 : Ligne 76 :


* [[CreateCustomEvent (TdbmEvent)|CreateCustomEvent]]
* [[CreateCustomEvent (TdbmEvent)|CreateCustomEvent]]
* [[TTask.Subscribe_(TitTask)|Subscribe]]


[[Category:TdbmEvent]]
[[Category:TdbmEvent]]

Dernière version du 5 décembre 2024 à 10:12

<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.

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 :

<source lang='delphi'>

// 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; </source>

Voir aussi :