Compartir a través de


Clase SPMeeting

Proporciona métodos y propiedades que se pueden usar para trabajar con un área de reuniones.

Jerarquía de la herencia

System.Object
  Microsoft.SharePoint.Meetings.SPMeeting

Espacio de nombres:  Microsoft.SharePoint.Meetings
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public Class SPMeeting
'Uso
Dim instance As SPMeeting
public class SPMeeting

Comentarios

Un área de reuniones es un sitio Web que se pueden usar para recopilar toda la información y los materiales que se necesitan para una o más reuniones. Esto puede incluir información acerca de la fecha, hora y lugar de la reunión, una biblioteca de documentos compartidos y a continuación, listas de elementos de la agenda y los objetivos de la reunión, las tareas asignadas y las decisiones adoptadas.

Puede crear un sitio de área de reuniones al llamar al método Add de la colección devuelta por la propiedad Webs de un sitio Web. En la siguiente tabla incluye una lista de plantillas que pueden usarse con el método Add .

Valor

Definición del área de trabajo

MPS#0

Área de reuniones básica

MPS#1

Área de reuniones en blanco

MPS#2

Área de toma de decisiones

MPS#3

Área de reuniones sociales

MPS#4

Área de reuniones de varias páginas

Puede recuperar una lista de los sitios de área de reuniones existentes en cualquiera de estas dos formas. La primera forma es simplemente recorrer en iteración todos los subsitios del sitio Web actual y probar cada uno de ellos al llamar al método estático IsMeetingWorkspaceWeb(SPWeb) . Esta técnica se ilustra en el ejemplo siguiente.

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

Otra técnica es útil cuando se desea crear una nueva instancia de una reunión en un área de reuniones. La tarea clave en esta situación es encontrar un sitio existente que puede dar cabida a otra reunión. Las reuniones de instancia única son fáciles de crear porque no hay ningún límite en el número de las reuniones de instancia única puede hospedar un área de reuniones. Sin embargo, una reunión periódica debe tener un área de reuniones de su propio. Si desea que un área de trabajo para una reunión periódica, se necesita encontrar uno que está vacío, uno que no tenga ningún reuniones de ningún tipo. (Lo más probable es es un sitio de área de reuniones recién creado.)

El método GetWorkspacesToLinkTo(Boolean) proporciona una solución. Para empezar, llamar al método estático GetMeetingInformation(SPWeb) , pase el objeto SPWeb que representa el sitio Web primario como un argumento. Llamar al método GetWorkspacesToLinkTo , pasando false para obtener los subsitios que pueden hospedar reuniones de instancia única o true para obtener los subsitios que están disponibles para hospedar una reunión periódica (es decir, los sitios de área de trabajo vacía).

En el siguiente ejemplo se muestra la 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);

Una vez que un sitio de área de reuniones, la siguiente tarea consiste en Agregar una reunión. La clase SPMeeting tiene dos métodos que le ayudarán a lograrlo. El método LinkWithEvent agrega una reunión a un área de reuniones y, a continuación, vincula la reunión a un elemento de una lista de eventos, como la lista de Calendar que es una característica de la configuración de sitio de grupo estándar.

Si está trabajando con una aplicación de programación que mantiene su propio calendario de cita, el método Add() es más adecuado para sus necesidades. Una sobrecarga del método Add importa información de la reunión que se encuentra en el formato definido por RFC 2445, "Calendarios de Internet y la especificación de objetos principales de programación (iCalendar)". Muchas aplicaciones de programación pueden exportar los datos del evento en formato iCalendar , incluido el calendario de Microsoft Windows.

El método Add agrega una reunión a un área de trabajo especificada y devuelve la reunión (ID.) de identificador de instancia. El método no vincular la reunión a una cita en la lista de Calendar . Sin embargo, puede usar el identificador de instancia para crear una dirección URL de la reunión, igual que SharePoint Foundation, ésta se agrega a una cadena de consulta.

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

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

Ejemplos

En el siguiente ejemplo es una aplicación de consola que encuentre todos los subsitios de área de reuniones que están asociados con un sitio Web. Para cada área de trabajo que se encuentre la aplicación de ejemplo, obtiene una lista de las reuniones programadas durante los próximos 14 días. A continuación, la aplicación imprime información sobre cada reunión en la consola con el formato siguiente.

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

Tenga en cuenta que la última línea es opcional, dependiendo de si la reunión está vinculada a una lista de eventos de 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();
      }
   }
}

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros SPMeeting

Espacio de nombres Microsoft.SharePoint.Meetings

Otros recursos

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

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