TTask.Subscribe (TitTask)
De Wiki1000
(Différences entre les versions)
(Page créée avec « {{version1100}} <source lang='delphi'>class function Subscribe(const iEventID:string; iAttributes:Array of string; iValues:Array of variant):boolean;</source> Cette fonct... ») |
|||
Ligne 30 : | Ligne 30 : | ||
<source lang="delphi"> | <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; | //Procedure TestRegisterTasks; | ||
begin | 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; | end; | ||
</source> | </source> | ||
Ligne 38 : | Ligne 80 : | ||
Voir aussi: | Voir aussi: | ||
− | + | * [[CreateTaskEvent_(TdbmEvent)|CreateTaskEvent]] | |
+ | |||
{{Footer|Classe_tâche_(stereotype)}} | {{Footer|Classe_tâche_(stereotype)}} | ||
[[Category:Stéréotype tâche]] | [[Category:Stéréotype tâche]] | ||
[[Category:Version1100]] | [[Category:Version1100]] | ||
− |
Version actuelle en date du 5 décembre 2024 à 11:11
(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: