<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://wiki.sage.fr/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&#039;une tâche configurable (Task) - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.sage.fr/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="http://wiki.sage.fr/index.php?title=Cr%C3%A9ation_d%27une_t%C3%A2che_configurable_(Task)&amp;action=history"/>
	<updated>2026-05-25T07:13:55Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://wiki.sage.fr/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="http://wiki.sage.fr/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 style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&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; id=&quot;mw-diff-left-l69&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=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Type&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   TTestTask = Class(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TitObject&lt;/del&gt;,IMyTask)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   TTestTask = Class(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TitTask&lt;/ins&gt;,IMyTask)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   public&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   public&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unCode: string;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unCode: string;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Syfre</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/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&#039;assistant de création de tâche.  Les prés-requis minimums pour qu&#039;une tâche soit configurable sont :  * La ... »</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/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&amp;#039;assistant de création de tâche.&lt;br /&gt;
&lt;br /&gt;
Les prés-requis minimums pour qu&amp;#039;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&amp;#039;é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&amp;#039;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(&amp;#039;HelloWorld, input parameters:&amp;#039;);&lt;br /&gt;
  ProgressMessage(Format(&amp;#039; unCode:%s&amp;#039;,[unCode]));&lt;br /&gt;
  ProgressMessage(Format(&amp;#039; unEntier:%d&amp;#039;,[unEntier]));&lt;br /&gt;
  ProgressMessage(Format(&amp;#039; uneChaine:%s&amp;#039;,[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(&amp;#039;Has Task context message&amp;#039;);&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(&amp;#039;Task context message: %d&amp;#039;,[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(&amp;#039;Task1.uneChaine&amp;#039;,uneChaine);&lt;br /&gt;
     aMsg.AddParameter(&amp;#039;Task1.unEntier&amp;#039;,unEntier);&lt;br /&gt;
   end&lt;br /&gt;
   else ProgressMessage(&amp;#039;no task context&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
  aReason := &amp;#039;&amp;#039;;&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(&amp;#039;ok&amp;#039;); &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 := &amp;#039;Chaine&amp;#039;; &lt;br /&gt;
  unCode := &amp;#039;code&amp;#039;;&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(&amp;#039;Failure executed&amp;#039;);&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(&amp;#039;Success executed&amp;#039;);&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 := &amp;#039;MyCategory&amp;#039;;&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 := &amp;#039;fwtesttaskconfiguration.dfm&amp;#039;;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function TTestTask.TaskInfos():string;&lt;br /&gt;
begin&lt;br /&gt;
 Result := &amp;#039;My task infos&amp;#039;;&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 := &amp;#039;My Task Name&amp;#039;;&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&amp;#039;attente]]&lt;br /&gt;
[[Category:Version900]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>
	</entry>
</feed>