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
Espacio de nombres Microsoft.SharePoint.Meetings
Otros recursos
How to: Customize Meeting Workspaces Using the Windows SharePoint Services Object Model