Partager via


SPMeeting - Classe

Fournit des méthodes et des propriétés qui peuvent être utilisées pour fonctionner avec un espace de travail de réunion.

Hiérarchie d’héritage

System.Object
  Microsoft.SharePoint.Meetings.SPMeeting

Espace de noms :  Microsoft.SharePoint.Meetings
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Class SPMeeting
'Utilisation
Dim instance As SPMeeting
public class SPMeeting

Remarques

Un espace de travail de réunion est un site Web qui peut être utilisé pour rassembler toutes les informations et les documents qui sont nécessaires pour une ou plusieurs réunions. Il peut s'agir d'informations sur la date et d'heure lieu de la réunion, une bibliothèque de documents partagés et les listes de l'ordre du jour et les objectifs de la réunion, les tâches affectées et les décisions prises.

Vous pouvez créer un site espace de travail de réunion en appelant la méthode Add de la collection qui est retournée par la propriété Webs d'un site Web. Le tableau suivant contient une liste de modèles qui peuvent être utilisées avec la méthode Add .

Valeur

Définition de l'espace de travail

MPS#0

Espace de travail Réunion de base

MPS#1

Espace de travail de réunion vide

MPS#2

Espace de travail de réunion pour la prise de décision

MPS#3

Espace de travail Réunion informelle

MPS#4

Espace de travail Réunion multipage

Vous pouvez récupérer une liste de sites d'espace de travail de réunion existants de deux manières. La première méthode consiste simplement à effectuer une itération dans tous les sous-sites du site Web actuel et tester chacun d'eux en appelant la méthode statique IsMeetingWorkspaceWeb(SPWeb) . Cette technique est illustrée dans l'exemple suivant.

Dim mwsWebs As New List(Of SPWeb)
Dim subWebs As SPWebCollection =  webSite.Webs 
For Each web As SPWeb In subWebs
   If SPMeeting.IsMeetingWorkspaceWeb(web) Then
      mwsWebs.Add(web)
   End If
Next
List<SPWeb> mwsWebs = new List<SPWeb>();
SPWebCollection subWebs = webSite.Webs;
foreach (SPWeb web in subWebs)
   if (SPMeeting.IsMeetingWorkspaceWeb(web))
      mwsWebs.Add(web);

Une autre technique est utile lorsque vous souhaitez créer une nouvelle instance d'une réunion dans un espace de travail de réunion existant. La tâche principale dans ce cas est de trouver un site existant peut s'adapter à une autre réunion. Réunions uniques sont faciles à créer, car il n'y a aucune limite sur le nombre de réunions uniques un espace de travail de réunion peut héberger. Toutefois, une réunion périodique doit avoir un espace de travail de réunion qui lui sont propres. Si vous souhaitez un espace de travail pour une réunion périodique, vous devez en trouver un qui est vide, celui qui n'a aucune réunion de n'importe quel type. (Plus probablement, il s'agit d'un site d'espace de travail de réunion qui vient d'être créé.)

La méthode GetWorkspacesToLinkTo(Boolean) fournit une solution. Commencez en appelant la méthode statique GetMeetingInformation(SPWeb) , en passant l'objet SPWeb qui représente le site Web parent en tant qu'argument. Appelez ensuite la méthode GetWorkspacesToLinkTo , en transmettant false pour obtenir des sous-sites qui peuvent héberger des réunions uniques ou true pour obtenir des sous-sites qui sont disponibles pour héberger une réunion périodique (autrement dit, des sites espace de travail vide).

L'exemple suivant illustre la technique.

' Create a meeting object.
Dim meetInfo As SPMeeting = SPMeeting.GetMeetingInformation(webSite)

' Get a collection of Meeting Workspace subsites for recurring meetings.
Dim mwsWebs As SPWebCollection = meetInfo.GetWorkspacesToLinkTo(True)
// Create a meeting object.
SPMeeting meetingInfo = SPMeeting.GetMeetingInformation(webSite);

// Get a collection of Meeting Workspace sites for recurring meetings.
SPWebCollection mwsWebs = meetingInfo.GetWorkspacesToLinkTo(true);

Une fois que vous avez un site d'espace de travail de réunion, la tâche suivante consiste à ajouter une réunion. La classe SPMeeting possède deux méthodes qui peuvent vous aider à effectuer cette opération. La méthode LinkWithEvent ajoute une réunion à un espace de travail de réunion et puis de lier la réunion à un élément dans une liste d'événements, telles que la liste de Calendar qui est une fonction de la configuration de Site d'équipe standard.

Si vous travaillez avec une application de planification qui maintient son propre calendrier de rendez-vous, la méthode Add() est mieux adaptée à vos besoins. Une surcharge de la méthode Add importe les informations de réunion qui sont dans le format défini par RFC 2445, « Calendrier Internet et spécification d'objet noyau planification (iCalendar) ». De nombreuses applications de planification peuvent exporter des données d'événement au format iCalendar , y compris le calendrier de Windows de Microsoft.

La méthode Add ajoute une réunion à un espace de travail spécifié et retourne la réunion identificateur (ID) de l'instance. La méthode ne lie pas la réunion à un rendez-vous dans la liste Calendar . Toutefois, vous pouvez utiliser l'ID d'instance pour créer une URL pour la réunion, comme SharePoint Foundation , en l'ajoutant à une chaîne de requête.

https://localhost/single%20instance%20workspace/default.aspx?InstanceID=2

https://localhost/recurring%20meeting%20workspace/default.aspx?InstanceID=20091231

Exemples

L'exemple suivant est une application de console qui recherche tous les sous-sites de l'espace de travail de réunion qui sont associés à un site Web. Pour chaque espace de travail qu'il trouve, l'exemple d'application obtient une liste des réunions sont planifiées dans les 14 prochains jours. L'application imprime des informations sur chaque réunion dans la console dans le format suivant.

Meeting: Team Meeting
Location: Conf Room
Date: Wednesday, March 04, 2009
Time: 10:00 AM
Workspace URL: http://spvm/Team Meeting/default.aspx?InstanceID=20090304
Linked to the Calendar list at http://spvm/Lists/Calendar

Notez que la dernière ligne est facultative, selon que la réunion est liée à une liste d'événements SharePoint Foundation .

Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Meetings

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.OpenWeb()

            ' Construct a query to get meetings scheduled for the next 14 days.
            Dim startDate As String = DateTime.Now.ToString("s")
            Dim endDate As String = DateTime.Now.AddDays(14).ToString("s")
            Dim query As SPQuery = New SPQuery()
            query.ViewXml = _
               "<View><Query><Where><And>" + _
               "<Geq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + startDate + "</Value></Geq>" + _
               "<Leq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + endDate + "</Value></Leq>" + _
               "</And></Where></Query></View>"

            ' Find all Meeting Workspace sites.
            Dim subWebs As SPWebCollection = webSite.Webs
            For Each web As SPWeb In subWebs
               If SPMeeting.IsMeetingWorkspaceWeb(web) Then

                  ' A Meeting Workspace has a Meeting Series list with
                  ' information about all meetings in the workspace.
                  Dim meetings As SPList = web.Lists("Meeting Series")

                  ' Get the meeting items that fit the criteria.
                  Dim items As SPListItemCollection = meetings.GetItems(query)

                  ' Now extract useful information about each meeting.
                  For Each item As SPListItem In items
                     Dim instanceID As Integer = CType(item("InstanceID"), Integer)

                     ' Skip the master record for this workspace.
                     If instanceID > 0 Then
                        Dim url As String = web.Url + "/default.aspx?InstanceID=" + instanceID.ToString()

                        ' The EventUID field can indicate a link to the calendar.
                        Dim eventUID As String
                        Dim isLinked As Boolean = False
                        Dim isRecurring As Boolean = CType(item("fRecurrence"), Boolean)
                        If isRecurring Then
                           ' For recurring events, look in the first item's field.
                           Dim master As SPListItem = meetings.Items(0)
                           eventUID = CType(master("EventUID"), String)
                        Else
                           eventUID = CType(item("EventUID"), String)
                        End If
                        If Nothing <> eventUID Then
                           isLinked = eventUID.StartsWith("STSTeamCalendarEvent")
                        End If

                        Dim dt As DateTime = CType(item("EventDate"), DateTime)

                        ' Print the title, location, date, and time of the meeting,
                        ' the URL to the workspace and optionally the calendar link.
                        Console.WriteLine(vbCrLf + "Meeting: {0}", item.Title)
                        Console.WriteLine("Location: {0}", item("Location"))
                        Console.WriteLine("Date: {0}", dt.ToLongDateString())
                        Console.WriteLine("Time: {0}", dt.ToShortTimeString())
                        Console.WriteLine("Workspace URL: {0}", url)
                        If isLinked Then
                           Dim eventURL As String = CType(item("EventUrl"), String)
                           Dim parts() As String = eventURL.Split(","c)
                           Console.WriteLine("Linked to the {0} list at {1}", _
                                 parts(1).Trim(), parts(0))
                        End If
                     End If
                  Next
               End If
               web.Dispose()
            Next

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Meetings;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.OpenWeb())
            {
               // Construct a query to get meetings scheduled for the next 14 days.
               string startDate = DateTime.Now.ToString("s");
               string endDate = DateTime.Now.AddDays(14).ToString("s");
               SPQuery query = new SPQuery();
               query.ViewXml = 
                  "<View><Query><Where><And>" +
                  "<Geq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + startDate + "</Value></Geq>" +
                   "<Leq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + endDate + "</Value></Leq>" +
                   "</And></Where></Query></View>";

               // Find all Meeting Workspace sites.
               SPWebCollection subWebs = webSite.Webs;
               foreach (SPWeb web in subWebs)
               {
                  if (SPMeeting.IsMeetingWorkspaceWeb(web))
                  {
                     // A Meeting Workspace has a Meeting Series list with
                     // information about all meetings in the workspace.
                     SPList meetings = web.Lists["Meeting Series"];

                     // Get the meeting items that fit the criteria.
                     SPListItemCollection items = meetings.GetItems(query);

                     // Now extract useful information about each meeting.
                     foreach (SPListItem item in items)
                     {
                        int instanceID = (int)item["InstanceID"];

                        // Skip the master record for this workspace.
                        if (instanceID > 0)
                        {
                           string url = web.Url + "/default.aspx?InstanceID=" + instanceID.ToString();

                           // The EventUID field can indicate a link to the calendar.
                           string eventUID;
                           bool isLinked = false;
                           bool isRecurring = (bool)item["fRecurrence"];
                           if (isRecurring)
                           {
                              // For recurring events, look in the first item's field.
                              SPListItem master = meetings.Items[0];
                              eventUID = (string)master["EventUID"];
                           }
                           else
                           {
                              eventUID = (string)item["EventUID"];
                           }
                           if (null != eventUID)
                              isLinked = eventUID.StartsWith("STSTeamCalendarEvent");
                           
                           DateTime dt = (DateTime)item["EventDate"];

                           // Print the title, location, date, and time of the meeting,
                           // the URL to the workspace and optionally the calendar link.
                           Console.WriteLine("\nMeeting: {0}", item.Title);
                           Console.WriteLine("Location: {0}", item["Location"]);
                           Console.WriteLine("Date: {0}", dt.ToLongDateString());
                           Console.WriteLine("Time: {0}", dt.ToShortTimeString());
                           Console.WriteLine("Workspace URL: {0}", url);
                           if (isLinked)
                           {
                              string eventURL = (string)item["EventUrl"];
                              string[] parts = eventURL.Split(',');
                              Console.WriteLine("Linked to the {0} list at {1}",
                                 parts[1].Trim(), parts[0]);
                           }
                        }
                     }
                  }
                  web.Dispose();
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}

Cohérence de thread

Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.

Voir aussi

Référence

SPMeeting - Membres

Microsoft.SharePoint.Meetings - Espace de noms

Autres ressources

How to: Customize Meeting Workspaces Using the Windows SharePoint Services Object Model

How to: Add a Recurring Event to Lists on Multiple Sites