<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://frp.sage.fr/wiki1000/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://frp.sage.fr/wiki1000/index.php?action=history&amp;feed=atom&amp;title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_%28Task%29</id>
		<title>Création d'une tâche configurable (Task) - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="https://frp.sage.fr/wiki1000/index.php?action=history&amp;feed=atom&amp;title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_%28Task%29"/>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_(Task)&amp;action=history"/>
		<updated>2026-05-15T04:39:15Z</updated>
		<subtitle>Historique pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_(Task)&amp;diff=13402&amp;oldid=prev</id>
		<title>Syfre le 29 mars 2020 à 13:55</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_(Task)&amp;diff=13402&amp;oldid=prev"/>
				<updated>2020-03-29T13:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Version précédente&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Version du 29 mars 2020 à 13:55&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 69 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 69 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Type&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; TTestTask = Class(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;TitObject&lt;/del&gt;,IMyTask)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; TTestTask = Class(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;TitTask&lt;/ins&gt;,IMyTask)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; public&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; public&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; unCode: string;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; unCode: string;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_(Task)&amp;diff=13384&amp;oldid=prev</id>
		<title>Syfre : Page créée avec « 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 ... »</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_(Task)&amp;diff=13384&amp;oldid=prev"/>
				<updated>2020-03-28T16:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Page créée avec « Une tâche configurable est une tâche qui apparaît dans l&amp;#039;assistant de création de tâche.  Les prés-requis minimums pour qu&amp;#039;une tâche soit configurable sont :  * La ... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Une tâche configurable est une tâche qui apparaît dans l'assistant de création de tâche.&lt;br /&gt;
