Opérations de bases sur les workflows

Dimension: px
Commencer à balayer dès la page:

Download "Opérations de bases sur les workflows"

Transcription

1 Opérations de bases sur les workflows Version 1.0 Z Mathieu Hollebecq Paul Lillo Esquerré

2 2 Opérations de bases sur les workflows Sommaire 1 Introduction Ce que nous avons vu, ce que nous allons voir Un peu de vocabulaire Créations de workflows Hébergement de workflows Hébergement simple Lancement d un workflow avec des paramètres Activités de bases Code ConditionedActivityGroup Delay IfElse InvokeWorkflow Parallel Replicator Sequence Suspend Terminate While Conclusion... 24

3 3 Opérations de bases sur les workflows Introduction 1.1 Ce que nous avons vu, ce que nous allons voir Dans le chapitre précédent, nous avons vu en quoi consistent les workflows, et leur implémentation dans Windows Workflow Foundation, grâce à Visual Studio Nous avons aussi vu le vocabulaire de base que nous utiliserons au fur et à mesure des chapitres qui vont suivre ; à ce niveau, il est important d être à l aise avec les termes tels que «workflows séquentiels», «workflows à états», «activités» ainsi que de savoir créer un nouveau projet de workflow. Si des notions abordées dans le chapitre précédent vous paraissent floues, il est conseillé de le relire une nouvelle fois afin d aborder ce nouveau chapitre avec de bonnes bases. Dans ce chapitre, nous apprendrons les opérations de bases sur les workflows et comment les héberger dans une application hôte, nous créerons ainsi nos premiers workflows fonctionnels. 1.2 Un peu de vocabulaire Avant d apprendre de nouvelles notions, il est d abord important d acquérir un certain vocabulaire spécifique aux workflows. Ceci nous permettra ainsi d être le plus précis et le moins ambiguë possible, deux qualités essentielles pour tout bon programmeur. Dans le français courant, on utilise souvent les mots «état» et «statut» pour désigner une même idée, or lorsque l on travaille dans les workflows, ces deux mots ne désignent pas la même chose ; en effet le statut représente le statut d exécution du workflow alors que l état représente l activité en cours d exécution. Pour reprendre l exemple des congés payés de la première partie, nous pouvons comparer le statut au fait que la demande soit en cours de traitement par un service, en attente de traitement, ou complètement traitée ; l état quant à lui peut s apparenter à la position de la demande dans le processus hiérarchique, par exemple «chef de service», «administration», Lorsque le workflow est complet, c'est-à-dire qu il peut s exécuter, l enchainement de tous les statuts forme le cycle de vie du workflow (voir schéma 1.2a): Le workflow est créé. Attention «créé» n est pas considéré comme un statut mais est tout de même utilisé pour faciliter notre représentation mentale. Le workflow démarre. Le statut est modifié en «en cours d exécution». Le workflow peut alors passer aux états «inactif», «suspendu», «repris», «annulé» ou «complété». Lorsque que le workflow atteint l état final attendu, il passe alors au statut «complété» et lève l événement WorkflowCompleted. Le workflow ne peut arriver au statut «complété» que depuis les statuts «démarré», «inactif», «en pause» ou «repris». Le statut «terminé» est atteint lorsque le workflow rencontre une erreur et se termine, soit en passant par une exception gérée qui utilise l activité TerminateActivity, soit par une exception non gérée qui mène le moteur d exécution du workflow à forcer le thread à se terminer. Lorsque le workflow atteint ce statut, il lève l évènement WorkflowTerminated. Un thread peut être annulé à partir de n importe quel statut. Le statut «annulé» est différent du statut «terminé», en effet un workflow qui atteint le statut «terminé», comme son l indique, se termine. Alors que lorsqu il atteint le statut «annulé», le workflow s arrête avant d atteindre la fin de son exécution. Le workflow lève alors

4 4 Opérations de bases sur les workflows l événement WorkflowAborted. Le processus hôte peut gérer cet événement, corriger l erreur et reprendre l exécution du workflow. Si un service de stockage persistant (la persistance sera vue plus en détail dans un des chapitres suivants) est activé, le workflow peut être enregistré et déchargé de la mémoire principale à partir des statuts : «créé», «démarré», «inactif», «en pause» ou «repris». Schéma 1.2 : transitions entre les statuts 2 Créations de workflows 2.1 Hébergement de workflows Nous avons vu précédemment qu un workflow dépend d un processus dit hôte : essayez par exemple de créer un projet de workflow vide, ajoutez y un workflow avec une simple activité de code et essayer de lancer votre application, le message d erreur suivant apparaitra :

5 5 Opérations de bases sur les workflows Dans ce message d erreur vous voyez que notre workflow n est pas un fichier exécutable (.exe) mais une assembly DLL (.dll) à intégrer dans un programme hôte. Il est donc important de comprendre que Windows Workflow Foundation ne fournit pas quelque chose de directement fonctionnel, c est une API dont on peut se servir avec différentes applications.net. Nous avons vu qu il est possible, sans user d outils complexes, de mettre en place rapidement et de manière simple un workflow, mais lors d un traitement d un problème plus complexe, la création de notre workflow devient plus délicate. Il en est de même pour l hébergement de workflow, autant l appel simple et sans paramètre d un workflow ne renvoyant rien est rapide à mettre en place, autant l ajout de paramètre lors du lancement d un workflow, le lancement de plusieurs workflows différents, de plusieurs fois le même workflow, de la gestion de valeur de renvois, de synchronisation entre processus hôtes et workflows, sont des cas plus délicats nécessitant un traitement plus long. Nous n allons pas traiter dans ce chapitre toute la complexité de l hébergement des workflows, notamment la synchronisation avec le processus hôte qui sera traité dans un chapitre ultérieur ; nous traiterons juste l hébergement simple de workflows et une manière de passer des paramètres à notre workflow Hébergement simple Lorsque vous créez un projet du type «workflow console application», votre fichier de workflow est créé avec un fichier Program.cs pour un projet en C# ou Module.cs pour un projet en VB.net, ce fichier contient le code nécessaire à l exécution du workflow. Passons en revue ce code auto-généré par Visual Studio 2008.

6 6 Opérations de bases sur les workflows //C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; namespace MonHebergementDeWorkflow class Program static void Main(string[] args) using(workflowruntime workflowruntime = new WorkflowRuntime())//Instanciation du Runtime //Statut complété : le programme hôte continue AutoResetEvent waithandle = new AutoResetEvent(false); workflowruntime.workflowcompleted += delegate(object sender, WorkflowCompletedEventArgs e) waithandle.set();; //Statut terminé : le programme hôte affiche l erreur et continue workflowruntime.workflowterminated += delegate(object sender, WorkflowTerminatedEventArgs e) Console.WriteLine(e.Exception.Message); waithandle.set(); ; //Création de l instance de notre workflow WorkflowInstance instance = workflowruntime.createworkflow(typeof(monhebergementdeworkflow.workflow)) ; instance.start();//lancement du workflow waithandle.waitone();//l hôte se met en pause

