Пример надстройки SharePoint для операций таксономии
В этом примере консольного приложения Core.MMS показано, как использовать службу управляемых метаданных SharePoint для создания и извлечения терминов, наборов терминов и групп. Этот пример также запускается в надстройке, размещенной у поставщика, например в веб-приложении ASP.NET MVC.
Используйте это решение для переноса терминов между фермами SharePoint и отображения терминов в своей пользовательской надстройке.
Подготовка
Чтобы приступить к работе, скачайте пример надстройки Core.MMS из проекта Office 365 Developer Patterns and Practices (Шаблоны и методики разработки для Office 365) на портале GitHub.
Примечание.
Код, приведенный в этой статье, предоставляется "как есть" без какой-либо явной или подразумеваемой гарантии, включая подразумеваемые гарантии пригодности для какой-либо цели, для продажи или гарантии отсутствия нарушения прав иных правообладателей.
Перед запуском этой надстройки вам понадобится следующее:
- URL-адрес вашего сайта SharePoint.
- Разрешение на доступ к банку терминов в службе управляемых метаданных.
На приведенном ниже рисунке показан Центр администрирования Office 365, в котором назначены эти разрешения.
Чтобы назначить разрешения банку терминов, сделайте следующее:
В Центре администрирования Office 365 выберите пункт банк терминов.
В разделе БАНК ТЕРМИНОВ ТАКСОНОМИИ выберите набор терминов, которому необходимо назначить администратора.
В поле Администраторы банка терминов введите учетную запись организации, которой необходимы разрешения администратора банка терминов.
Использование примера надстройки Core.MMS
При запуске надстройки появляется консольное приложение, как на приведенном ниже рисунке. Оно запрашивает URL-адрес сайта SharePoint или SharePoint Online и учетные данные.
После ввода URL-адреса SharePoint и учетных данных выполняется проверка подлинности пользователя.
Приведенный ниже код выполняет проверку подлинности пользователя в SharePoint Online.
ClientContext cc = new ClientContext(siteUrl);
cc.AuthenticationMode = ClientAuthenticationMode.Default;
// For SharePoint Online.
cc.Credentials = new SharePointOnlineCredentials(userName, pwd);
Приведенный ниже код выполняет проверку подлинности пользователя в SharePoint Online Dedicated или в локальной ферме SharePoint.
ClientContext cc = new ClientContext(siteUrl);
cc.AuthenticationMode = ClientAuthenticationMode.Default;
// For SharePoint Online Dedicated or on-premises .
cc.Credentials = new NetworkCredential(userName, pwd);
Метод CreateNecessaryMMSTermsToCloud создает группу, набор терминов и несколько терминов в службе управляемых метаданных. Код сначала получает ссылку на объект TaxonomySession , а затем на объект TermStore , прежде чем создавать пользовательские термины TermGroup, TermSet и новые термины.
private static void CreateNecessaryMMSTermsToCloud(ClientContext cc)
{
// Get access to taxonomy CSOM.
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(cc);
cc.Load(taxonomySession);
cc.ExecuteQuery();
if (taxonomySession != null)
{
TermStore termStore = taxonomySession.GetDefaultSiteCollectionTermStore();
if (termStore != null)
{
//
// Create group, termset, and terms.
//
TermGroup myGroup = termStore.CreateGroup("Custom", Guid.NewGuid());
TermSet myTermSet = myGroup.CreateTermSet("Colors", Guid.NewGuid(), 1033);
myTermSet.CreateTerm("Red", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Orange", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Yellow", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Green", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Blue", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Purple", 1033, Guid.NewGuid());
cc.ExecuteQuery();
}
}
}
После создания новых терминов метод GetMMSTermsFromCloud() извлекает все группы терминов, наборы терминов и термины из службы управляемых метаданных. Также как и метод CreateNecessaryMMSTermsToCloud(), прежде чем извлекать и отображать сведения о терминах, код сначала получает ссылку на объект TaxonomySession, а затем на объект TermStore.
private static void GetMMSTermsFromCloud(ClientContext cc)
{
//
// Load up the taxonomy item names.
//
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(cc);
TermStore termStore = taxonomySession.GetDefaultSiteCollectionTermStore();
cc.Load(termStore,
store => store.Name,
store => store.Groups.Include(
group => group.Name,
group => group.TermSets.Include(
termSet => termSet.Name,
termSet => termSet.Terms.Include(
term => term.Name)
)
)
);
cc.ExecuteQuery();
//
// Writes the taxonomy item names.
//
if (taxonomySession != null)
{
if (termStore != null)
{
foreach (TermGroup group in termStore.Groups)
{
Console.WriteLine("Group " + group.Name);
foreach (TermSet termSet in group.TermSets)
{
Console.WriteLine("TermSet " + termSet.Name);
foreach (Term term in termSet.Terms)
{
// Writes root-level terms only.
Console.WriteLine("Term " + term.Name);
}
}
}
}
}
}
Вы увидите данные о терминах из службы управляемых метаданных в консольном приложении, как показано на приведенном ниже рисунке, а также в банке терминов в службе управляемых метаданных, как показано на втором рисунке.