« TTask.Subscribe (TitTask) » : différence 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... ») |
Aucun résumé des modifications |
||
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]] | ||
Dernière version du 5 décembre 2024 à 10:11
(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é |
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 —
}}