7 7 Opérations de bases sur les workflows VB.NET Module Module1 Class Program Shared WaitHandle As New AutoResetEvent(False) Shared Sub Main() Instanciation du Runtime Using workflowruntime As New WorkflowRuntime() AddHandler workflowruntime.workflowcompleted, AddressOf OnWorkflowCompleted AddHandler workflowruntime.workflowterminated, AddressOf OnWorkflowTerminated Création de l instance de notre workflow Dim workflowinstance As WorkflowInstance workflowinstance = workflowruntime.createworkflow(gettype(workflow)) workflowinstance.start() Lancement du workflow WaitHandle.WaitOne() Mise en pause de l hôte End Using Statut complété : le programme hôte continue Shared Sub OnWorkflowCompleted(ByVal sender As Object, ByVal e As WorkflowCompletedEventArgs) WaitHandle.Set() Statut terminé : le programme hôte affiche l erreur et continue Shared Sub OnWorkflowTerminated(ByVal sender As Object, ByVal e As WorkflowTerminatedEventArgs) Console.WriteLine(e.Exception.Message) WaitHandle.Set() End Class End Module Tout d abord, une instance de WorkflowRuntime est crée, cette instance nous servira d environnement d exécution pour notre workflow, c est elle notamment qui contient la méthode CreateWorkflow(...) qui nous permettra de créer une instance de notre workflow ; cette instanciation est précédée d une direction using afin que cette instance essentielle soit disponible dans tout le bloc où nous en avons besoin. Nous instancions ensuite la classe AutoResetEvent avec comme paramètre false, celleci contient les méthodes nous permettent de mettre en pause le programme hôte durant l exécution du workflow et de le relancer dès que celui-ci s est terminé d une façon ou d une autre. Dans la plupart des cas, lorsqu un processus hôte appelle un workflow, c est qu il attend un résultat de ce dernier, il faut donc mettre notre hôte en attente jusqu à ce qu il reçoive un signal de notre workflow ; le processus hôte se met en attente avec la méthode WaitOne() et se relance avec Set(), ces deux méthodes sont contenues dans notre instance de AutoResetEvent. Pour que l hôte sache lorsqu il doit se relancer, nous utilisons deux événements, WorkflowCompleted et WorkflowTerminated, contenus dans notre instance de WorkflowRuntime. WorkflowCompleted est levé lorsque le workflow atteint le statut Completed, c'est-à-dire l état final attendu, dans ce cas on éxécute simplement WaitHandle.Set() pour que le programme hôte reprenne sont exécution ; WorkflowTerminated

8 8 Opérations de bases sur les workflows quant à lui est levé lorsque le workflow a rencontré une exception non gérée par lui-même, le workflow atteint alors le statut Terminé, le code exécuté dans ce cas est simplement le message descriptif de l exception non gérée et le relancement du processus hôte. Viens ensuite la création de l instance de notre workflow, c est ici que l on utilise la méthode CreateWorkflow(...) de WorkflowRuntime, cette méthode prend entre autre comme surcharge un argument qui est le type du workflow à créer, pour cela nous utilisons le mot clé typeof pour du C# ou GetType pour du VB.net, en paramètre du mot clé nous mettrons le nom de notre workflow. Enfin, nous appelons la méthode Start() de notre instance workflow crée avec CreateWorkflow(...), notre workflow est à présent lancé dans un nouveau thread. Pour mettre le processus hôte en attente d un signal du workflow nous appelons la méthode WaitOne() de notre instance de WaitHandle Lancement d un workflow avec des paramètres Une manière de passer des paramètres à un workflow peut être l utilisation d un dictionnaire que nous créons dans notre processus hôte avant l appel de la fonction CreateWorkflow(...) comme dans l exemple qui suit : //C# string nom; int age; Console.WriteLine("Entrez votre nom"); nom = Console.ReadLine(); Console.WriteLine("Entrez votre age"); age = int.parse(console.readline()); MaClasse instancedemaclasse = new MaClasse(); //Création du dictionnaire Dictionary<String,Object> dictionnairearguments = new Dictionary<string,object>(); //Ajout d eléments au dictionnaire dictionnairearguments.add("nom", nom); dictionnairearguments.add("age", age); dictionnairearguments.add("objet", instancedemaclasse); //Lancement du workflow avec le dictionnaire en paramètre WorkflowInstance instance = workflowruntime.createworkflow(typeof(workflow1), dictionnairearguments); instance.start();

9 9 Opérations de bases sur les workflows VB.NET Dim nom As String Dim age As Integer Console.WriteLine("Entrez votre nom") nom = Console.ReadLine() Console.WriteLine("Entrez votre age") age = Integer.Parse(Console.ReadLine()) Dim instancedemaclasse As New MaClasse() Création du dictionnaire Dim dictionnairearguments As New Dictionary(Of String, Object)() Ajout d eléments au dictionnaire dictionnairearguments.add("nom", nom) dictionnairearguments.add("age", age) dictionnairearguments.add("objet", instancedemaclasse) Lancement du workflow avec le dictionnaire en paramètre Dim instance As WorkflowInstance = workflowruntime.createworkflow(gettype(workflow1), dictionnairearguments) instance.start() Nous voyons ensuite une autre surcharge de la méthode CreateWorkflow(...) par rapport à l exemple précédent, nous ajoutons ici un argument qui est le dictionnaire préalablement créé ; ainsi lors de la création du workflow, des variables internes de ce dernier seront assignées et pourront être utilisées tout au long du workflow, mais celles-ci doivent être accessibles, il faut donc généralement leur créer des propriétés de la sorte : //C# public sealed partial class Workflow1 : SequentialWorkflowActivity public string Nom get; set; /*Chaque élément du tableau modifie ainsi une variable interne au workflow*/ public int Age get; set; public MaClasse Objet get; set;... public Workflow1() InitializeComponent();

