IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[Workflow] Besoin d'aide pour le tutorial 'Les bases de Windows Workflow Foundation'


Sujet :

C#

  1. #1
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut [Workflow] Besoin d'aide pour le tutorial 'Les bases de Windows Workflow Foundation'
    Bonjour,

    Je fais un service Windows et on m'a demandé d'intégrer du Workflow dans mon service.
    Comme je n'ai jamais fait de Workflow auparavant, j'ai regardé les tutoriaux de Developpez.com et je suis tombé sur celui-ci :

    http://jab.developpez.com/tutoriels/dotnet/wf/#LI

    Ce tutorial propose de créer un WorkFlow 'Radar Automatique'.


    Je suis bloqué à la partie III 'Mon premier Workflow'.
    Je n'arrive pas à faire le programme du tutorial.


    Voici mon workflow en mode design :

    aperçu du workflow


    En gros, quand j'essaye de générer la solution, on me dit que la variable 'vitesse' n'existe pas dans le contexte actuel, dans ces 3 fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    private void inf130(object sender, ConditionalEventArgs e)
            {
     
                if (vitesse <= 130)
                {
                    e.Result = true;
                }
                else
                {
                    e.Result = false;
                }
     
            }
     
            private void Entre130et150(object sender, ConditionalEventArgs e)
            {
                if ((vitesse > 130) && (vitesse <= 150))
                {
                    e.Result = true;
                }
                else
                {
                    e.Result = false;
                }
     
     
     
            }
     
            private void plus150(object sender, ConditionalEventArgs e)
            {
                if (vitesse >= 150)
                {
                    e.Result = true;
                }
                else
                {
                    e.Result = false;
                }
            }

    Voici mon code Workflow1.cs :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Collections;
    using System.Drawing;
    using System.Linq;
    using System.Workflow.ComponentModel.Compiler;
    using System.Workflow.ComponentModel.Serialization;
    using System.Workflow.ComponentModel;
    using System.Workflow.ComponentModel.Design;
    using System.Workflow.Runtime;
    using System.Workflow.Activities;
    using System.Workflow.Activities.Rules;
     
    namespace ExWorkflow
    {
    	public sealed partial class Workflow1: SequentialWorkflowActivity
    	{
    		public Workflow1()
    		{
    			InitializeComponent();
    		}
     
            private void inf130(object sender, ConditionalEventArgs e)
            {
     
                if (vitesse <= 130)
                {
                    e.Result = true;
                }
                else
                {
                    e.Result = false;
                }
     
            }
     
            private void Entre130et150(object sender, ConditionalEventArgs e)
            {
                if ((vitesse > 130) && (vitesse <= 150))
                {
                    e.Result = true;
                }
                else
                {
                    e.Result = false;
                }
     
     
     
            }
     
            private void plus150(object sender, ConditionalEventArgs e)
            {
                if (vitesse >= 150)
                {
                    e.Result = true;
                }
                else
                {
                    e.Result = false;
                }
            }
     
            private void ActivityLow130(object sender, EventArgs e)
            {
                Console.WriteLine("Vitesse autorisée non dépassée");
     
                Console.WriteLine("Appuyez sur 'Entrer' pour terminer");
                Console.ReadLine();
            }
     
            private void ActivityEntre130et150(object sender, EventArgs e)
            {
                Console.WriteLine("Vitesse autorisée dépassée");
                Console.WriteLine("Envoi d'une amende automatisée");
     
                Console.WriteLine("Appuyez sur 'Entrer' pour terminer");
                Console.ReadLine();
     
            }
     
            private void ActivityPlusde150(object sender, EventArgs e)
            {
                Console.WriteLine("Vitesse autorisée fortement dépassée");
                Console.WriteLine("Envoi du dossier au parquet");
     
                Console.WriteLine("Appuyez sur 'Entrer' pour terminer");
                Console.ReadLine();
            }
     
            private void ActivityInput(object sender, EventArgs e)
            {
                Console.WriteLine("N° de plaque ? ");
                string numeroPlaque = Console.ReadLine();
     
                Console.WriteLine("vitesse ? ");
                string vitesseString = Console.ReadLine();
                int vitesse = int.Parse(vitesseString);
     
            }
     
    	}
     
    }

    Quelqu'un peut il m'expliquer pourquoi ça plante à la génération de la solution ?
    J'avoue je suis perdu, je comprends pas comment sont reliés les bouts de codes entre eux dans le workflow.

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    La variable "vitesse" est locale à la méthode ActivityInput.

    Pour pouvoir l'utiliser dans les autres méthodes de la classe "Workflow1", il va probablement falloir la déclarer comme un champ de la classe, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public sealed partial class Workflow1: SequentialWorkflowActivity {
     
       private int vitesse;
       private string numeroPlaque;
       ...
     
       private void ActivityInput(object sender, EventArgs e) {
          Console.WriteLine("N° de plaque ? ");
          numeroPlaque = Console.ReadLine();
          Console.WriteLine("Vitesse ? ");
          string vitesseString = Console.ReadLine();
          vitesse = int.Parse(vitesseString); 
       }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'Aide pour Conception de 3 bases de données
    Par saadoun dans le forum Schéma
    Réponses: 9
    Dernier message: 05/10/2012, 16h48
  2. Réponses: 7
    Dernier message: 20/03/2012, 16h58
  3. Besoin d'aide pour mon wrapper, les données sont faussées
    Par teddyalbina dans le forum C++/CLI
    Réponses: 9
    Dernier message: 20/05/2008, 21h46
  4. Réponses: 1
    Dernier message: 12/04/2007, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo