TTask.Subscribe (TitTask)

De Wiki1000
Révision datée du 5 décembre 2024 à 10:11 par Syfre (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

(Version 11) <source lang='delphi'>class function Subscribe(const iEventID:string; iAttributes:Array of string; iValues:Array of variant):boolean;</source>

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 : Un seul abonnement est possible par couple EventID, SourceID.
Tip : Cette fonction nécessite que la gestion des tâches soit configurée

Exemple :

<source lang="delphi"> 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; </source>

Voir aussi:


{{#if:Classe_tâche_(stereotype)|

{{#if:Classe_tâche_(stereotype)|— Classe_tâche_(stereotype) |}} — Développement DSM

|

{{#if:|— [[{{{1}}}]] |}} — Développement DSM

}}