10 10 Opérations de bases sur les workflows VB.NET Partial Public NotInheritable Class Workflow1 Inherits SequentialWorkflowActivity Private _Nom As String Public Property Nom() As String Get Return _Nom End Get Set(ByVal value As String) _Nom = value End Set End Property 'Chaque élément du tableau modifie ainsi une variable interne au workflow Private _Age As Integer Public Property Age() As Integer Get Return _Age End Get Set(ByVal value As Integer) _Age = value End Set End Property Private _Objet As MaClasse Public Property Objet() As MaClasse Get Return _Objet End Get Set(ByVal value As MaClasse) _Objet = value End Set End Property Public Sub New() InitializeComponent() End Class 2.2 Activités de bases Windows Workflow Foundation propose une trentaine d activités dans Visual Studio. L espace de nom System.workflow.Activities contient les classes de ces activités. Les activités possèdent des attributs et des évènements qui permettent de les configurer ; elles possèdent aussi des méthodes qui sont appelées automatiquement lors de l exécution du workflow. Chaque workflow possède un certains nombre de propriétés ; pour éviter de se répéter, nous allons présenter ici les propriétés communes à toutes les activités, puis nous traiterons celles plus spécifiques lorsque nous aborderons les activités concernées. Il est bon de noter qu il n est pas nécessaire de compléter chaque propriété de chaque activité, certaines seront obligatoires, d autres non, c est à vous de décider quand vous devez compléter ou non une propriété. Tout d abord, pour afficher la fenêtre des activités, allez dans le menu «Affichage» puis «Autres fenêtres» et «Fenêtre Propriétés» ; vous pouvez aussi utiliser le raccourci clavier «Alt + Entrée». Si vous affichez les propriétés par catégories, les propriétés communes apparaitront dans la première catégorie «Activités», ces propriétés communes sont au nombre de trois : Name : c est l identificateur de l activité, il doit avoir un nom unique dans votre workflow. C est par ce nom qu il sera désigné et utilisé dans les fichiers de code. Un

11 11 Opérations de bases sur les workflows identificateur par défaut est créé pour chaque activité, mais un nom plus explicite est toujours préférable. Description : comme son nom l indique, cette propriété permet de d écrire une description de l activité qui apparaitra lorsque l on pointera ladite activité dans le designer. Il est possible d écrire sa description sur plusieurs lignes ; pour cela dérouler deux fois au lieu d une la case où remplir la description, cette case deviendra alors plus grande, le retour à la ligne se fera par la touche «Entrée», la combinaison «Ctrl + Entrée» validera le texte. La description de l activité a néanmoins une limite : si elle est trop longue elle n apparaitra pas entièrement lors que l on passera la souris sur l activité. Si cette description n est pas complétée, l activité pointée aura la description de base commune à toutes les activités de ce type. Enabled : (True par défaut) permet d activer ou non l activité. Si elle n est pas activée, l activité ne participe pas à l exécution du workflow. Nous allons présenter ici les activités de bases qui se retrouveront dans la plupart de nos workflows. Ces activités de bases sont principalement des activités de contrôles de flux et de management d états (pour les workflows à machine d état) Code Une des activités les plus élémentaires, une fois placée dans le workflow, un double clic dessus créera une nouvelle méthode dans le fichier de code de votre workflow : //C# private void codeactivity1_executecode(object sender, EventArgs e) //Placer ici le code à exécuter par l'activitée Code VB.NET Private Sub codeactivity1_executecode(byval sender As System.Object, ByVal e As System.EventArgs) 'Placer ici le code à exécuter par l'activitée Code Cette activité est aussi simple que ses utilisations nombreuses, il serait donc aussi inutile qu impossible de présenter toute les utilisations que nous pouvons en faire. Nous citerons donc quelques petits exemples simples ; nous pouvons par exemple utiliser cette activité pour gérer les flux d entrées/sorties standards, ou bien pour instancier, réaffecter des variables ou des classes, ConditionedActivityGroup L activité ConditionedActivityGroup nous sert dans le Workflow à poser une condition dans son exécution. Pour cela il faut proposer deux conditions de type whencondition et

12 12 Opérations de bases sur les workflows UntilCondition. Lorsque nous utilisons une ConditionedActivityGroup, nous devons inclure une autre activité à l intérieure de notre condition. Prenons donc un exemple : //C# namespace WorkflowConsoleApplication7 public sealed partial class Workflow1 : SequentialWorkflowActivity public Workflow1() InitializeComponent(); private void executecode1(object sender, EventArgs e) Console.WriteLine("Password?"); e) e) private void codeactivity2_executecode(object sender, EventArgs Console.WriteLine("wrong"); private void codeactivity5_executecode(object sender, EventArgs Console.WriteLine("right"); Console.ReadLine(); VB.NET Namespace WorkflowConsoleApplication7 Partial Public NotInheritable Class Workflow1 Inherits SequentialWorkflowActivity Public Sub New() InitializeComponent() Private Sub executecode1(byval sender As Object, ByVal e As EventArgs) Console.WriteLine("Password?") Private Sub codeactivity2_executecode(byval sender As Object, ByVal e As EventArgs) Console.WriteLine("wrong") Private Sub codeactivity5_executecode(byval sender As Object, ByVal e As EventArgs) Console.WriteLine("right") Console.ReadLine() End Class End Namespace

13 13 Opérations de bases sur les workflows Ici nous avons associé à ConditionedActivityGroup trois activités de type code. Ce sont des codes simples qui ne feront apparaître qu un mot. Nous allons installer notre code dans la condition, nous devrons aussi poser des conditions quand aux conditions when et until pour valider notre ConditionedActivityGroup. Ici nous lui demanderons seulement de vérifié ce qu on écrira dans la console lors de l application de notre petit programme. Le code inclus dans la condition vérifiera si ce que l on a écrit est juste, dans le cas où c est juste, le programme ce terminera avec une valeur de type true. Dans le cas contraire nous auront une chance de retaper un mot. Si à son tour il est faux, alors le programme s arrêtera et renverra une valeur de type false Delay Parfois, il peut arriver qu on veuille une temporisation afin de passer une action qui dure plus longtemps que ce qu il est normalement prévu, comme par exemple la consommation d un service web hébergé sur un serveur qui ne répond pas. Pour cela nous utiliserons l activité Delay. Deux propriétés nous intéressent dans cette activité, la propriété InitializeTimeoutDuration et la propriété TimeoutDuration. Une de ces activités doit être complétée. TimeoutDuration permet d indiquer de manière fixe un temps d attente avant de passer à l activité suivante, le format utilisé est celui de TimeSpan, c'est-à-dire hh : mm : ss ou bien dd : hh : mm : ss. InitializeTimeoutDuration quant à elle permet de fixer de manière dynamique le temps d attente grâce à la gestion d un événement. Spécifiez le nom de votre événement dans la case correspondant à InitializeTimeoutDuration et validez, la méthode correspondante a été créée, vous pouvez aussi double cliquer sur votre activité dans le designer pour créer votre méthode automatiquement avec un nom par défaut. Pour gérer ce temps d attente dans cette méthode, il faut accéder à la propriété TimeoutDuration de notre instance de DelayActivity qu il faut assigner avec un objet du type TimeSpan comme dans l exemple qui suit : //C#//Méthode appelée pour initialiser le temps d attente private void ActiviteDelay_InitialisationTempsAttente(object sender, EventArgs e) int temps = 0; Console.WriteLine("Combien de temps voulez-vous attendre?"); temps = int.parse(console.readline()); delayactivity1.timeoutduration = new TimeSpan(0, 0, 0, temps); VB.NET Méthode appelée pour initialiser le temps d attente Private Sub ActiviteDelay_InitialisationTempsAttente(ByVal sender As Object, ByVal e As EventArgs) Dim temps As Integer Console.WriteLine("Combien de temps voulez-vous attendre?") temps = Integer.Parse(Console.ReadLine()) delayactivity1.timeoutduration = New TimeSpan(0, 0, 0, temps) Bien évidemment, cette situation n est qu un exemple, en effet la demande à l utilisateur du temps d attente n est pas à faire dans cette méthode mais dans une codeactivity précédente, ou bien dans le programme hôte en passant ensuite cette valeur en paramètre lors de la création du workflow comme expliqué un peu plus loin dans ce chapitre.

