Compartilhar via


SPMeeting class

Fornece os métodos e propriedades que podem ser usadas para trabalhar com um espaço de trabalho de reunião.

Inheritance hierarchy

System.Object
  Microsoft.SharePoint.Meetings.SPMeeting

Namespace:  Microsoft.SharePoint.Meetings
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
Public Class SPMeeting
'Uso
Dim instance As SPMeeting
public class SPMeeting

Comentários

Um espaço de trabalho de reunião é um site da Web que podem ser usado para coletar todas as informações e materiais necessários para uma ou mais reuniões. Isso pode incluir informações sobre a data e hora local da reunião, uma biblioteca de documentos compartilhados e listas de itens de agenda e objetivos para a reunião, tarefas atribuídas e tomadas de decisões.

Você pode criar um site de espaço de trabalho de reunião, chamando o método Add da coleção retornada pela propriedade Webs de um site. A tabela a seguir inclui uma lista de modelos que podem ser usados com o método Add .

Valor

Definição de espaço de trabalho

Mps#0

Espaço de Trabalho de Reunião Básico

MPS#1

Espaço de trabalho de reunião em branco

MPS#2

Espaço de Trabalho de Reunião de Decisão

Mps#3

Espaço de trabalho de reunião social

MPS#4

Espaço de trabalho de reunião com várias páginas

É possível recuperar uma lista de sites de espaço de trabalho de reunião existentes em uma destas duas maneiras. A primeira maneira é simplesmente percorrer todos os subsites do site da Web atual e testar cada uma delas chamando o método estático IsMeetingWorkspaceWeb(SPWeb) . Essa técnica é ilustrada no exemplo a seguir.

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);

Outra técnica é útil quando você pretende criar uma nova instância de uma reunião em um espaço de trabalho de reunião existente. A tarefa-chave nesta situação é encontrar um site existente que pode acomodar outra reunião. Reuniões de ocorrência única são fáceis de criar, pois não há nenhum limite sobre quantos reuniões de ocorrência única, um espaço de trabalho de reunião pode hospedar. No entanto, uma reunião recorrente deve ter um espaço de trabalho de reunião de seu próprio. Se desejar um espaço de trabalho em uma reunião recorrente, você precisa encontrar um que está vazio — com nenhum reuniões de qualquer tipo. (Mais do que provável, isso é um site de espaço de trabalho de reunião recém-criado.)

O método GetWorkspacesToLinkTo(Boolean) fornece uma solução. Comece chamando o método estático GetMeetingInformation(SPWeb) , passando o objeto SPWeb que representa o site pai como um argumento. Em seguida, chame o método de GetWorkspacesToLinkTo , passando false para obter os subsites que podem hospedar reuniões de ocorrência única ou true para obter os subsites que estão disponíveis para hospedar uma reunião recorrente (ou seja, sites de espaço de trabalho vazio).

O exemplo a seguir demonstra a técnica.

' 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);

Depois de ter um site de espaço de trabalho de reunião, a próxima tarefa é adicionar uma reunião a ela. A classe SPMeeting tem dois métodos que podem ajudá-lo a fazer isso. O método LinkWithEvent adiciona uma reunião a um espaço de trabalho de reunião e vincula a reunião para um item em uma lista de eventos, como a lista de Calendar que é um recurso da configuração padrão do Site de equipe.

Se você estiver trabalhando com um aplicativo de agendamento que mantenha seu próprio compromisso do calendário, o método Add() é mais adequado às suas necessidades. Uma sobrecarga do método Add importa informações da reunião que estão no formato definido pelo RFC 2445, "Calendário da Internet e especificação de objeto de núcleo agendando (iCalendar)". Muitos aplicativos de agendamento podem exportar dados de evento em formato de iCalendar , incluindo o calendário do Microsoft Windows.

O método Add adiciona uma reunião a um espaço de trabalho especificado e retorna a reunião identificador (ID) do instância. O método não link da reunião para um compromisso na lista Calendar . No entanto, você poderia usar a ID de instância para criar uma URL para a reunião, como SharePoint Foundation faz, por acrescentá-lo como uma sequência de consulta.

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

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

Examples

O exemplo a seguir é um aplicativo de console que localiza todos os subsites do espaço de trabalho de reunião que estão associados um site da Web. Para cada espaço de trabalho que ele encontra, o aplicativo de exemplo obtém uma lista de reuniões são agendadas ao longo dos próximos 14 dias. O aplicativo, em seguida, imprime informações sobre cada reunião no console no seguinte formato.

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

Observe que a última linha é opcional, dependendo se a reunião está vinculada a uma lista de eventos 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();
      }
   }
}

Thread safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Ver também

Referência

SPMeeting members

Microsoft.SharePoint.Meetings namespace

Outros recursos

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

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