Création d'une tâche configurable (Task)
Une tâche configurable est une tâche qui apparaît dans l'assistant de création de tâche.
Les prés-requis minimums pour qu'une tâche soit configurable sont :
- La classe dérive du stéréotype TitTask
- Elle implémente une méthode Execute
- Elle implémente une méthode de classe IsTaskConfigurable qui retourne True
Optionnellement la classe peut implémenter :
Méthode | Type | O/F | Valeur |
---|---|---|---|
IsTaskConfigurable | Classe | O | True |
TaskCategory | Classe | F | Nom de la catégorie de la tâche |
TaskFormConfiguration | Classe | F | Nom de l'écran de configuration |
Execute | Instance | O | Exécution de la tâche |
EventNotification | Instance | F | True pour générer un événement sur la terminaison de la tâche |
TaskName | Instance | F | Nom de la tâche dans le journal |
TaskInfos | Instance | F | Informations sur la tâche dans le journal |
TaskReference | Instance | F | Référence de la tâche dans le journal |
![]() |
Tip : Si une tâche est configurable mais n'implémente pas TaskFormConfiguration la configuration de la tâche se fera par saisie des valeurs des attributs de la classe. |
![]() |
Tip : Générer un événement sur la terminaison de la tâche permet de déclencher une tâche abonnée à cette tâche. |
Exemple :
<source lang="delphi"> unit TestSYFREWF; interface
Type
TTestTask = Class(TitTask,IMyTask) public unCode: string; uneChaine: string; unEntier: integer; Function EventNotification():boolean; Function Execute(var aReason:string):Integer; Procedure ExecuteAsync; Procedure InitializeParameters; Class Function IsTaskConfigurable():boolean; Procedure OnFailure; Procedure OnSuccess; Procedure OnTerminate; Class Function TaskCategory():string; Class Function TaskFormConfiguration():string; Function TaskInfos():string; Function TaskName():string; Function TaskReference():string; end;
Implementation
{TTestTask}
Function TTestTask.EventNotification():boolean; //Function EventNotification():boolean; begin
Result := True;
end;
Function TTestTask.Execute(var aReason:string):Integer; //Function Execute(var aReason:string):Integer; var aMsg:TdbmQueueMessage; idx:Integer; S:string; begin
// Add messages to the log ProgressMessage('HelloWorld, input parameters:'); ProgressMessage(Format(' unCode:%s',[unCode])); ProgressMessage(Format(' unEntier:%d',[unEntier])); ProgressMessage(Format(' uneChaine:%s',[uneChaine])); if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then begin userContext.TaskContext.AddMessage('Has Task context message'); // aMsg := userContext.TaskContext.EventContext.ReceivedMsg; if Assigned(aMsg) then begin userContext.TaskContext.AddMessage(Format('Task context message: %d',[aMsg.Count])); for idx:=0 to aMsg.Count-1 do begin S := aMsg.DisplayStrings(idx); UserContext.TaskContext.AddMessage(S); end; end; // Add parameters to the message // May be used in an other task triggered by this one // aMsg.AddParameter('Task1.uneChaine',uneChaine); aMsg.AddParameter('Task1.unEntier',unEntier); end else ProgressMessage('no task context'); aReason := ; Result := trOK;
end;
Procedure TTestTask.ExecuteAsync; //Procedure ExecuteAsync; var aMsg:TitObject; aReason:string; begin
InitializeParameters; if not ExecuteTask(aReason) then showMessage(aReason) else showMessage('ok');
end;
Procedure TTestTask.InitializeParameters; //Procedure InitializeParameters; begin
uneChaine := 'Chaine'; unCode := 'code'; unEntier := 1;
end;
Class Function TTestTask.IsTaskConfigurable():boolean; //Class Function IsTaskConfigurable():boolean; begin
Result := True;
end;
Procedure TTestTask.OnFailure; //Procedure OnFailure; begin
// On failure if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then begin userContext.TaskContext.AddMessage('Failure executed'); end;
end;
Procedure TTestTask.OnSuccess; //Procedure OnSuccess; begin
// on success // if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then begin userContext.TaskContext.AddMessage('Success executed'); end;
end;
Procedure TTestTask.OnTerminate; //Procedure OnTerminate; var vCommentaire : TStringList; begin
vCommentaire := TStringList.Create; GetMessages(vCommentaire); showMessage(vCommentaire.Text);
end;
Class Function TTestTask.TaskCategory():string; begin
Result := 'MyCategory';
end;
Class Function TTestTask.TaskFormConfiguration():string; //Class Function TaskFormConfiguration():string; begin
Result := 'fwtesttaskconfiguration.dfm';
end;
Function TTestTask.TaskInfos():string; begin
Result := 'My task infos';
end;
Function TTestTask.TaskName():string; //Function TaskName():string; begin
Result := 'My Task Name';
end;
Function TTestTask.TaskReference():string; //Function TaskReference():string; begin
Result := CreateGUID;
end;
end. </source>