Поделиться через


Класс SPMeeting

Предоставляет методы и свойства, которые можно использовать для работы с рабочей области для собраний.

Иерархия наследования

System.Object
  Microsoft.SharePoint.Meetings.SPMeeting

Пространство имен:  Microsoft.SharePoint.Meetings
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Public Class SPMeeting
'Применение
Dim instance As SPMeeting
public class SPMeeting

Замечания

Рабочая область для собраний — это веб-сайт, который можно использовать для сбора информации и материалы (en), которые требуются для одного или нескольких собраний. Это может включать данные о Дата, время и место собрания, библиотеке общих документов и списки повестки и цели для собраний, задач, назначенных и решения, принимаемые отключается.

Можно создать сайт рабочей области для собраний путем вызова метода Add коллекции, возвращаемой свойством Webs веб-сайта. В следующей таблице представлен список новых шаблонов, которые можно использовать с методом Add .

Значение

Определение рабочей области

Mps#0

Базовая рабочая область для собраний

MPS#1

Пустая рабочая область для собраний

MPS#2

Рабочая область для собраний — решения

Mps#3

Рабочая область для собраний — социальные

MPS#4

Многостраничная рабочая область для собраний

Можно извлечь список существующих сайтов рабочих областей для собраний в одном из двух способов. Первый способ — просто выполните итерацию по всем дочерним сайтам текущего веб-сайта и тестирования каждой из них путем вызова метода статических IsMeetingWorkspaceWeb(SPWeb) . В следующем примере показан этот способ.

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

Другой способ полезен, когда нужно создать новый экземпляр собрания в существующей рабочей области для собраний. Основные задачи в этом случае является для поиска существующего сайта, который может быть другой собрания. Экземпляра собрания можно без труда создать, так как нет ограничений на количество экземпляра собрания рабочей области для собраний может размещаться. Тем не менее повторяющееся собрание должны иметь рабочей области для собраний свои собственные. Если требуется рабочая область для повторяющихся собраний, вам необходимо найти, которая будет пустым —, которая имеет не собраний с любого типа. (Более чем вероятно, это только что созданный сайт рабочей области для собраний.)

Метод GetWorkspacesToLinkTo(Boolean) предоставляет решения. Начинается с вызова метода статического GetMeetingInformation(SPWeb) , передав объект SPWeb , который представляет родительский веб-сайт как аргумент. Затем вызовите метод GetWorkspacesToLinkTo , передав false для получения дочерние сайты, которые можно размещать экземпляра собрания или true для получения дочерние сайты, которые доступны для размещения повторяющееся собрание (то есть Пустая рабочая область для сайтов).

Эта технология продемонстрирована в следующем примере.

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

После того как сайт рабочей области для собраний, следующая задача является добавление собрания. Класс SPMeeting имеет два метода, которые помогут вам выполнить эту задачу. Метод LinkWithEvent добавляет собрания в рабочей области для собраний, а затем связывает собрания для элемента в список событий, например списка Calendar , которая является компонентом стандартной конфигурации сайта группы.

Если вы работаете с планирования приложения, которое поддерживает свой собственный календарь встречи, метод Add() больше подходит в соответствии с потребностями. Сведения о собрании, в формате, определенные в документе RFC 2445импортирует перегрузку метода Add "Интернет-календаря и планирование основных объектов спецификации (iCalendar)". Многие приложения планирования можно экспортировать данные события в формате iCalendar , включая календаря Microsoft Windows.

Метод Add добавляет указанного рабочая область для собрания и возвращает собрания экземпляра идентификатор (ID). Метод не связан с встречи в списке Calendar собрания. Тем не менее можно использовать идентификатор экземпляра для создания URL-адрес собрания, как SharePoint Foundation, путем добавления строки запроса.

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

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

Примеры

Следующий пример является консольного приложения, который находит все дочерние сайты рабочих областей для собраний, связанных с веб-сайта. Для каждой рабочей области, которая будет обнаружен приложения пример получает список собраний, запланированных через следующие 14 дней. Затем приложение выведет сведения о каждом собрании на консоль в следующем формате.

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

Обратите внимание, что последняя строка является необязательным, в зависимости от того, связан ли для списка событий 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();
      }
   }
}

Потокобезопасность

Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.

См. также

Справочные материалы

Элементы SPMeeting

Пространство имен Microsoft.SharePoint.Meetings

Другие ресурсы

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

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