14 14 Opérations de bases sur les workflows IfElse L activité IfElse permet d implémenter des conditions dans nos workflows. Un Drag-And- Drop dans le designer placera une activité IfElse, avec à l intérieur deux IfElseBranchActivity ; des activités placées dans ces IfElseBranchActivity ne s exécutent que lorsque la condition correspondante est vérifiée. Pour ajouter un autre IfElseBrancActivity, faites un clic-droit sur l activité IfElse puis «ajouter une branche». Par défaut deux IfElseBrancActivity sont créés, mais l activité IfElse peut très bien ne contenir qu une seule IfElseBranchActivity. Il y a deux manières de définir une condition dans les IfElseBranchActivity : par une condition de code ou par condition de règle déclarative : Par condition de code, il faut spécifier nos conditions dans une méthode de notre fichier de code du workflow. La méthode à appeler est du type : //C# private void condition_de_code(object sender, ConditionalEventArgs e) if (this.variable == "valeur") e.result = true; else if (this.variable2 == "autre_valeur") Console.WriteLine("L'autre variable est affectée, mais la condition est vérifiée"); e.result = true; else e.result = false; VB.NET Private Sub condition_de_code(byval sender As Object, ByVal e As ConditionalEventArgs) If Me.variable = "valeur" Then e.result = True ElseIf Me.variable2 = "autre_valeur" Then Console.WriteLine("L'autre variable est affectée, mais la condition est vérifiée") e.result = True Else End If e.result = False

15 15 Opérations de bases sur les workflows Le booléen Result de l instance e de ConditionalEventArgs permet de renvoyer une valeur à la condition pour indiquer si elle est vérifiée ou non (si e.result égale True à la fin de l exécution de notre méthode, les activités placées dans la IfElseBranchActivity correspondante seront exécutées, les autres branches quant à elles seront ignorées ; sinon la IfElseBranchActivity suivante est évaluée). Il faut ensuite dérouler la propriété connexe à «Condition» (qui se nomme aussi «Condition») et lier cette propriété à la méthode créée précédemment. Pour les conditions de règle déclarative, une nouvelle fenêtre s ouvre lorsque que vous cliquez sur les trois petits points en face de la propriété «ConditionName». Cette fenêtre permet de créer, renommer, modifier ou supprimer des conditions de règles. Si vous cliquez sur «Nouveau» ou «Modifier», la fenêtre d éditeur de condition de règles s ouvre ; la syntaxe à utiliser est la même que celle qui s utilise entre les parenthèses d un if ou d un while en C# ou VB.net. Une fois votre condition valide, cliquez sur OK. Une fois votre condition sélectionnée dans la fenêtre «Sélectionnez la condition», vous avez son aperçu en bas de la fenêtre. Une autre manière d utiliser les conditions de règle déclarative est de rentrer directement le nom de votre condition et son expression dans la fenêtre propriété comme dans l image ci-contre. Bien que les deux manières de créer une condition en workflow donnent le même résultat, il réside une différence entre les deux. Pour la condition de code, nous devons recompiler tout le Workflow lorsque nous modifions la condition ; alors que pour la condition de règle déclarative, les conditions sont dans un fichier séparé et écrites en XAML, qui est un langage interprété et non pas compilé, nous pouvons donc modifier de manière plus simples nos conditions InvokeWorkflow Cette activité nous permet de lancer de manière asynchrone un workflow à partir d un autre workflow sans passer par le processus hôte. Il est important de noter que Windows Workflows Foundation ne supporte pas l appel récursif des workflows, un workflow ne peut donc pas s appeler lui-même. La propriété TargetWorkflow doit être obligatoirement complétée, soit écrivez directement le nom du workflow contenu dans votre solution à appeler, soit cliquez sur les trois petits point pour ouvrir la fenêtre permettant de sélectionner le type de workflow à appeler. Si votre workflow cible est dans un projet différents de celui du workflow appelant, n oubliez pas d ajouter les références nécessaires et de régénérer votre projet, si vous ne faites pas cette dernière étape, votre workflow cible risque de paraître inconnu. Afin que notre workflow soit lancé avec des paramètres, il faut indiquer un nom de méthode à la propriété Invoking, puis déclarer dans cette méthode les variables à passer en paramètre ; une fois cela fait, de nouvelles propriétés de votre InvokeWorkflowActivity apparaissent, celles-ci sont les variables que vous avez déclarées dans votre méthode de la propriété Invoking. Ensuite, si vos variables sont accessibles dans votre workflow, elles seront réassignées en fonction des valeurs que vous avez passées en paramètre précédemment.

16 16 Opérations de bases sur les workflows Parallel Il arrive bien souvent que l on veuille effectuer plusieurs actions qui se suivent tout en les séparant les unes des autres (pour quelques raisons que ce soit), c est aussi possible de le faire avec un Workflow. Il suffit pour cela d utiliser l activité parallelactivity. Cette activité est utilisée pour faire fonctionner de manière quasiment simultanée deux activités ou plus en autant de branches issues de cette activité. Mais contrairement à son nom, elle n effectue pas ces activitées en même temps, elle les exécute l un après l autre. De plus une activité de ce type ne peux utiliser qu une seule activité de type sequenceactivity. L utilisation de parallelactivity a des avantages et des inconvénients, tel que le fait que peu importe le nombre d activité dans chaque branche l activité le testera, voici un exemple : Schéma : Exemple de parallelactivity Ici nous avons trois branches différentes et ne possédant pas le même nombre d activité à l intérieure de chacune d elle. Notre activité va d abord exécuter les codeactivity1, 2 et 5 (formant ainsi la première ligne). Puis ensuite les codeactivity4 et 3 (formant la seconde ligne) puis pour finir le codeactivity6 (formant la troisième et dernière ligne). Ici il ne faut pas croire que seules les codeactivity1 et 5 forment la première ligne et ainsi de suite. Le schéma n implique pas forcément l ordre d exécution. Il y a, en utilisant cette activité, un inconvénient : si le code met trop longtemps à s exécuter ou si il y a un problème, notre activité s exécutera jusqu à la fin sans s arrêter et ne nous indiquera qu à ce moment là qu elle n a pas put exécuter une ou plusieurs activités internes à parallelactivity.

