TTask.Subscribe (TitTask)
(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é |
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: