none
[WSS3.0][Dev EventHandler] Recuperer valeur d'un paramètre d'un workflow. RRS feed

  • Question

  • Bonjour,

    J'aurai voulu savoir si il etait possible de lire les parametres (d'association ou d'instanciation) d'un workflow lié a un item de liste.

    une solution alternative serait evidemment de  copier ses parametre dans les propriétés de l'item.

    Mais peut on vi code les lire directement ?

    Merci

    dimanche 17 octobre 2010 19:28

Réponses

  • Bonjour,

    sur chaque list item (SPListItem) il y a une propriété Workflows qui retourne la collection des workflows sur lequel est attaché l'item.
    Dans cette collection il suffit de recupérer l'instance de son workflow et de lire la propriété ParentAssociation qui retourne un SPWorkflowAssociation. 

    La propriété AssociationData retourne les informations de celui ci. 

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation_members.aspx

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflow_members.aspx  


    Xavier VANNESTE
    www.xvanneste.com
    media.xvanneste.com
    blog.xvanneste.com
    lundi 18 octobre 2010 07:58
    Auteur de réponse
  • Bonjour,

    Je détaille la solution présentée par Xavier en vous montrant un exemple de code :

        private void getAssociationFormData_ExecuteCode(object sender, EventArgs e)
        {
          AssociationData myAssociationData = null;  // Represents the Association Form Data pased in
          XmlSerializer serializer;
          XmlTextReader reader;
    
          // Deserialize the Custom Workflow Form Data from a String, 
          // back into the the appropriate Class Type so that we can use 
          // the values in our workflow. 
          serializer = new XmlSerializer(typeof(AssociationData));
          reader = new XmlTextReader(new System.IO.StringReader(workflowProperties.AssociationData));
          myAssociationData = (AssociationData)serializer.Deserialize(reader);
    
          // Store the user selected values
          this._destinationTitle = myAssociationData.DefaultDestinationDirectory;
          this._fileCopyOptions = myAssociationData.DefaultFileCopyChoice;
        }

    La classe AssociationData ressemble à ça :

      [Serializable]
      public class AssociationData
      {
        public string DefaultDestinationDirectory;
        public string DefaultFileCopyChoice;
      }

    Ce bout de code est tiré du blog de Robert Shelton.

    Sinon en règle générale, ces deux liens sont très utiles quand on commence le développement de workflow :

    http://rshelton.com/archive/2007/10/05/sharepoint-document-workflow-with-visual-studio-workshop-documents-download.aspx

    http://sergeluca.wordpress.com/2007/07/12/step-by-step-tutorial-creating-workflows-for-windows-sharepoint-services-and-moss2007-part-120/

     

    Bon courage.

     


    Philippe Sentenac - MVP SharePoint - http://blogs.developpeur.org/phil
    Merci de valider les réponses qui correspondent à votre problème afin qu'il apparaisse comme résolu.
    lundi 18 octobre 2010 09:28
    Modérateur

Toutes les réponses

  • Bonjour,

    sur chaque list item (SPListItem) il y a une propriété Workflows qui retourne la collection des workflows sur lequel est attaché l'item.
    Dans cette collection il suffit de recupérer l'instance de son workflow et de lire la propriété ParentAssociation qui retourne un SPWorkflowAssociation. 

    La propriété AssociationData retourne les informations de celui ci. 

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation_members.aspx

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflow_members.aspx  


    Xavier VANNESTE
    www.xvanneste.com
    media.xvanneste.com
    blog.xvanneste.com
    lundi 18 octobre 2010 07:58
    Auteur de réponse
  • Bonjour,

    Je détaille la solution présentée par Xavier en vous montrant un exemple de code :

        private void getAssociationFormData_ExecuteCode(object sender, EventArgs e)
        {
          AssociationData myAssociationData = null;  // Represents the Association Form Data pased in
          XmlSerializer serializer;
          XmlTextReader reader;
    
          // Deserialize the Custom Workflow Form Data from a String, 
          // back into the the appropriate Class Type so that we can use 
          // the values in our workflow. 
          serializer = new XmlSerializer(typeof(AssociationData));
          reader = new XmlTextReader(new System.IO.StringReader(workflowProperties.AssociationData));
          myAssociationData = (AssociationData)serializer.Deserialize(reader);
    
          // Store the user selected values
          this._destinationTitle = myAssociationData.DefaultDestinationDirectory;
          this._fileCopyOptions = myAssociationData.DefaultFileCopyChoice;
        }

    La classe AssociationData ressemble à ça :

      [Serializable]
      public class AssociationData
      {
        public string DefaultDestinationDirectory;
        public string DefaultFileCopyChoice;
      }

    Ce bout de code est tiré du blog de Robert Shelton.

    Sinon en règle générale, ces deux liens sont très utiles quand on commence le développement de workflow :

    http://rshelton.com/archive/2007/10/05/sharepoint-document-workflow-with-visual-studio-workshop-documents-download.aspx

    http://sergeluca.wordpress.com/2007/07/12/step-by-step-tutorial-creating-workflows-for-windows-sharepoint-services-and-moss2007-part-120/

     

    Bon courage.

     


    Philippe Sentenac - MVP SharePoint - http://blogs.developpeur.org/phil
    Merci de valider les réponses qui correspondent à votre problème afin qu'il apparaisse comme résolu.
    lundi 18 octobre 2010 09:28
    Modérateur
  • Bonjour et merci à tous pour les réponses.

     

    Tom42, si ces informations vous ont été utiles, je vous remercie de les marquer comme réponses.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    mardi 19 octobre 2010 14:18