<?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=Conseils_pour_l%27%C3%A9criture_des_processus_%28code%29</id>
	<title>Conseils pour l&#039;écriture des processus (code) - 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=Conseils_pour_l%27%C3%A9criture_des_processus_%28code%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;action=history"/>
	<updated>2026-05-25T11:17:05Z</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=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;diff=897&amp;oldid=prev</id>
		<title>Syfre : /* Prise en compte des droits utilisateurs */</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;diff=897&amp;oldid=prev"/>
		<updated>2009-07-25T07:16:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Prise en compte des droits utilisateurs&lt;/span&gt;&lt;/span&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 25 juillet 2009 à 07:16&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-l97&quot;&gt;Ligne 97 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 97 :&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;En générale les droits de lecture se traduisent par des filtres qui doivent être appliqué aux différentes requêtes.&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;En générale les droits de lecture se traduisent par des filtres qui doivent être appliqué aux différentes requêtes.&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;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; 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;Voir [[Prise en compte des droits (code)|La prise en compte des droits dans les processus]]&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;Voir &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aussi :&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[[Prise en compte des droits (code)|La prise en compte des droits dans les processus]]&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;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;{{Footer|Code métier}}&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;{{Footer|Code métier}}&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;[[category:Code métier]]&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;[[category:Code métier]]&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=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;diff=794&amp;oldid=prev</id>
		<title>Syfre : /* Contrôle des erreurs métiers */</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;diff=794&amp;oldid=prev"/>
		<updated>2009-07-18T17:10:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Contrôle des erreurs métiers&lt;/span&gt;&lt;/span&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 18 juillet 2009 à 17:10&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-l65&quot;&gt;Ligne 65 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 65 :&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;Le [[ClassManager (code)|ClassManager]] dispose de services pour contrôler le déclenchement des messages d&amp;#039;erreurs et d&amp;#039;alertes des règles.&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;Le [[ClassManager (code)|ClassManager]] dispose de services pour contrôler le déclenchement des messages d&amp;#039;erreurs et d&amp;#039;alertes des règles.&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;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; 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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&#039;delphi&#039;&amp;gt;Classmanager.hasgui:Boolean;&amp;lt;/source&amp;gt;&lt;/del&gt;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Voir [[Contrôle du contexte &lt;/ins&gt;de &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;session (CM)|Contrôle du contexte de session]]&lt;/ins&gt;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bloque tous les messages d’erreurs ou d’alertes tant qu’il est positionné à False. Aucun message n’apparaît. Cela permet &lt;/del&gt;de &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne pas bloquer des traitements longs par des messages d’alerte ou d’erreur. Ceux-ci sont gérés en bloc dans le traitement.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&#039;delphi&#039;&amp;gt;Classmanager.NoAlert:Boolean ;&amp;lt;/source&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bloque tous les messages d’alerte tant qu’il est positionné à True.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;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;===Déclenchement d’exceptions métier===&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;===Déclenchement d’exceptions métier===&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=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;diff=793&amp;oldid=prev</id>
		<title>Syfre : Nouvelle page : ===Ecriture de processus=== Un processus (ou traitement) est une opération réalisée sur un ensemble d’objets.  ===Modélisation d’un processus=== Il est commode d’implément...</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Conseils_pour_l%27%C3%A9criture_des_processus_(code)&amp;diff=793&amp;oldid=prev"/>
		<updated>2009-07-18T16:54:12Z</updated>

		<summary type="html">&lt;p&gt;Nouvelle page : ===Ecriture de processus=== Un processus (ou traitement) est une opération réalisée sur un ensemble d’objets.  ===Modélisation d’un processus=== Il est commode d’implément...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Ecriture de processus===&lt;br /&gt;
Un processus (ou traitement) est une opération réalisée sur un ensemble d’objets.&lt;br /&gt;
&lt;br /&gt;
===Modélisation d’un processus===&lt;br /&gt;
Il est commode d’implémenter les processus à l’aide d’une ou plusieurs classes non persistantes.&lt;br /&gt;
&lt;br /&gt;
En général un processus comprendra :&lt;br /&gt;
*Une ou plusieurs classes non persistantes définies au cours de la modélisation.&lt;br /&gt;
*Un écran d’exécution réalisant l’interface utilisateur.&lt;br /&gt;
&lt;br /&gt;
L’écran d’exécution du processus doit comporter un « dataset » portant sur la classe non persistante du processus. A l’ouverture de l’écran, une instance de cette classe est automatiquement créée par le framwork d’interface. Cette instance est responsable de l’exécution du processus.&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Processus de régularisation du lettrage&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Les zones de sélection de la fenêtre se retrouvent dans les attributs et dans les rôles de la classe processus.&lt;br /&gt;
Les autres attributs et rôles n’apparaissent pas dans la fenêtre mais sont utilisés dans le programme des fonctions et des règles.&lt;br /&gt;
La fonction Executer() est exécutée lorsque le bouton Exécuter est actionné.&lt;br /&gt;
 &lt;br /&gt;
Fenêtre d’exécution du processus de régularisation du lettrage.&lt;br /&gt;
 &lt;br /&gt;