17 17 Opérations de bases sur les workflows Replicator Dans les outils bien pratiques que nous utilisons en.net nous pouvons ranger le mot clé foreach du C# et for each du VB.net. En effet, ceux-ci nous permettent de parcourir tout les éléments d un tableau ou d une liste d une manière plus facile qu avec une boucle for. Il en est de même pour les workflows, nous pouvons utiliser une activité de type WhileActivity pour répéter une activité seule, une séquence, ou des activités parallèles pour chaque élément d un tableau, mais pour cela, l activité Replicator est mieux appropriée. Tout d abord, vous devez spécifier dans ses propriétés ExecutionType qui indique si votre Replicator contiendra des activités séquentielles ou parallèles, en cas de mauvais choix, le workflow pourra produire des résultats très inattendus, c est pour cela qu il peut être important de tester ce que produit l exécution du workflow à ce niveau là. Il est important de noter que l activité Replicator ne peut contenir qu une seule activité, mais celle-ci peut être composite (formée de plusieurs activités imbriquées les unes dans les autres), telle une activité de type parallel ou de type Sequence (voir Partie 2.2.8). Ensuite, il faut spécifier le tableau ou la collection, obligatoirement de type IList, dans la propriété InitChildData, c est ces données qui seront parcourues lors de chaque exécution de l activité enfant. Pour lier la propriété InitChildData, cliquez sur les trois petits points en face de celle-ci pour ouvrir la fenêtre de liaison de la propriété à celle d une activité. Dans cette fenêtre vous pouvez soit lier avec une propriété déjà existante ou soit avec une nouvelle. Lier avec une nouvelle propriété créera dans le fichier de votre workflow une nouvelle propriété du type suivant : //C# public static DependencyProperty nomdemalisteproperty = DependencyProperty.Register("nomDeMaListe", typeof(system.collections.ilist), typeof(workflowconsoleapplication1.workflow1)); [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)] [BrowsableAttribute(true)] [CategoryAttribute("Propriétés")] public IList liste get return ((System.Collections.IList)(base.GetValue(WorkflowConsoleApplication1.Wor kflow1.listeproperty))); set base.setvalue(workflowconsoleapplication1.workflow1.listeproperty, value);

18 18 Opérations de bases sur les workflows VB.NET Public Shared nomdemalisteproperty As DependencyProperty = DependencyProperty.Register("nomDeMaListe", GetType(System.Collections.IList), GetType(WorkflowConsoleApplication1.Workflow1)) <DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)> _ <BrowsableAttribute(True)> _ <CategoryAttribute("Propriétés")> _ Public Property liste() As IList Get Return DirectCast((MyBase.GetValue(WorkflowConsoleApplication1.Workflow1.listePr operty)), System.Collections.IList) End Get Set(ByVal value As IList) MyBase.SetValue(WorkflowConsoleApplication1.Workflow1.listeProperty, value) End Set End Property Ici «nomdemaliste» n est pas instancié, cette étape est à faire dans le processus hôte, et «nomdemaliste» devra ensuite être passé en argument comme indiqué dans la partie de ce chapitre. Vous pourrez alors appeler la méthode Add( ) de notre objet de type IList, ce qui ajoutera à chaque fois une itération de notre activité fille. //C# nomdemaliste.add(4); nomdemaliste.add(1000); VB.NET nomdemaliste.add(4); nomdemaliste.add(1000); Vous pouvez obtenir la valeur de la case «nomdemaliste» à chaque itération, pour cela utilisez la propriété CurrentIndex de votre ReplicatorActivity que vous placez en parametre de votre liste : //C# nomdemaliste[instancedereplicatoractivity.currentindex].tostring() VB.NET nomdemaliste(instancedereplicatoractivity.currentindex).tostring() La propriété ChildCompleted permet d exécuter une méthode à la fin de l exécution de l activité enfant ; si votre ReplicatorActivity contient plusieurs activités, la méthode liée à la propriété ChildCompleted s exécutera à la fin de l activité contenante (c est dire Parralel, Sequence, While, ou tout autre activité pouvant en contenir d autre). La propriété ChildInitialized permet d exécuter une méthode lors de l initialisation de l activité enfant. De même que pour la propriété ChildCompleted, si votre ReplicatorActivity

19 19 Opérations de bases sur les workflows contient plusieurs activités, la méthode s exécutera au début de l activité composite et non au début de chaque activité contenue. La propriété Completed permet d exécuter une méthode juste avant la fin de l exécution de votre ReplicatorActivity. Nous pouvons par exemple l utiliser pour effectuer une opération «bilan» de notre ReplicatorActivity comme par exemple afficher le nombre d activité qui ont été exécutées, ou simplement donner la confirmation que l opération s est bien déroulée. La propriété Initialized permet d exécuter une méthode lors de l initialisation de l activité Replicator. Cela peut notamment servir à ajouter des valeurs à notre liste liée à la propriété InitChildData, mais cela ne peut en aucun cas servir à instancier cette liste, en effet il est obligatoire que la liste liée existe pour que l activité démarre. Enfin, UntilCondition est utilisée pour pouvoir sortir du ReplicatorActivity en fonction de la valeur de vérité d une condition. La manière de spécifier la condition est la même que pour l activité IfElse et While, référez vous à la partie pour plus d information sur la syntaxe. Cette propriété est à utiliser avec précaution, en effet si la condition n est pas remplie avant la fin des itérations, le programme attendra indéfiniment dans le ReplicatorActivity, il faudra donc une possibilité de sortir de la boucle à partir d une autre branche du workflow ou de passer à la suite au bout d un certain temps grâce à l activité Delay Sequence Une SequenceActivity a pour but de nous permettre d ajouter plusieurs activités à l intérieure d une autre qui ne peut en contenir qu une seule. Regardons donc ça de plus prés : Ici nous avons une boucle while (activité que nous verrons par la suite) dans laquelle nous avons introduit une SequenceActivity. Normalement une activité while ne peut contenir qu une seule et unique activité, mais grâce à la SequenceActivity, nous avons put en intégrer trois Suspend Cette activité nous sert à suspendre momentanément l exécution de notre workflow, généralement pour corriger une erreur mineure dans le workflow par notre processus hôte. Lorsque cette activité s exécute, l événement WorkflowSuspended de notre instance de WorkflowRuntime est appelé. La relance de notre instance de workflow se fait par l exécution de la méthode Resume() de notre cette instance. En reprenant le code auto-généré par Visual Studio nous obtenons :

20 20 Opérations de bases sur les workflows //C# namespace WorkflowConsoleApplication1 class Program static void Main(string[] args) bool workflowenpause = false; using(workflowruntime workflowruntime = new WorkflowRuntime()) AutoResetEvent waithandle = new AutoResetEvent(false); workflowruntime.workflowcompleted += delegate(object sender, WorkflowCompletedEventArgs e) waithandle.set(); ; workflowruntime.workflowterminated += delegate(object sender, WorkflowTerminatedEventArgs e) Console.WriteLine(e.Exception); waithandle.set(); ; workflowruntime.workflowsuspended += delegate(object sender, WorkflowSuspendedEventArgs e) Console.WriteLine("Votre workflow est suspendu"); workflowenpause = true; waithandle.set(); ; WorkflowInstance instance = workflowruntime.createworkflow(typeof(workflow1)); instance.start(); waithandle.waitone(); while (workflowenpause) workflowenpause = false; instance.resume(); waithandle.waitone();

21 21 Opérations de bases sur les workflows VB.NET Namespace WorkflowConsoleApplication1 Public Class Program Shared WaitHandle As New AutoResetEvent(False) Shared WorkflowEnPause As Boolean = False Public Shared Sub Main() Using workflowruntime As New WorkflowRuntime() AddHandler workflowruntime.workflowcompleted, AddressOf OnWorkflowCompleted AddHandler workflowruntime.workflowterminated, AddressOf OnWorkflowTerminated AddHandler workflowruntime.workflowsuspended, AddressOf OnWorkflowSuspended Dim instance As WorkflowInstance = workflowruntime.createworkflow(gettype(workflow1)) instance.start() WaitHandle.WaitOne() While WorkflowEnPause WorkflowEnPause = False instance.[resume]() WaitHandle.WaitOne() End While Console.Read() End Using Public Shared Sub OnWorkflowCompleted(ByVal sender As Object, ByVal e As WorkflowCompletedEventArgs) WaitHandle.[Set]() Public Shared Sub OnWorkflowTerminated(ByVal sender As Object, ByVal e As WorkflowTerminatedEventArgs) Console.WriteLine(e.Exception.Message) WaitHandle.[Set]() Public Shared Sub OnWorkflowSuspended(ByVal sender As Object, ByVal e As WorkflowSuspendedEventArgs) Console.WriteLine("Votre workflow est suspendu") WorkflowEnPause = True WaitHandle.[Set]() End Class End Namespace Remarquez l ajout de la gestion de l événement workflowruntime.workflowsuspended qui cause ici l affichage du message «Votre workflow est suspendu», le passage à true du booleen WorkflowEnPause instancié un peu plus haut, ce qui permet de gérer grâce à une boucle while de mettre le programme en pause autant de fois qu il le faut. Il est bon de noter que pour relancer le workflow, il a fallu d abord au préalable envoyer le signal de relance au programme hôte, il est donc important de rappeler la méthode WaitOne() juste après avoir relancer notre workflow grâce à la méthode Resume( pour remettre en attente notre programme hôte. Cette activité possède une seule propriété non commune, Error, à lier à un champ de type string, ce qui nous permettra de récuper un message d erreur lors de l execution de cette activité.

22 22 Opérations de bases sur les workflows Terminate Il arrive que parfois nous voudrions arrêtez l exécution du workflow avant sa fin prévue, pour cela on utilise l activité terminateactivity. Cette activité lance l événement WorkflowTerminated qui sera géré dans notre processus hôte dans la partie mise en commentaire ci-après (la partie de code qui suit est celle placée dans la méthode Main) : //C# using(workflowruntime workflowruntime = new WorkflowRuntime()) AutoResetEvent waithandle = new AutoResetEvent(false); workflowruntime.workflowcompleted += delegate(object sender, WorkflowCompletedEventArgs e) waithandle.set();; //Debut du code qui nous intéresse ici workflowruntime.workflowterminated += delegate(object sender, WorkflowTerminatedEventArgs e) Console.WriteLine(e.Exception.Message); waithandle.set(); ; //Fin du code qui nous intéresse ici WorkflowInstance instance = workflowruntime.createworkflow(typeof(terminate.workflow1)); instance.start(); waithandle.waitone(); VB.NET Using workflowruntime As New WorkflowRuntime() AddHandler workflowruntime.workflowcompleted, AddressOf OnWorkflowCompleted AddHandler workflowruntime.workflowterminated, AddressOf OnWorkflowTerminated Dim instance As WorkflowInstance = workflowruntime.createworkflow(gettype(workflow1)) instance.start() WaitHandle.WaitOne() End Using Shared Sub OnWorkflowCompleted(ByVal sender As Object, ByVal e As WorkflowCompletedEventArgs) WaitHandle.Set() Debut du code qui nous intéresse ici Shared Sub OnWorkflowTerminated(ByVal sender As Object, ByVal e As WorkflowTerminatedEventArgs) Console.WriteLine(e.Exception.Message) WaitHandle.Set() Fin du code qui nous intéresse ici

23 23 Opérations de bases sur les workflows L activité terminateactivity mène à la ligne de code que nous pouvons voir précédemment et qui se trouve dans la sous partie qui se nomme «program.cs» pour un projet C# ou «Module1.vb» pour du VB.net Cette activité possède une seule propriété non commune, Error, à lier à un champ de type string, ce qui nous permettra de récuper un message d erreur lors de l execution de cette activité While Il arrive que l on veuille effectuer une itération dans un programme, dans un Workflow, on utilisera une activité while. Prenons l exemple de ce programme : //C# namespace WorkflowConsoleApplication8 public sealed partial class Workflow1 : SequentialWorkflowActivity int a = 0; string[] prenom = "Michel", "Bill", "Clara", "Albert" ; public Workflow1() InitializeComponent(); private void codeactivity1_executecode(object sender, EventArgs e) Console.WriteLine(prenom[a]); a++; private void codeactivity2_executecode(object sender, EventArgs e) Console.ReadKey(); VB.NET Namespace WorkflowConsoleApplication8 Partial Public NotInheritable Class Workflow1 Inherits SequentialWorkflowActivity Private a As Integer = 0 Private prenom As String() = "Michel", "Bill", "Clara", "Albert" Public Sub New() InitializeComponent() Private Sub codeactivity1_executecode(byval sender As Object, ByVal e As EventArgs) Console.WriteLine(prenom(a)) a += 1 Private Sub codeactivity2_executecode(byval sender As Object, ByVal e As EventArgs) Console.ReadKey() End Class End Namespace Ici nous avons créé une itération sur la première activité (la seconde ne nous servant qu à voir ce que la première a effectué en quelques dixièmes de secondes). Ici nous commençons par

24 24 Opérations de bases sur les workflows initialiser un compteur qui servira à la condition d exécution de notre WhileActivity pour son bon fonctionnement. En effet, cette activité aura besoin d une condition. Nous pourrons choisir une condition de code ou alors une condition de règle déclarative comme pour l activité IfElse. Pour bien fonctionner, ici nous prendrons le fait que tant que le nombre a est inférieure au nombre de mot qui seront crées par la suite, elle écrira ceux qui restent à écrire, le compteur a s incrémentera ainsi au fur et à mesure de l activité. 3 Conclusion Nous avons vu dans ce chapitre les fonctions de bases pour l application d un workflow séquentiel. Ces fonctions peuvent répondre à plusieurs besoins ; néanmoins, il va nous falloir plus que ces fonctions pour pouvoir créer de véritables workflows. Ces fonctions de bases ont pour principal objectif l hébergement du workflow ou du contrôle de flux. Nous allons voir dans le prochain chapitre les différents échanges de données d un workflow avec son environnement.

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Le MSMQ. Version 1.0. Pierre-Franck Chauvet Le MSMQ Version 1.0 Z Pierre-Franck Chauvet 2 [Le MSMQ] [Date : 10/10/09] Sommaire 1 Introduction... 3 2 Le Concept... 5 2.1 Les messages... 5 2.2 Les files d attentes... 5 2.3 WorkGroup... 7 2.4 Active

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances

Plus en détail

Module.NET 3 Les Assemblys.NET

Module.NET 3 Les Assemblys.NET Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

.NET - Classe de Log

.NET - Classe de Log .NET - Classe de Log Classe permettant de Logger des données Text Dans tous les projets, il est indispensable de pouvoir stocker de l'information textuelle : Pour le suivi des erreurs Pour le suivi de

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

COURS WINDEV NUMERO 3

COURS WINDEV NUMERO 3 COURS WINDEV NUMERO 3 01/02/2015 Travailler avec un fichier de données Etude du gestionnaire d analyse, Manipulation des tables mémoires, Manipulation de données, Création d états, Pré requis : Cours WinDev

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Services Windows et Domaines d application

Services Windows et Domaines d application 1 Sommaire... 1 1 Introduction... 2 2 Les services Windows... 3 2.1 Création et mise en place d un service pas à pas... 4 2.1.1 Créer un service... 4 2.1.2 Gérer son service Windows... 12 2.2 Exemple pratique...

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus : 1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus : La procédure d installation démarre. La fenêtre suivante vous indique

Plus en détail

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

Déployer une application cliente avec le Framework.NET 3.5 Client Profile Déployer une application cliente avec le Framework.NET 3.5 Client Profile Version 1.0 James RAVAILLE http://blogs.dotnet-france.com/jamesr 2 Déployer une application cliente avec le Framework.NET 3.5 Client

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Hébergement et configuration de services WCF. Version 1.0

Hébergement et configuration de services WCF. Version 1.0 Hébergement et configuration de services WCF Version 1.0 2 Configuration et Hebergement de services WCF Sommaire 1 Présentation du chapitre... 3 1.1 Présentation générale... 3 1.1.1 A qui s adresse ce

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Rafraichissement conditionné d'une page en.net

Rafraichissement conditionné d'une page en.net Rafraichissement conditionné d'une page en.net Test avec AJAX pour rafraichissement En utilisant AJAX, voici une possibilité de faire un rafraichissement conditionné. Nous verrons dans cet article une

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle - 2012-2013 P. Bonnet

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle - 2012-2013 P. Bonnet Programmation VBA Pierre BONNET 21 La programmation VBA Historiquement, la programmation sous Excel avait comme fonction d'automatiser une succession d'actions faites dans la feuille à l'aide de la souris.

Plus en détail

Déploiement et monitoring

Déploiement et monitoring 1 Déploiement et monitoring Déploiement et monitoring Sommaire Déploiement et monitoring... 1 1 Introduction... 2 2 Configuration de IIS pour l environnement ASP.NET... 2 2.1 Activer IIS... 2 2.2 Prise

Plus en détail

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES TRAVAUX PRATIQUES Le présent travail vise à développer une interface visuelle de programmation des entrées- sorties du port LPT d un PC à l aide du logiciel VISUAL BASIC. I- EDITION ET TEST DU PROGRAMME

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Gestion du cache dans les applications ASP.NET

Gestion du cache dans les applications ASP.NET Gestion du cache dans les applications ASP.NET Version 1.0 James RAVAILLE http://blogs.dotnet france.com/jamesr 2 Gestion du cache dans les applications ASP.NET v 1.0 03/01/09 Sommaire 1 Introduction...

Plus en détail

< Atelier 1 /> Démarrer une application web

< Atelier 1 /> Démarrer une application web MES ANNOTATIONS SONT EN ROUGE : Axel < Atelier 1 /> Démarrer une application web Microsoft France Tutorial Découverte de ASP.NET 2.0 Sommaire 1 INTRODUCTION... 3 1.1 CONTEXTE FONCTIONNEL... 3 1.2 CONTEXTE

Plus en détail

Convers3 Documentation version 3.07. Par Eric DAVID : vtopo@free.fr

Convers3 Documentation version 3.07. Par Eric DAVID : vtopo@free.fr Convers3 Documentation version 3.07 Par Eric DAVID : vtopo@free.fr 1 INSTALLATION DE CONVERS... 2 2 UTILISATION DE CONVERS... 2 2.1 FENETRE PRINCIPALE... 2 2.1.1 Convention de saisie et d affichage des

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Propriétés Description Intitulé long Formation concernée Matière Présentation Développement d un logiciel de messagerie

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows Ce dossier a une forme un peu différente des précédentes : c est un ensemble de «fiches» décrivant chacune une des opérations que l on peut effectuer avec un fichier (enregistrer, renommer, etc.). Chaque

Plus en détail

PROGRAMMATION EVENEMENTIELLE sur EXCEL

PROGRAMMATION EVENEMENTIELLE sur EXCEL MASTERs SMaRT & GSI PROGRAMMATION EVENEMENTIELLE sur EXCEL Pierre BONNET Programmation évènementielle La programmation évènementielle permet un appel de procédure depuis l'interface HMI d'excel (ou d'un

Plus en détail

INSTALLATION DBSWin 5.0.1 En réseau

INSTALLATION DBSWin 5.0.1 En réseau INSTALLATION DBSWin 5.0.1 En réseau Important : DBSWin 5.0.1 nécessite un lecteur de DVD et minimum 1 Go de RAM 1) PARTAGE DU DISQUE...page 2 2) OUVERTURE DES PORTS DU PARE-FEU WINDOWS...page 3 3) INSTALLATION

