TTask.Subscribe (TitTask)

De Wiki1000

(Version 11)

class function Subscribe(const iEventID:string; iAttributes:Array of string; iValues:Array of variant):boolean;

Cette fonction abonne la classe de la tâche à un évènement.

La tâche sera exécutée à chaque fois que l'évènement est déclenché jusqu'au désabonnement de la tâche.

Paramètre Usage
iEventID Identifiant de l'évènement sur lequel abonner la tâche
iAttributes Un tableau de propriété de la tâche qui seront initialisée lorsque la tâche sera déclenchée
iValues Un tableau de valeur correspondant aux attributs initialisés
Result True si la tâche a été posté
Tip-20px.png Tip : Un seul abonnement est possible par couple EventID, SourceID.
Tip-20px.png Tip : Cette fonction nécessite que la gestion des tâches soit configurée

Exemple :

Type
  // manage my job
  MyFacade = class(TitObject)
   class function GetMyJobActionEventId:string;
   class procedure CreateEvent(const iEvent:string; obj:TitObject);
   class procedure CreateEventWithParams(const iEvent:string; obj:TitObject; aParamsName:Array of string; aParamsValue:Array of variant);
  end;
 
class function MyFacade.GetMyJobActionEventId:string;
begin
  Result := 'task.myjob.myaction.%';
end;
 
class procedure MyFacade.CreateEvent(const iEvent:string; obj:TitObject);
begin
  MyFacade.CreateEventWithParams(iEvent, obj, [], []);
end;
 
class procedure MyFacade.CreateEventWithParams(const iEvent:string; obj:TitObject; aParamsName:Array of string; aParamsValue:Array of variant);
var
  aEvent:string;
  vParamsName : Array of string;
  vParamsValue : Array of variant;
begin
  if Copy(iEvent,length(iEvent)-2,2)='.%'
   then aEvent := Copy(iEvent,1,length(iEvent)-2)
   else aEvent := iEvent;
 
  vParamsName := aParamsName;
  vParamsValue := aParamsValue;
  if Assigned(obj)
   then TdbmEvent.CreateTaskEvent(Format('%s.%s',[aEvent,obj.InstanceOID]),vParamsName,vParamsValue)
   else TdbmEvent.CreateTaskEvent(aEvent,vParamsName,vParamsValue);
end;
 
//Procedure TestRegisterTasks;
begin
  // Register my task subscription
  MyTask.Subscribe(MyFacade.GetMyJobActionEventId,['unCode','unEntier'],['X',2]);
end;
 
//Procedure MyClass.foo();
begin
  // generate an event to trigger the task
  myFacade.CreateEventWidthParams(MyFacade.GetMyJobActionEventId, thisObject, ['unCode','unEntier'],[unCode,unEntier]);
end;

Voir aussi:


Classe_tâche_(stereotype)Développement DSM

Outils personnels