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
   TMyTask.Subscribe('myCustomEventId',['unCode','unEntier'],['X',2]);
+
   // 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]]
[[Category:Latest]]
 

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é
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