Plus en détail

Eclipse atelier Java

Eclipse atelier Java Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer

Plus en détail

Apprendre Java en 154 minutes

Apprendre Java en 154 minutes Apprendre Java en 154 minutes Tutorial Java 1.6 - HESB-TI Stéphanie Calderara José R. Beuret Quentin Cosendey Mai 2008 Table des matières 1 Objet, classe et modificateur 3 1.1 Le premier pas..........................

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

De quoi avez-vous besoin pour ce manuel?

De quoi avez-vous besoin pour ce manuel? Introduction Le commerce électronique est devenu l un des grands sujets de préoccupation des chefs d entreprise du monde entier. Ces derniers répètent à l envie que leur priorité absolue est de relever

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

Utilisation du client de messagerie Thunderbird

Utilisation du client de messagerie Thunderbird Outlook express n existant plus sur les systèmes d exploitation sortis après Windows XP, nous préconisons désormais l utilisation du client de messagerie libre distribué gratuitement par la Fondation Mozilla.

Plus en détail

Programmation Orientée Objet en C#

Programmation Orientée Objet en C# Programmation Orientée Objet en C# 1 Introduction 1.1 Présentation Tout bon développeur le sait, le code d'un programme doit être propre, commenté, facile à maintenir et à améliorer. Vous êtes adepte de

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Déploiement d application Silverlight