&lt;br /&gt;
Les prés-requis minimums pour qu'une tâche soit configurable sont :&lt;br /&gt;
&lt;br /&gt;
* La classe dérive du stéréotype TitTask&lt;br /&gt;
* Elle implémente une méthode Execute&lt;br /&gt;
* Elle implémente une méthode de classe IsTaskConfigurable qui retourne True&lt;br /&gt;
&lt;br /&gt;
Optionnellement la classe peut implémenter :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Méthode&lt;br /&gt;
!Type&lt;br /&gt;
!O/F&lt;br /&gt;
!Valeur&lt;br /&gt;
|-&lt;br /&gt;
|IsTaskConfigurable&lt;br /&gt;
|Classe&lt;br /&gt;
|O&lt;br /&gt;
|True&lt;br /&gt;
|-&lt;br /&gt;
|TaskCategory&lt;br /&gt;
|Classe&lt;br /&gt;
|F&lt;br /&gt;
|Nom de la catégorie de la tâche&lt;br /&gt;
|-&lt;br /&gt;
|TaskFormConfiguration&lt;br /&gt;
|Classe&lt;br /&gt;
|F&lt;br /&gt;
|Nom de l'écran de configuration&lt;br /&gt;
|-&lt;br /&gt;
|Execute&lt;br /&gt;
|Instance&lt;br /&gt;
|O&lt;br /&gt;
|Exécution de la tâche&lt;br /&gt;
|-&lt;br /&gt;
|EventNotification&lt;br /&gt;
|Instance&lt;br /&gt;
|F&lt;br /&gt;
|True pour générer un événement sur la terminaison de la tâche&lt;br /&gt;
|-&lt;br /&gt;
|TaskName&lt;br /&gt;
|Instance&lt;br /&gt;
|F&lt;br /&gt;
|Nom de la tâche dans le journal&lt;br /&gt;
|-&lt;br /&gt;
|TaskInfos&lt;br /&gt;
|Instance&lt;br /&gt;
|F&lt;br /&gt;
|Informations sur la tâche dans le journal&lt;br /&gt;
|-&lt;br /&gt;
|TaskReference&lt;br /&gt;
|Instance&lt;br /&gt;
|F&lt;br /&gt;
|Référence de la tâche dans le journal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.}}&lt;br /&gt;
{{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.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
unit TestSYFREWF;&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
Type&lt;br /&gt;
  TTestTask = Class(TitObject,IMyTask)&lt;br /&gt;
  public&lt;br /&gt;
    unCode: string;&lt;br /&gt;
    uneChaine: string;&lt;br /&gt;
    unEntier: integer;&lt;br /&gt;
    Function EventNotification():boolean;&lt;br /&gt;
    Function Execute(var aReason:string):Integer;&lt;br /&gt;
    Procedure ExecuteAsync;&lt;br /&gt;
    Procedure InitializeParameters;&lt;br /&gt;
    Class Function IsTaskConfigurable():boolean;&lt;br /&gt;
    Procedure OnFailure;&lt;br /&gt;
    Procedure OnSuccess;&lt;br /&gt;
    Procedure OnTerminate;&lt;br /&gt;
    Class Function TaskCategory():string;&lt;br /&gt;
    Class Function TaskFormConfiguration():string;&lt;br /&gt;
    Function TaskInfos():string;&lt;br /&gt;
    Function TaskName():string;&lt;br /&gt;
    Function TaskReference():string;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Implementation&lt;br /&gt;
&lt;br /&gt;
{TTestTask}&lt;br /&gt;
&lt;br /&gt;
Function TTestTask.EventNotification():boolean;&lt;br /&gt;
//Function EventNotification():boolean;&lt;br /&gt;
begin&lt;br /&gt;
 Result := True;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function TTestTask.Execute(var aReason:string):Integer;&lt;br /&gt;
//Function Execute(var aReason:string):Integer;&lt;br /&gt;
var aMsg:TdbmQueueMessage; idx:Integer; S:string;&lt;br /&gt;
begin&lt;br /&gt;
  // Add messages to the log&lt;br /&gt;
  ProgressMessage('HelloWorld, input parameters:');&lt;br /&gt;
  ProgressMessage(Format(' unCode:%s',[unCode]));&lt;br /&gt;
  ProgressMessage(Format(' unEntier:%d',[unEntier]));&lt;br /&gt;
  ProgressMessage(Format(' uneChaine:%s',[uneChaine]));&lt;br /&gt;
 &lt;br /&gt;
  if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then&lt;br /&gt;
   begin&lt;br /&gt;
     userContext.TaskContext.AddMessage('Has Task context message');&lt;br /&gt;
     //&lt;br /&gt;
     aMsg := userContext.TaskContext.EventContext.ReceivedMsg;&lt;br /&gt;
     if Assigned(aMsg) then&lt;br /&gt;
      begin&lt;br /&gt;
        userContext.TaskContext.AddMessage(Format('Task context message: %d',[aMsg.Count]));&lt;br /&gt;
        for idx:=0 to aMsg.Count-1 do&lt;br /&gt;
         begin&lt;br /&gt;
           S := aMsg.DisplayStrings(idx);&lt;br /&gt;
           UserContext.TaskContext.AddMessage(S);&lt;br /&gt;
         end;&lt;br /&gt;
      end;&lt;br /&gt;
 &lt;br /&gt;
     // Add parameters to the message&lt;br /&gt;
     // May be used in an other task triggered by this one&lt;br /&gt;
     //&lt;br /&gt;
     aMsg.AddParameter('Task1.uneChaine',uneChaine);&lt;br /&gt;
     aMsg.AddParameter('Task1.unEntier',unEntier);&lt;br /&gt;
   end&lt;br /&gt;
   else ProgressMessage('no task context');&lt;br /&gt;
 &lt;br /&gt;
  aReason := '';&lt;br /&gt;
  Result := trOK;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure TTestTask.ExecuteAsync;&lt;br /&gt;
//Procedure ExecuteAsync;&lt;br /&gt;
var aMsg:TitObject; aReason:string;&lt;br /&gt;
begin&lt;br /&gt;
  InitializeParameters; &lt;br /&gt;
  if not ExecuteTask(aReason) &lt;br /&gt;
   then showMessage(aReason) &lt;br /&gt;
   else showMessage('ok'); &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure TTestTask.InitializeParameters;&lt;br /&gt;
//Procedure InitializeParameters;&lt;br /&gt;
begin&lt;br /&gt;
  uneChaine := 'Chaine'; &lt;br /&gt;
  unCode := 'code';&lt;br /&gt;
  unEntier := 1; &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Class Function TTestTask.IsTaskConfigurable():boolean;&lt;br /&gt;
//Class Function IsTaskConfigurable():boolean;&lt;br /&gt;
begin&lt;br /&gt;
  Result := True;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure TTestTask.OnFailure;&lt;br /&gt;
//Procedure OnFailure;&lt;br /&gt;
begin&lt;br /&gt;
  // On failure &lt;br /&gt;
  if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then&lt;br /&gt;
   begin&lt;br /&gt;
     userContext.TaskContext.AddMessage('Failure executed');&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure TTestTask.OnSuccess;&lt;br /&gt;
//Procedure OnSuccess;&lt;br /&gt;
begin&lt;br /&gt;
  // on success&lt;br /&gt;
  // &lt;br /&gt;
  if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then&lt;br /&gt;
   begin&lt;br /&gt;
     userContext.TaskContext.AddMessage('Success executed');&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure TTestTask.OnTerminate;&lt;br /&gt;
//Procedure OnTerminate;&lt;br /&gt;
var vCommentaire : TStringList;  &lt;br /&gt;
begin&lt;br /&gt;
  vCommentaire := TStringList.Create;&lt;br /&gt;
  GetMessages(vCommentaire);&lt;br /&gt;
  showMessage(vCommentaire.Text); &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Class Function TTestTask.TaskCategory():string;&lt;br /&gt;
begin&lt;br /&gt;
 Result := 'MyCategory';&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Class Function TTestTask.TaskFormConfiguration():string;&lt;br /&gt;
//Class Function TaskFormConfiguration():string;&lt;br /&gt;
begin&lt;br /&gt;
 Result := 'fwtesttaskconfiguration.dfm';&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function TTestTask.TaskInfos():string;&lt;br /&gt;
begin&lt;br /&gt;
 Result := 'My task infos';&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function TTestTask.TaskName():string;&lt;br /&gt;
//Function TaskName():string;&lt;br /&gt;
begin&lt;br /&gt;
  Result := 'My Task Name';&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function TTestTask.TaskReference():string;&lt;br /&gt;
//Function TaskReference():string;&lt;br /&gt;
begin&lt;br /&gt;
  Result := CreateGUID;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Stéréotype tâche]]&lt;br /&gt;
[[Category:File d'attente]]&lt;br /&gt;
[[Category:Version900]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	</feed>