Ecrans d’exécution et contrôle du processus&lt;br /&gt;
Un écran d’exécution doit au moins comporter les éléments suivants :&lt;br /&gt;
*Un composant « dataset » portant sur la classe non persistante implémentant le processus.&lt;br /&gt;
*Un composant « invoker » permettant de déclencher et contrôler l’exécution du processus.&lt;br /&gt;
*Un contrôle de déclenchement de l’exécution du processus, généralement un bouton.&lt;br /&gt;
L’écran peut comporter des éléments permettant au code métier du processus d’interagir avec l’utilisateur :&lt;br /&gt;
*Un contrôle affichant les messages émis par le code métier, généralement un contrôle de type mémo.&lt;br /&gt;
*Un contrôle « barre de progression » permettant d’afficher la progression de réalisation du traitement.&lt;br /&gt;
*Un contrôle de déclenchement permettant d’interrompre le processus, généralement un bouton.&lt;br /&gt;
&lt;br /&gt;
===Messages utilisateur, progression et interruption===&lt;br /&gt;
Le framework offre un ensemble de services permettant au code métier d’interagir avec l’utilisateur.&lt;br /&gt;
&lt;br /&gt;
Voir [[Interactions utilisateur (code)|Interactions utilisateur]]&lt;br /&gt;
&lt;br /&gt;
{{info|Il n’existe pas de service permettant l’ouverture de boîte de dialogue directement à partir du code métier.}}&lt;br /&gt;
                      &lt;br /&gt;
===Gestion des transactions dans les processus===&lt;br /&gt;
Dans un écran portant sur une classe non persistante la modification d’un attribut ne déclenche pas une transaction implicite. La transaction doit donc être gérée explicitement par le code métier du processus à l’aide des API de contrôle de transaction .&lt;br /&gt;
&lt;br /&gt;
Voir [[Transactions (code)|La gestion des transactions]]&lt;br /&gt;
&lt;br /&gt;
===Contrôle des erreurs===&lt;br /&gt;
====Contrôle des erreurs d’exécution====&lt;br /&gt;
Le code métier a la possibilité de gérer les erreurs d’exécution à l’aide d’un bloc d’exception ; il peut alors intercepter l&amp;#039;exception et émettre le message vers l&amp;#039;interface utilisateur.&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt;&lt;br /&gt;
procedure doMiseAJourAxeAnalytiqueAPlat;&lt;br /&gt;
try&lt;br /&gt;
  _SupprimerEspaces;&lt;br /&gt;
  _MajEspaces ;&lt;br /&gt;
  ClassManager.CommitLongTran;&lt;br /&gt;
except&lt;br /&gt;
  ClassManager.RollBackLongTran;&lt;br /&gt;
  ProgressMessage(&amp;#039;Erreur dans la mise à jour de l&amp;#039;&amp;#039;axe analytique à plat&amp;#039;) ;&lt;br /&gt;
  ProgressMessage(E.Message) ;&lt;br /&gt;
  Completed := False ;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Contrôle des erreurs métiers====&lt;br /&gt;
Le [[ClassManager (code)|ClassManager]] dispose de services pour contrôler le déclenchement des messages d&amp;#039;erreurs et d&amp;#039;alertes des règles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt;Classmanager.hasgui:Boolean;&amp;lt;/source&amp;gt;&lt;br /&gt;
Bloque tous les messages d’erreurs ou d’alertes tant qu’il est positionné à False. Aucun message n’apparaît. Cela permet de ne pas bloquer des traitements longs par des messages d’alerte ou d’erreur. Ceux-ci sont gérés en bloc dans le traitement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt;Classmanager.NoAlert:Boolean ;&amp;lt;/source&amp;gt;&lt;br /&gt;
Bloque tous les messages d’alerte tant qu’il est positionné à True.&lt;br /&gt;
&lt;br /&gt;
===Déclenchement d’exceptions métier===&lt;br /&gt;
Le code métier a la possibilité de lever des exceptions métiers qui permettent d’interrompre élégamment un traitement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt;Raise ERule.Create&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
  if Assigned(deviseBR) and (deviseBR.CodeISO = &amp;#039;FRF&amp;#039;) &lt;br /&gt;
    then Result := &amp;#039;F&amp;#039;&lt;br /&gt;
    else &lt;br /&gt;
  if Assigned(deviseBR) and (deviseBR.CodeISO = &amp;#039;EUR&amp;#039;) &lt;br /&gt;
    then Result := &amp;#039;E&amp;#039;&lt;br /&gt;
    else raise ERule.Create(&amp;#039;La devise de compte bancaire doit être FRF ou EUR&amp;#039;);&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prise en compte des droits utilisateurs===&lt;br /&gt;
Les droits utilisateurs ajoutés dans l’administration permettent de poser des restrictions sur les données accessibles à l’utilisateur et sur les actions qu’il est autorisé à effectuer.&lt;br /&gt;
&lt;br /&gt;
Cependant ces droits ne sont pas pris en compte automatiquement dans les processus pour deux raisons :&lt;br /&gt;
*La première est qu’il aurait été très difficile de le faire du fait que le processus peut écrire du code SQL directement à travers des curseurs.&lt;br /&gt;
*La seconde est qu’il aurait été très difficile d’assurer un fonctionnement cohérent des traitements, les droits pouvant affecter de manière imprévisible le déroulement normal d’un traitement.&lt;br /&gt;
&lt;br /&gt;
Dans certain cas particulier il peut être néanmoins nécessaire de prendre en compte les droits dans certains processus, par exemple ceux effectuant des consultations de données. Pour ce faire une API a été ajoutée au langage de script permettant au code métier de récupérer les éléments de droits et de les appliquer dans le code métier.&lt;br /&gt;
&lt;br /&gt;
En générale les droits de lecture se traduisent par des filtres qui doivent être appliqué aux différentes requêtes.&lt;br /&gt;
&lt;br /&gt;
Voir [[Prise en compte des droits (code)|La prise en compte des droits dans les processus]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Code métier}}&lt;br /&gt;
[[category:Code métier]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>
	</entry>
</feed>