Partager via


Procédure : supprimer une réunion d'un espace de travail de réunion

Dernière modification : mercredi 7 juillet 2010

S’applique à : SharePoint Foundation 2010

Les réunions que vous créez par le biais d’une liste d’événements ne sont pas annulées ni supprimées lorsque l’événement associé est supprimé, et il n’est pas possible d’annuler ou de supprimer une réunion à partir d’un site d’espace de travail de réunion par le biais de l’interface utilisateur. Cette tâche de programmation indique comment vous pouvez supprimer une réunion d’un espace de travail de réunion en créant une application console qui utilise des méthodes des services Web Lists et Meetings.

Pour supprimer une réunion d’un espace de travail de réunion

  1. Créez une application console dans Microsoft Visual Studio conformément à la description dans Procédure : créer une application console.

  2. Ajoutez des références Web pour les deux services Web, Lists et Meetings :

    1. Cliquez avec le bouton droit sur Références dans l’Explorateur de solutions, puis cliquez sur Ajouter une référence de service.

    2. Dans la boîte de dialogue Ajouter une référence de service, cliquez sur Avancé, puis dans la boîte de dialogue Paramètres de référence de service, cliquez sur Ajouter une référence Web.

    3. Dans la zone URL de la boîte de dialogue Ajouter une référence Web, tapez l’URL du service Web, en incluant le site auquel s’applique ce service et le répertoire virtuel des services Web, par exemple :

      https://Server/sites/Site_Name/_vti_bin/Lists.asmx

    4. Cliquez sur Ajouter une référence.

    5. Répétez cette procédure pour ajouter une référence dans Meetings.asmx pour le service Web Meetings.

  3. Ajoutez une directive using (Imports en Visual Basic) pour l’espace de noms System.Xml dans Class1.cs.

  4. Ajoutez l’exemple de code suivant à la méthode Main, qui commence par instancier les services Web Lists et Meetings, authentifier l’utilisateur actuel pour l’utilisation de ces deux services et collecter les entrées effectuées par l’utilisateur qui spécifie la réunion à supprimer.

    Dim listObj As New Web_Reference.Lists()
    listObj.Credentials = System.Net.CredentialCache.DefaultCredentials
    
    'Get Meeting Workspace URL.
    Console.Write("Enter the URL of the Meeting Workspace: ")
    Dim baseURL As String = Console.ReadLine()
    
    'Set URL properties for both objects.
    listObj.Url = baseURL + "/_vti_bin/lists.asmx"
    meetObj.Url = baseURL + "/_vti_bin/meetings.asmx"
    
    'Get meeting InstanceID.
    Console.Write("Enter the InstanceID of the meeting: ")
    Dim InstanceID As String = Console.ReadLine()
    
    Dim xmlDoc As New XmlDocument()
    
    Dim ndQuery As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "")
    Dim ndViewFields As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "")
    Dim ndQueryOptions As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "")
    
    'Create Query to filter based on the InstanceID provided.
    ndQuery.InnerXml = "<Where><Eq><FieldRef Name=""ID""/> + 
         "<Value Type=""Counter""> + InstanceID + "</Value></Eq></Where>"
    
    Try
       'Call GetListItems Web service to get meeting UID.
       Dim ndResult As XmlNode = listObj.GetListItems("Meeting Series", "", ndQuery, ndViewFields, "0", ndQueryOptions)
       Dim MainNode As XmlNode = ndResult.ChildNodes.Item(1)
       MainNode = MainNode.ChildNodes.Item(1)
       Dim eventUID As XmlNode = MainNode.Attributes.GetNamedItem("ows_EventUID")
       Dim UID As String = eventUID.InnerText
    
       'Call RemoveMeeting Web service to cancel meeting.
       'NOTE: You might need to increase the sequence number depending
       'on how many updates have already been made to the meeting.
       meetObj.RemoveMeeting(0, UID, 0, DateTime.Now, True)
    
       Console.WriteLine("Meeting canceled successfully.")
    
       Catch ex As System.Web.Services.Protocols.SoapException
          Console.WriteLine(("Message:" + ControlChars.Lf + 
          ex.Message + ControlChars.Lf + "Detail:" + ControlChars.Lf + 
          ex.Detail.InnerText + ControlChars.Lf + "StackTrace:" + 
          ControlChars.Lf + ex.StackTrace))
    End Try
    
    /*Create necessary objects and set credentials.*/
    Web_Reference.Meetings meetObj = 
       new Web_Reference_Folder_Name.Meetings();
    meetObj.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    Web_Reference.Lists listObj = 
       new Web_Reference.Lists();
    listObj.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    /*Get Meeting Workspace URL.*/
    Console.Write("Enter the URL of the Meeting Workspace: ");
    string baseURL = Console.ReadLine();
    
    /*Set URL properties for both objects.*/
    listObj.Url = baseURL + "/_vti_bin/lists.asmx";
    meetObj.Url = baseURL + "/_vti_bin/meetings.asmx";
    
    /*Get meeting InstanceID.*/
    Console.Write("Enter the InstanceID of the meeting: ");
    string InstanceID = Console.ReadLine();
    
    XmlDocument xmlDoc = new XmlDocument();
    
    XmlNode ndQuery = 
       xmlDoc.CreateNode(XmlNodeType.Element,"Query", "");
    XmlNode ndViewFields = 
       xmlDoc.CreateNode(XmlNodeType.Element,"ViewFields","");
    XmlNode ndQueryOptions = 
       xmlDoc.CreateNode(XmlNodeType.Element,"QueryOptions","");
    
    // Create query to filter based on the InstanceID provided.
    ndQuery.InnerXml = 
       @"<Where><Eq><FieldRef Name=""ID""/><Value Type=""Counter"">" +
       InstanceID + "</Value></Eq></Where>";
    
    try
    {
       /*Call GetListItems Web service to get meeting UID.*/
       XmlNode ndResult = 
          listObj.GetListItems("Meeting Series", "", ndQuery, 
          ndViewFields, "0", ndQueryOptions);
       XmlNode MainNode = ndResult.ChildNodes.Item(1);
       MainNode = MainNode.ChildNodes.Item(1);
       XmlNode eventUID = 
          MainNode.Attributes.GetNamedItem("ows_EventUID");
       string UID = eventUID.InnerText;
    
       /*Call RemoveMeeting Web service to cancel meeting.
       NOTE: You might need to increase the sequence number depending
       on how many updates have already been made to the meeting.*/
       meetObj.RemoveMeeting(0, UID, 0, DateTime.Now, true);
    
       Console.WriteLine("Meeting canceled successfully.");
    }
    catch (System.Web.Services.Protocols.SoapException ex)
    {
       Console.WriteLine("Message:\n" + ex.Message + "\nDetail:\n" + 
          ex.Detail.InnerText + "\nStackTrace:\n" + ex.StackTrace);
    }
    

    L’exemple crée un objet XmlDocument, qui est utilisé pour créer les nœuds permettant d’élaborer les paramètres transmis à la méthode GetListItems. La méthode GetListItems(String, String, XmlNode, XmlNode, String, XmlNode, String) renvoie l’élément à partir de la liste Meeting Series dont l’identificateur (ID) est égal à l’ID d’instance spécifié par l’utilisateur. La requête est créée en langage CAML (Collaborative Application Markup Language). L’attribut ows_EventUID qui est renvoyé par le biais de la méthode GetListItems contient le GUID qui identifie le site d’espace de travail de réunion à supprimer, lequel est transmis à la méthode RemoveMeeting.

  5. Dans le menu Déboguer, cliquez sur Démarrer le débogage pour tester l’application.