Déploiement d application Silverlight Déploiement d application Silverlight Thibault Laurens Bastien Chauvin 2 Déploiement d'application Silverlight 17/06/09 Sommaire 1 Introduction... 3 2 Intégrer une application à une page Web... 4 3 Les

Plus en détail

Rapport de Mini-Projet en ArcGIS Engine

Rapport de Mini-Projet en ArcGIS Engine Rapport de Mini-Projet en ArcGIS Engine Réalisée par : Asmae BENMESSAOUD 3ème Année Cycle d Ingénieur Géoinformation Année Universitaire 2010- Sommaire 1 Introduction L analyse géographique et la visualisation

Plus en détail

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007 SOMMAIRE 1) CRÉATION D UN INDEX SIMPLE 3 a) Étape 1 : Marquage des entrées d index (à l aide d un fichier de concordance) 3 Procédure d insertion du tableau 4 Saisie des entrées d index 5 Marquage automatique

Plus en détail

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE 2 ème partie : REQUÊTES Sommaire 1. Les REQUÊTES...2 1.1 Créer une requête simple...2 1.1.1 Requête de création de listage ouvrages...2 1.1.2 Procédure de

Plus en détail

Reporting Services - Administration

Reporting Services - Administration Reporting Services - Administration Comment administrer SQL Server Reporting Services Cet article a pour but de présenter comment gérer le serveur depuis le "portail" de Reporting Services. Nous verrons

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 I. Objectif du TP TP1 : Initiation à Java et Eclipse Programmation Mobile Initiation à l environnement Eclipse et aux notions de base du langage Java. II. Environnement

Plus en détail

Host Integration Server 2000

Host Integration Server 2000 Host Integration Server 2000 Comment communiquer entre Windows et Mainframe Dans le cadre d'un prochain article consacré à l'appel des composants COMTI depuis une page WEB (ASP3 et ASP.NET), nous verrons

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Dragon Naturally Speaking 13

Dragon Naturally Speaking 13 Année 2015 Dragon Naturally Speaking 13 Guide premier pas Nathalie Macé / Grégoire Duval PROJET ORDYSCAN 1 Table des matières Introduction 3 Pourquoi utiliser Dragon Naturally Speaking avec les élèves

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

Tutoriel D utilisation. Du PGI Open line d EBP

Tutoriel D utilisation. Du PGI Open line d EBP Tutoriel D utilisation Du PGI Open line d EBP Tutoriel d utilisation du PGI EBP Open line - christophe.cessac@ac-orleans-tours.fr LP Les charmilles / Mission TICE Page 1/64 Table des matières Première

Plus en détail

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4 1 Introduction 1-1 Chaîne de développement Algorithm e C+ + Algorigramm e languag e machine binaire Le programme est écrit à l aide de Multiprog sous forme d algorigramme puis introduit dans le microcontrôleur

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Groupe Eyrolles, 2006, pour la présente édition, ISBN : 2-212-11782-5

Groupe Eyrolles, 2006, pour la présente édition, ISBN : 2-212-11782-5 Groupe Eyrolles, 2006, pour la présente édition, ISBN : 2-212-11782-5 Table des matières Chapitre A : Principes de base des scripts... 1 Élaboration de votre premier script... 1 Importance du modèle...

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et Licence 3 CDA 2010/2011 Client FTP Java Maxence Jaouan Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et Windows?...

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires. Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires. Il est important de savoir les identifier, de connaître

Plus en détail

TP3-2 CONSTRUISEZ VOTRE PREMIER SERVICE AZURE

TP3-2 CONSTRUISEZ VOTRE PREMIER SERVICE AZURE TP3-2 CONSTRUISEZ VOTRE PREMIER SERVICE AZURE Table des matières TP3-2 Construisez votre premier service Azure... 1 Construisez votre premier service Azure... 2 Mise en place des outils de développement...

Plus en détail

RÉALISATION D UN SITE DE RENCONTRE

RÉALISATION D UN SITE DE RENCONTRE RÉALISATION D UN SITE DE RENCONTRE Par Mathieu COUPE, Charlène DOUDOU et Stéphanie RANDRIANARIMANA Sous la coordination des professeurs d ISN du lycée Aristide Briand : Jérôme CANTALOUBE, Laurent BERNARD

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Vérification de programmes et de preuves Première partie. décrire des algorithmes Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser

Plus en détail

Solutions du chapitre 4

Solutions du chapitre 4 Solutions du chapitre 4 Structures de contrôle: première partie 4.9 Identifiez et corrigez les erreurs (il peut y en avoir plus d une par segment de code) de chacune des proposition suivantes: a) if (

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

SQL Server Installation Center et SQL Server Management Studio

SQL Server Installation Center et SQL Server Management Studio SQL Server Installation Center et SQL Server Management Studio Version 1.0 Grégory CASANOVA 2 SQL Server Installation Center et SQL Server Management Studio [03/07/09] Sommaire 1 Installation de SQL Server

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

Microsoft Application Center Test

Microsoft Application Center Test Microsoft Application Center Test L'outil de Test de performance des Sites Web Avec Visual Studio.NET, il est fourni une petite application qui permet de valider la performance de son site Internet ou

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Web service AREA Manuel d installation et d utilisation du mode déconnecté. Version du 18 mars 2011

Web service AREA Manuel d installation et d utilisation du mode déconnecté. Version du 18 mars 2011 Web service AREA Manuel d installation et d utilisation du mode déconnecté Version du 18 mars 2011 sommaire 1 Installation du mode déconnecté : 4 2 Utilisation du mode déconnecté : 21 - Synchronisation

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE Flex Lire les données de manière contrôlée 1 Plan Lier les données Stocker les données Valider les données 2 Gérer des données Lier des données La notion de DataBinding est l une des plus importantes du

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B Excel : Réalisation d un classeur Compta Saisir les étiquettes Renommer la première feuille Compta Laisser la première ligne vide et sur la deuxième ligne saisir les étiquettes Se placer sur A2 et saisir

Plus en détail

Guide de l utilisateur Mikogo Version Windows

Guide de l utilisateur Mikogo Version Windows Guide de l utilisateur Mikogo Version Windows Table des matières Création d un compte utilisateur 3 Téléchargement et installation 4 Démarrer une session 4 Joindre une session 5 Fonctionnalités 6 Liste

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail