Новые модели разработки для Office 2013 и SharePoint 2013 предоставляют кое-какие новые возможности интеграции приложений для Office с SharePoint. Эти модели разработки — приложения для SharePoint (apps for SharePoint) и приложения для Office (apps for Office) — помогают применить целый ряд технологий веб-разработки, в том числе HTML5, JavaScript, jQuery и CSS3 в дополнение к уже имеющимся возможностям языков разработки серверных приложений.
Эти новые парадигмы разработки расширяют функциональность на стороне клиента. Сегодня я покажу, как задействовать SharePoint в приложениях для Office, на примере, приближенном к практике.
Приложения для SharePoint
Модель приложений для SharePoint позволяет адаптировать SharePoint к своим требованиям, используя различные гибкие подходы. Кроме того, ее можно использовать для доступа к данным через различные модели прикладного программирования:
- Server Object Model;
- Client Object Model;
- JavaScript Object Model;
- REST API;
- Инфраструктура WCF Data Services.
Следует выбирать объектные модели и методы доступа, исходя из контекста задачи. Например, при реализации операций, связанных с SharePoint, в среде Windows Phone следует использовать Mobile Object Model (входящую в Client Object Model).
Приложения для Office
Новая модель разработки приложения для Office позволяет обеспечить взаимодействие с продуктами Office через различные API, основанные на JavaScript. Кроме того, она позволяет задействовать другие стеки веб-разработки, такие как HTML5, CSS3 и jQuery. Модель приложений для Office основана на интернет-технологиях и обеспечивает гораздо большую гибкость, чем традиционные надстройки Office.
Давайте возьмем в качестве примера две типичных бизнес-операции — подготовку и контроль документов. Например, вы подготавливаете документы, направленные на реализацию определенных бизнес-возможностей: предложения, данные о продажах, рекламу. Или, может быть, вы создаете подробные отчеты, используемые в бизнес-процессах, протоколы или документы, устанавливающие бизнес-партнерство и юридические обязательства, такие как контрактные соглашения.
Контроль документов — неотъемлемая часть процесса. Этому этапу уделяют особое внимание при работе с юридическими документами. Проверяется, соответствуют ли документы нормативам для данной бизнес-области и гарантируется ли, что у предприятия не возникнут какие-либо юридические проблемы. Ошибка при контроле документа, содержащего юридические обязательства, может привести к финансовым потерям или более серьезным проблемам.
Microsoft Word позволяет автоматически проверять документ на наличие грамматических ошибок. Если бы было можно аналогичным образом проверять документы на соответствие бизнес- или юридическим требованиям, бизнес-процессы стали бы эффективнее. В примере, который я рассмотрю, для предоставления такой возможности используется мощная функциональность моделей разработки приложений для Office и SharePoint.
Бизнес-сценарий
В вымышленной компании Contoso имеется бизнес-процесс «участие в тендерах», частью которого является деятельность по контролю документов: все документы с предложениями по проектам проверяются с точки зрения подхода к решению, оценок, модели исполнения, факторов конкурентного преимущества и т.д. Документы анализируются по многим аспектам, зависящим от контекста. Например, если документ с предложением подготовлен для проекта с фиксированным бюджетом, то в нем будут проверять наличие «нежелательных» слов. Это один из процессов бизнес-проверки документа.
Поиск нежелательных слов — требование юридического отдела. Его сотрудники полагают, что наличие этих заранее определенных слов приводит к риску несоответствия нормативным требованиям. Contoso стремится автоматизировать все бизнес-проверки документов, создаваемых проектным отделом. В компании ожидают, что это увеличит долю успешных предложений и сократит время их подготовки. Кроме того, это должно свести к минимуму количество инцидентов, когда в процессе контроля пропускают ошибки в документах.
Contoso, в первую очередь, собирается автоматизировать часть контроля документов, связанную с поиском заранее определенных нежелательных слов, поскольку это повторяющаяся операция. Этот процесс контроля документов основан на заранее определенных правилах, настраиваемых централизованно. Компания желает сделать процесс доступным для сотрудников, имеющих соответствующие права в корпоративной сети, используя встроенную модель аутентификации Windows.
В примере реализации этого сценария и автоматизации процесса бизнес-проверки документа будут использоваться приложения и для SharePoint, и для Office. Вот список необходимых действий.
- Создайте Task Pane App for Office и выберите Word. Назовите приложение OfficeApp1. В нем будет два проекта: OfficeApp1 и OfficeApp1Web. В проекте OfficeApp1Web можно будет написать любой собственный код, который потребуется.
- Поскольку мы будем использовать для SharePoint модель .NET Client Object Model, добавьте в проект ASPX-страницу Home.aspx и сделайте ее страницей по умолчанию.
- Обновите файл OfficeApp1.xml в проекте OfficeApp1, изменив атрибут DefaultValue элемента SourceLocation на Home.aspx следующим образом:
<DefaultSettings>
<SourceLocation DefaultValue="~remoteAppUrl/Pages/Home.aspx" />
</DefaultSettings>
- Создайте список SharePoint с именем ObjectionableWords. Сохраните список в подсайте FirstSiteCollection.
- Добавьте в проект OfficeApp1Web ссылки на Microsoft.SharePoint.Client и Microsoft.SharePoint.Client.Runtime.
- В отделенном коде Home.aspx добавьте ссылку на Microsoft.SharePoint.Client и добавьте код с рис. 1 как обработчик загрузки страницы (он будет устанавливать связь со списком SharePoint, извлекать из него список слов и заполнять словами массив JavaScript).
Рис. 1. Сценарий, заполняющий список нежелательных слов
string arrayString = string.Empty;
string PIN = string.Empty;
// Starting with ClientContext, the constructor requires a URL to the
// server running SharePoint.
ClientContext context = new ClientContext("http://c4968397007/sites/First/");
// Point this URL to the right URL in your environment
// Assume the Web has a list named "ObjectionableWords."
List objWrdsList = context.Web.Lists.GetByTitle("ObjectionableWords");
// This creates a CamlQuery that has a RowLimit of 100,
// and also specifies Scope="RecursiveAll" so that it grabs all list items
CamlQuery query = CamlQuery.CreateAllItemsQuery(100);
Microsoft.SharePoint.Client.ListItemCollection items = objWrdsList.GetItems(query);
// Retrieve all items in the ListItemCollection from List.GetItems(Query).
context.Load<List>(objWrdsList);
context.Load<Microsoft.SharePoint.Client.ListItemCollection>(items);
context.ExecuteQuery();
foreach (Microsoft.SharePoint.Client.ListItem listItem in items)
{
if (arrayString.Length > 0)
arrayString += ",";
arrayString += "'" + listItem.FieldValues["Words"].ToString() + "'";
}
this.ClientScript.RegisterArrayDeclaration("myWords", arrayString);
- Office 2013 поддерживает взаимодействие со своими приложениями через Office.js — библиотеку JavaScript API для Office. Добавьте функцию getDocument в JavaScript-файл OfficeApp1.js, в котором будут описываться все взаимодействия с Word (рис. 2).
Рис. 2. Добавьте функцию getDocument в JavaScript-файл OfficeApp1.js
function getDocument() {
//var fileContent = '';
var strContent = '';
Office.context.document.getFileAsync("text", function (result) {
var myFile = result.value;
myFile.getSliceAsync(0, function (result) {
if (result.status == "succeeded")
fileContent = result.value.data;
checkString();
checkPendingItem();
});
});
}
- Эта функция позволяет обращаться к документу Word через библиотеку JavaScript API для Office. Она извлекает содержимое документа и вызывает еще одну функцию checkString, выполняющую собственно проверку.
- Добавьте в файл Office.js функцию checkString, показанную на рис. 3.
Рис. 3. Функция checkString, добавляемая в файл Office.js
function checkString() {
// Check for the objectionable words.
for (var i = 0; i < myWords.length; i++) {
contains = fileContent.toLowerCase().trim().indexOf(myWords[i].toLowerCase().trim());
if (contains >= 0) {
break;
}
}
// If the document contains "Objectionable" words, indicate it.
if (contains < 0) {
document.getElementById('imgSts').src = 'YES.PNG';
document.getElementById('imgSts').height = '42';
document.getElementById('imgSts').width = '42';
}
else {
document.getElementById('imgSts').src = 'NO.PNG';
document.getElementById('imgSts').height = '42';
document.getElementById('imgSts').width = '42';
}
}
Эта функция сравнивает извлеченное содержимое документа Word с массивом JavaScript, заполненным словами из списка SharePoint. Затем она показывает, содержит ли документ какие-либо слова из списка нежелательных слов.
После запуска это решение будет отмечать документы с недопустимыми словами. Например, когда пользователь наберет слово «лучший» (содержащееся в списке ObjectionableWords) и щелкнет Review, приложение покажет, что документ не соответствует требованию «отсутствие нежелательных слов».
Когда пользователь напишет «TODO» (список задач) для показа незавершенных элементов документа, приложение будет информировать, завершена ли работа над документом. Можно еще больше усовершенствовать этот процесс, показывая, на сколько процентов обработан документ. Это особенно полезно в ситуациях, когда документ собран из частей, полученных из разных мест, и требуется отслеживать общее состояние документа.
Выигрыш в продуктивности
Используя этот уровень автоматизации, основанной на SharePoint и ее приложениях для Office, Contoso обеспечивает себе следующие преимущества.
- Вводит в действие единый подход к бизнес-проверке документов.
- Любые изменения списка нежелательных слов выполняются централизованно и отражаются при проверке всех документов предприятия.
- Добавление такой автоматизации в процесс проверки документов сокращает время обработки документов.
- Проверка документов, основанная на правилах, позволяет реализовывать более сложные функции.
SharePoint Client Object Model позволяет использовать приложения для Office при интеграции с ресурсами SharePoint. Сочетание мощных возможностей продуктов SharePoint и Office в приложениях для Office позволяет добиться значительного выигрыша в продуктивности. SharePoint и Office превращаются в нечто большее, чем сумма двух решений.