Как создавать сайты в SharePoint 2007?
Коллеги,
Несколько слов, о том, как программно создавать сайты в MOSS 2007.
Простейший способ – использовать stsadm (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN>).
Синтаксис - stsadm.exe -o createsite
-url <url>
-ownerlogin <DOMAIN\name>
-owneremail <someone@example.com>
[-ownername <display name>]
[-lcid <language>]
[-sitetemplate <site template>]
[-title <site title>]
[-description <site description>]
[-hostheaderwebapplicationurl <web application url>]
[-quota <quota template>]
Однако, зачастую необходим доступ к API портала из бизнес-логики приложения. Один наиболее популярных способов – использование веб-сервисов. В частности, MOSS 2007 предоставляет доступ к административным функциям через веб-сервисы. Для этого используется веб-сервис https://server:port/_vti_adm/admin.asmx
Теперь более подробно.
Вообще, для тестирования работы с веб-сервисами я для себя открыл прекрасную утилиту wfetch (входит в IIS 6.0 resource tools kit, который можно скачать с https://www.microsoft.com/downloads/thankyou.aspx?familyId=56fc92ee-a71a-4c73-b628-ade629c89499&displayLang=en)
С помощью этой утилиты можно манипулировать вызовами веб-сервисов, смотреть результаты и т.п. В целом, рекомендую.
Итак, цель – создать с помощью веб-сервиса сайт. Открываем в IE https://moss:48162/_vti_adm/admin.asmx?op=CreateSite – операция CreateSite в административном веб-сервисе.
Копируем в текстовый файл шаблон SOAP-запроса, который выглядит примерно так
POST /_vti_adm/admin.asmx HTTP/1.1
Host: moss
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://schemas.microsoft.com/sharepoint/soap/CreateSite"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CreateSite xmlns="https://schemas.microsoft.com/sharepoint/soap/">
<Url>string</Url>
<Title>string</Title>
<Description>string</Description>
<Lcid>int</Lcid>
<WebTemplate>string</WebTemplate>
<OwnerLogin>string</OwnerLogin>
<OwnerName>string</OwnerName>
<OwnerEmail>string</OwnerEmail>
<PortalUrl>string</PortalUrl>
<PortalName>string</PortalName>
</CreateSite>
</soap:Body>
</soap:Envelope>
Преобразуем его в примерно следующее содержание.
Content-Type: text/xml; charset=utf-8
SOAPAction: "https://schemas.microsoft.com/sharepoint/soap/CreateSite"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="https://www.w3.org/2001/XMLSchema"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CreateSite xmlns="https://schemas.microsoft.com/sharepoint/soap/">
<Url>https://moss.litwareinc.com/sites/mySite1</Url>
<Title>That is my new site(1)</Title>
<Description>The site created via web Service</Description>
<Lcid>1033</Lcid>
<WebTemplate>Sts#2</WebTemplate>
<OwnerLogin>LITWAREINC\Administrator</OwnerLogin>
<OwnerName>Administrator</OwnerName>
<OwnerEmail>Administrator@LITWAREINC.com</OwnerEmail>
<PortalUrl>string</PortalUrl>
<PortalName>string</PortalName>
</CreateSite>
</soap:Body>
</soap:Envelope>
Следует обратить внимание на параметр WebTemplate, который задает шаблон сайта.
Возможные варианты:
· STS#0 (Team Site)
· STS#1 (Blank Site)
· STS#2 (Document Workspace)
· MPS#0 (Basic Meeting Workspace)
· MPS#1 (Blank Meeting Workspace)
· MPS#2 (Decision Meeting Workspace)
· MPS#3 (Social Meeting Workspace)
· MPS#4 (Multipage Meeting Workspace)
После того, как SOAP-запрос создан, открываем wfetch, переносим туда этот запрос, заполняем ряд полей и стартуем веб-сервис, после чего получаем созданную сайт с заданными свойствами.
Из этого упражнения легко сделать, к примеру, vb-скрипт для автоматического создания сайта.
Set oHTTP = CreateObject("Microsoft.XMLHTTP")
Set oShell = WScript.CreateObject ("WSCript.shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set fso = CreateObject("Scripting.FileSystemObject")
Set OutputFile = fso.CreateTextFile("c:\temp\response.xml",true)
Set xmldom = CreateObject("Microsoft.XMLDOM")
SitePath = "https://moss.litwareinc.com"
AdminPort = "48162"
SiteName = "MySite3"
SiteTemplate = "sts#0"
OwnerName = "Administrator"
OwnerLogin = "LITWAREINC\Administrator"
OwnerEmail = "Administrator@LITWAREINC.COM"
SiteUrl = SitePath & "/sites/" & SiteName
SiteProv = SitePath & ":" & AdminPort & "/_vti_adm/admin.asmx"
SiteProvXml = "<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:xsi=""https://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""https://www.w3.org/2001/XMLSchema"" xmlns:soap=""https://schemas.xmlsoap.org/soap/envelope/""><soap:Body><CreateSite xmlns=""https://schemas.microsoft.com/sharepoint/soap/""><Url>" & SiteUrl & "</Url><Title>" & SiteName & "</Title><Description>" & SiteName & "</Description><Lcid>1033</Lcid><WebTemplate>" & SiteTemplate & "</WebTemplate><OwnerLogin>" & OwnerLogin & "</OwnerLogin><OwnerName>" & OwnerName & "</OwnerName><OwnerEmail>" & OwnerEmail & "</OwnerEmail><PortalUrl></PortalUrl><PortalName></PortalName></CreateSite></soap:Body></soap:Envelope>"
oHTTP.open "POST", SiteProv, false
oHTTP.setRequestHeader "Accept-Language", "en-us"
oHTTP.setRequestHeader "Content-Type", "text/xml"
oHTTP.setRequestHeader "Accept-Encoding", "gzip, deflate"
oHTTP.setRequestHeader "SOAPAction:", "https://schemas.microsoft.com/sharepoint/soap/CreateSite"
oHTTP.send SiteProvXml
Outputfile.write oHTTP.responseText
Comments
Anonymous
January 01, 2003
скрипт можно использовать с клиенсткой машины, т.к. у нее есть доступ к веб-сервисам MOSS 2007Anonymous
November 22, 2006
Хорошая статейка!(не люблю импортные словечки). Не понятно, VBscript для генерации сайта может выполняться с клиентской машины (в отличие от stsadm)?