« TTask.Subscribe (TitTask) » : différence entre les versions

De Wiki1000
(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
   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]]

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

}}