IBM Lotus Quickr облегчает публикацию деловых данных для совместного использования. Основным принципом дизайна Lotus Quickr является создание приложений основанных на открытых интерфейсах, которые позволяют клиентам и деловым партнёрам получать доступ к данным в любое время и из любого места. Клиентам и партнёрам нужна возможность взаимодействия с данными из различных хранилищ с использованием разнородного программного обеспечения. Модули Lotus Quickr Connectors взаимодействуют с данными Lotus Quickr, используя набор опубликованных интерфейсов.
В данной статье представлены основные операции, которые можно выполнять с помощью Web-сервисов Lotus Quickr, и оптимальные методики взаимодействии с этими сервисами. После прочтения статьи вы узнаете достаточно о структуре сервисов и используемых моделях запрос-отклик для того, чтобы разрабатывать собственные приложения, взаимодействующие с данными Lotus Quickr.
Для получения информации о других опубликованных интерфейсах для работы с данными Lotus Quickr прочтите Руководство разработчика IBM Lotus Quickr. Для ознакомления с REST-сервисами Lotus Quickr, прочитайте сопутствующую статью "Введение в сервисы IBM Lotus Quickr REST."
Чтобы получить максимальную отдачу от прочтения этой статьи, вам необходимо иметь базовое понимание методов программирования Web-сервисов. Сюда входит знакомство с Web Service Description Language (WSDL), Simple Object Access Protocol (SOAP), HTTP и технологиями, связанными с XML.
Приведенный в статье пример приложения представляет собой набор XML-сообщений к серверу, построенных по схеме запрос-отклик. Каждое сообщение показывает реальные данные, пересланные в сети, и позволяет читателям понять, как форматируется XML.
Разработчики, которые пишут код, использующий такие сервисы, часто применяют различные SOAP- утилиты для генерации прокси-модулей клиентской стороны, выполняющих обработку сериализации объектов сообщений, пересылаемых по сети. Для использования примера кода вам необходимо иметь некоторые познания в языке C#. Пример кода демонстрирует интеграцию между различными системами (например, клиент на платформе .NET вызывает Web-сервис, предоставляемый сервером J2EE или IBM Lotus Domino), но принципы и методология, на которых построен пример, применимы в любых средах разработки, имеющих встроенную поддержку технологии Web-сервисов.
В нашем случае целью использования Web-сервисов является быстрое и максимально простое построение решений совместного управления документами для данных Lotus Quickr. Клиенты, хорошо знакомые с парадигмой Web-сервисов, смогут эффективно работать с подобными сервисами. Так как сервисы хорошо описаны в машиночитаемом формате WSDL, для генерации прокси-модулей взаимодействия с поставщиком сервиса можно использовать любую предпочтительную среду разработки. Это избавляет от необходимости тратить значительное время и ресурсы для разработки объектов, необходимых для отсылки и получения сообщений по сети. Кроме того, рассматриваемая технология предоставляет объектную модель, которая может быть повторно использована в ваших приложениях.
В данной статье мы создадим простой автономный модуль Lotus Quickr Connector, как показано на рисунке 1. Lotus Quickr Connector – это расширение для существующего приложения или фреймворка, позволяющее организовать доступ в любое время и из любого места. Хотя в примере рассматривается автономный модуль, он иллюстрирует подход, который можно использовать при добавлении в ваши приложения возможности взаимодействовать с данными Lotus Quickr.
Рисунок 1. Простой Lotus Quickr Connector
Коннектор позволяет пользователю указать URL и права для сервера Lotus Quickr и получить доступ к библиотекам на сервере. С его помощью пользователь может выполнять с данными сервера Lotus Quickr следующие действия:
- одинарный щелчок по папке или документу для просмотра подробного списка свойств ресурса на сервере;
- двойной щелчок по папке для раскрытия ветки с подпапками и документами;
- настрока стандартной реакции на двойной щелчок по документу либо на показ краткой информации о нём в Web-браузере либо на скачивание документа в файловую систему;
- переименование папок и документов, редактирование заголовков ресурсов в дереве;
- перемещение папок и документов в структуре дерева перетаскиванием;
- удаление папок и документов через контекстное меню правой кнопки мыши.
Для организации взаимодействия с сервисом Lotus Quickr Web вы обычно сначала указываете SOAP-утилите вашей среды разработки адрес документа WSDL на сервере Lotus Quickr:
http://<host>:<port>/dm/services/ContentService?wsdl.
например:
http://localhost:10038/dm/services/ContentService?wsdl
Далее пользователь получает запрос данных для входа на сервер, после чего генерируется код для работы с сервисом. Всего в документе WSDL указывается три сервиса, поэтому в объектно-ориентированной среде вы обычно будете иметь дело с объектами сервисов ContentService, DocumentService и LibraryService.
Получение информации о сервере
ContentService в Web-сервисах Lotus Quickr предназначен для выполнения общих операций с контентом, не касающихся непосредственно библиотек, папок и документов. В первой версии сервисов его возможности ограничены только получением информации о сервере и зарегистрированных пользователях.
Как ожидается, в будущем Web-сервисы Lotus Quickr будут включать дополнительные операции, которые на данный момент недоступны. Клиентам нужно знать, какая версия сервиса имеется в наличии, чтобы не использовать операции более поздних версий. Web-сервисы поддерживают концепцию версии сервиса для предохранения от вызовов операций на удалённом сервере, если он их не поддерживает.
Для определения версии Web-сервисов, развёрнутых на конкретном сервере Lotus Quickr, наш пример коннектора Lotus Quickr Connector делает запрос, как показано в листинге 1, и получает информацию о сервере посредством ContentService.
Листинг 1. Запрос SOAP для получения версии сервиса
POST /dm/services/ContentService HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.832) Content-Type: text/xml; charset=utf-8SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l Host: insertyourserver.com Content-Length: 310 Expect: 100-continue Connection: Keep-Alive <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <getServerInfo xmlns="http://webservices.clb.content.ibm.com" /> </soap:Body> </soap:Envelope> |
Заметьте, что данный вызов использует для обращения к Web-сервису HTTP Basic Auth. При работе с клиентскими приложениями рекомендуется использовать предварительную аутентификацию, а не ответ на запрос на аутентификацию при взаимодействии с сервисом.
В ситуации, показанной в листинге 2, сервер передаёт основную информацию об уровне сервиса. Элемент serverInfo включает в себя строковый атрибут version с версией текущего сервиса сервера Lotus Quickr.
Листинг 2. Отклик SOAP при получении информации о версии сервиса
HTTP/1.1 200 OKDate: Tue, 02 Oct 2007 20:42:52 GMTServer: WebSphere Application
Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 2136
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p687:getServerInfoResponse xmlns:p687="http://webservices.clb.content.ibm.com">
<p687:getServerInfoReturn>
<p687:error xsi:nil="true"/>
<p687:serverInfo version="8.0.1" locale="en" utcOffset="-14400000"
securityEnabled="1">
<p687:serverProperties key="supported.versions" value="8.0.0,8.0.1"/>
<p687:serverProperties key="app.url" value="/dm/atom"/>
<p687:serverProperties key="connectors.install.url"
value="/documents/desktop/qkrconn.msi"/>
</p687:serverInfo>
</p687:getServerInfoReturn>
</p687:getServerInfoResponse>
</soapenv:Body>
</soapenv:Envelope>
|
Дополнительно в элементах serverProperties передаётся и другая полезная информация. В предыдущем примере для удобства использования коннектора приведены данные о локали сервера, относительном пути для вызова сервисов Atom, основанных на REST, и ссылка на скачивание коннектора
Получение списка библиотек верхнего уровня
После того как коннектор Lotus Quickr получил версию сервиса, доступную на удалённом сервере, он приступает к получению списка библиотек документов, доступных для работы (листинг 3). Для этого коннектор взаимодействует с элементом LibraryService, который предоставляет функции для получения библиотек или определённых разделов. Также этот элемент предоставляет возможность получения библиотек для управления общими ресурсами, которые ссылаются на библиотеки, если они существуют на удалённом сервере.
Листинг 3. Запрос SOAP для получения списка библиотек документов
POST /dm/services/LibraryService HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.832) Content-Type: text/xml; charset=utf-8 SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l Host: insertyourserver.com:9090 Content-Length: 444Expect: 100-continue <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <getBusinessComponents xmlns="http://webservices.clb.content.ibm.com"> <libraryId xsi:nil="true" /> <libraryPath xsi:nil="true" /> <categoryTypes>DocumentManager</categoryTypes> </getBusinessComponents> </soap:Body> </soap:Envelope> |
Данный запрос запрашивает у сервера все библиотеки подходящие для использования в приложении управления документами.
Каждый ресурс библиотеки включает в себя метаданные, такие как ID (например d76a1880470797b28552b53e588f1125) и путь (например /contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries), которые уникальным образом идентифицируют его на сервере. Дополнительно предоставляются основные описательные атрибуты ресурса (например, дата создания и модификации, описание и заголовок).
Листинг 4. Отклик SOAP при получении списка библиотек документов
HTTP/1.1 200 OKDate: Tue, 02 Oct 2007 20:42:52 GMTServer: WebSphere Application
Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 1140
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p687:getBusinessComponentsResponse
xmlns:p687="http://webservices.clb.content.ibm.com">
<p687:getBusinessComponentsReturn>
<p687:error xsi:nil="true"/>
<p687:libraries id="d76a1880470797b28552b53e588f1125"
path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries"
locked="0" permissions="" systemCreated="2007-10-02T20:17:19.125Z"
systemLastModified="2007-10-02T20:17:20.484Z" hidden="0"
description="This is my team library for content." title="My Team Library">
<p998:creator dn="uid=johndoe,o=default organization"
commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lastModifier xsi:nil="true"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lockOwner xsi:nil="true"
xmlns:p998="http://model.xsd.content.ibm.com"/>
</p687:libraries>
</p687:getBusinessComponentsReturn>
</p687:getBusinessComponentsResponse>
</soapenv:Body>
</soapenv:Envelope>
|
Обратите внимание, что в приведённом примере в узле getBusinessComponentsReturn есть пустой элемент error. Это стандартный шаблон передачи нефатальных или ожидаемых ошибок в Web-сервисах. Пользователям сервиса следует проверять каждый отклик на предмет наличия вложенных ошибок. Ошибки протокола SOAP зарезервированы за серьёзными невосстановимыми системными ошибками. При нефатальных ошибках отклик содержит описание и код ошибки, что позволяет организовать обработку ошибок коннектором без прекращения работы.
Получение подпапок, документов и метаданных
Теперь, когда наш Lotus Quickr Connector имеет список библиотек, нам надо получить данные для реализации навигации по ресурсам и позволить пользователю открывать папки в окне навигатора для просмотра подпапок и документов.
Имея ID или путь к родительскому ресурсу, несложно сделать запрос на получение подчинённых ресурсов. Пользователю удобно видеть список папок и опубликованных документов, поэтому мы делаем два запроса. Первый запрос – для получения списка подчинённых папок в родительской папке (листинг 5).
Листинг 5. Запрос SOAP для получения подпапок
POST /dm/services/DocumentService HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
MS Web Services Client Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l
Host: insertyourserver.com:9090
Content-Length: 382
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<getFolders xmlns="http://webservices.clb.content.ibm.com">
<id>d76a1880470797b28552b53e588f1125</id>
<path xsi:nil="true" />
</getFolders>
</soap:Body>
</soap:Envelope>
|
Данный запрос запрашивает у сервера получение списка подчинённых папок родительской папки по указанному ID, и отклик (листинг 6) содержит список объектов folder. Каждый объект folder содержит ID и путь, а также метаданные, например заголовок, описание и т.п.
Листинг 6. Отклик SOAP на запрос получения подпапок
HTTP/1.1 200 OKDate: Wed, 03 Oct 2007 17:18:06 GMT
Server: WebSphere Application Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 6167
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p687:getFoldersResponse xmlns:p687="http://webservices.clb.content.ibm.com">
<p687:getFoldersReturn>
<p687:error xsi:nil="true"/>
<p687:folders id="ccec7380470798c58570b53e588f1125"
path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries/Drafts"
locked="0" permissions="" systemCreated="2007-10-02T20:19:17.219Z"
systemLastModified="2007-10-02T20:19:17.219Z"
created="2007-10-02T20:19:17.219Z" lastModified="2007-10-02T20:19:17.219Z"
hidden="0" label="Drafts" title="Drafts">
<p998:creator dn="uid=johndoe,o=default organization"
commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lastModifier dn="uid=johndoe,o=default organization"
commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lockOwner xsi:nil="true"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:authors dn="uid=johndoe,o=default organization"
commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:owners dn="uid=johndoe,o=default organization"
commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
</p687:folders>
</p687:getFoldersReturn>
</p687:getFoldersResponse>
</soapenv:Body>
</soapenv:Envelope>
|
Теперь, когда коннектор из нашего примера имеет список папок в указанной ветви иерархии, вам нужно получить список подчинённых ресурсов документов (листинг 7).
Листинг 7. Запрос SOAP для получения документов
POST /dm/services/DocumentService HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.832) Content-Type: text/xml; charset=utf-8 SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l Host: insertyourserver.com:9090 Content-Length: 423 Expect: 100-continue <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <getDocuments xmlns="http://webservices.clb.content.ibm.com"> <id>d76a1880470797b28552b53e588f1125</id> <path xsi:nil="true" /> <serviceOptions>None</serviceOptions> </getDocuments> </soap:Body> </soap:Envelope> |
Данный запрос запрашивает у сервера получение списка подчинённых документов родительской папки по указанному ID, и отклик (листинг 8) содержит список объектов document. Каждый объект содержит ID и путь, а также метаданные, например заголовок, описание и т.п.
Листинг 8. Отклик SOAP для получения документов
HTTP/1.1 200 OKDate: Wed, 03 Oct 2007 17:18:06 GMT
Server: WebSphere Application Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 7321
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p687:getDocumentsResponse xmlns:p687="http://webservices.clb.content.ibm.com">
<p687:getDocumentsReturn>
<p687:error xsi:nil="true"/>
<p687:documents id="7cbce380470798bc855eb53e588f1125"
path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries/New Idea.doc"
locked="0" permissions="" systemCreated="2007-10-02T20:19:13.219Z"
systemLastModified="2007-10-02T20:19:13.219Z" created="2007-03-14T18:21:56.000Z"
lastModified="2007-03-18T17:44:39.000Z" hidden="0" language="en"
label="New Idea.doc" description="" title="New Idea.doc"
effectiveDate="2007-10-02T20:19:13.203Z" dataLength="249856"
dataLastModified="2007-10-02T20:19:13.219Z" dataMimeType="application/msword">
<p998:creator dn="uid=johndoe,o=default organization" commonName="John Doe"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lastModifier dn="uid=johndoe,o=default organization"
commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lockOwner xsi:nil="true" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p791:documentType xsi:nil="true"
xmlns:p791="http://model.xsd.clb.content.ibm.com"/>
</p687:documents>
</p687:getDocumentsReturn>
</p687:getDocumentsResponse>
</soapenv:Body>
</soapenv:Envelope>
|
Поскольку в нашем примере соединения строится только простейшее дерево навигации, коннектор не нуждается в получении детальной информации о ресурсе. Для улучшения производительности пример коннектора получает только минимально необходимую информацию. Если коннектору понадобится дополнительная информация о документе, то он сможет получить её с помощью отдельного вызова, используя параметры сервиса.
Параметры сервиса позволяют клиентам сервиса указывать поведение при выполнении запросов. Список параметров вызовов можно найти в документе WSDL, тем не менее для удобства в таблице 1 представлен список параметров и показаны результаты их использования при получении данных.
Таблица 1. Параметры сервиса
| Параметр | Поведение |
|---|---|
| None | Поведение по умолчанию для вызова. |
| IncludeDrafts | Каждый полученный документ будет включать черновую копию, если она существует. |
| IncludeApproveDrafts | Каждый полученный документ будет включать черновую копию, если её утвердил пользователь, с правами которого выполнено подключение к сервису. |
| IncludeSubmittedDrafts | Каждый полученный документ будет включать черновую копию, если её послал на утверждение пользователь, с правами которого выполнено подключение к сервису. |
| IncludeReferences | Каждый полученный объект будет включать описание типа. На данный момент типом объекта может быть только "документ" или "список свойств". |
| IncludePermissions | Получает права доступа к конкретному элементу данных для текущего пользователя. |
| IncludePropertySheets | Получает список пользовательских свойств для указанного документа. |
| ResolveLockOwner | Получает ID пользователя, блокировавшего указанный документ. |
| RetrieveDownloadURL | Получает атрибут с URL ресурса для извлечения бинарных данных документа. |
| RetrieveViewURL | Получает атрибут с URL ресурса для просмотра краткой информации о ресурсе. |
| IncludeFolderChildren | Получает подчинённые документы и папки в одном запросе при получении объекта folder. Не рекомендуется при большом числе подчиненных папок и документов. |
Для примера продемонстрируем, как можно использовать параметры сервиса для манипуляций с метаданными, получаемыми в одном запросе документа (листинг 9).
Листинг 9. Запрос SOAP для получения метаданных документа
POST /dm/services/DocumentService HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.832) Content-Type: text/xml; charset=utf-8 SOAPAction: ""Authorization: Basic cXVpa3JhZG06cXVpa3JhZG0=Host: insertyourserver.comContent-Length: 527 Expect: 100-continue <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <getDocument xmlns="http://webservices.clb.content.ibm.com"> <id>a8959480470798cf8587b53e588f1125</id> <path xsi:nil="true" /> <downloadOption>None</downloadOption> <serviceOptions>IncludePropertySheets</serviceOptions> <serviceOptions>RetrieveDownloadURL</serviceOptions> </getDocument> </soap:Body> </soap:Envelope> |
Данный запрос передаёт серверу два параметра, указывающие серверу возвратить пользовательские атрибуты, если они существуют у документа и поддерживаются сервером (см. IncludePropertySheets), а также URL, который может быть использован для прямого скачивания бинарных данных (см. RetrieveDownloadURL).
Обратите внимание, что отклик (листинг 10) включает динамический набор пар ключ/значение для каждого атрибута документа. Дополнительно в атрибуте url передаётся ссылка для скачивания бинарных данных ресурса.
Листинг 10. Отклик SOAP на запрос получения метаданных
HTTP/1.1 200 OKDate: Mon, 08 Oct 2007 18:10:38 GMT
Server: WebSphere Application Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 4243
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p687:getDocumentResponse xmlns:p687="http://webservices.clb.content.ibm.com">
<p687:getDocumentReturn>
<p687:error xsi:nil="true"/>
<p687:document id="a8959480470798cf8587b53e588f1125"
path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:
libraries/Help UX Mockup.jpg"
locked="0" permissions="" systemCreated="2007-10-02T20:19:21.453Z"
systemLastModified="2007-10-08T18:09:44.375Z" created="2007-03-27T00:51:29.000Z"
lastModified="2007-10-08T18:09:44.375Z" hidden="0" language="en"
label="Help UX Mockup.jpg" description="" title="Help UX Mockup.jpg"
effectiveDate="2007-10-08T18:09:44.344Z" url="http://insertyourserver.com:
10038/lotus/mypoc?uri=
dm:a8959480470798cf8587b53e588f1125&verb=download"
dataLength="117516" dataLastModified="2007-10-02T20:19:21.453Z"
dataMimeType="image/jpeg">
<p998:creator dn="uid=johndoe,o=default organization" commonName="John Doe"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lastModifier dn="uid=johndoe,o=default organization" commonName="John Doe"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:lockOwner xsi:nil="true" xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:authors dn="uid=johndoe,o=default organization" commonName="John Doe"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p998:owners dn="uid=johndoe,o=default organization" commonName="John Doe"
xmlns:p998="http://model.xsd.content.ibm.com"/>
<p791:propertySheets propertySheetTypeId="49cc3e004719baea98f99be57ed4c640"
extracted="0" label="propSheet49cc3e004719baea98f99be57ed4c640" title="Custom PS"
xmlns:p791="http://model.xsd.clb.content.ibm.com">
<p791:dynamicLongs
key="clb:p_1191866765906a1b675004719bae9a53abf471f54238f_0">
<p791:values>46800</p791:values>
</p791:dynamicLongs>
<p791:dynamicDates
key="clb:p_119186676589198c5a3804719bae9a539bf471f54238f_0">
<p791:values>2007-10-08T18:08:59.093Z</p791:values>
</p791:dynamicDates>
<p791:dynamicDates
key="clb:p_1191866765906a1b675004719bae9a53bbf471f54238f_0">
<p791:values>2007-10-08T13:00:00.000Z</p791:values>
</p791:dynamicDates>
<p791:dynamicDoubles
key="clb:p_11918667658758f3c3b804719bae9a535bf471f54238f_0">
<p791:values>1234.0</p791:values>
</p791:dynamicDoubles>
<p791:dynamicStrings
key="clb:p_119186676582885b2d3804719bae9a533bf471f54238f_0">
<p791:values>sample text</p791:values>
</p791:dynamicStrings>
<p791:dynamicStrings
key="clb:p_11918667658758f3c3b804719bae9a537bf471f54238f_0">
<p791:values>0</p791:values>
</p791:dynamicStrings>
<p791:dynamicStrings
key="clb:p_1191866765906a1b675004719bae9a53cbf471f54238f_0">
<p791:values>http://www.ibm.com</p791:values>
</p791:dynamicStrings>
<p791:dynamicStrings
key="clb:p_11918667658758f3c3b804719bae9a534bf471f54238f_0">
<p791:values>sample multi-line text</p791:values>
</p791:dynamicStrings>
<p791:dynamicStrings
key="clb:p_11918667658758f3c3b804719bae9a536bf471f54238f_0">
<p791:values>uid=johndoe,o=default organization</p791:values>
</p791:dynamicStrings>
<p791:dynamicStrings
key="clb:p_119186676589198c5a3804719bae9a538bf471f54238f_0">
<p791:values>1</p791:values>
<p791:values/>
</p791:dynamicStrings>
</p791:propertySheets>
<p791:propertySheetTypes id="49cc3e004719baea98f99be57ed4c640" title="Custom PS"
extracted="0" xmlns:p791="http://model.xsd.clb.content.ibm.com">
<p791:templateXml xsi:nil="true"/>
</p791:propertySheetTypes>
<p791:documentType versioning="NONE" approvalEnabled="0" defaultExtension=""
id="a5f38a004719bb0b98fa9be57ed4c640"
path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries/
clb:documentTypeContainer/
Custom DT" locked="0" systemCreated="2007-10-08T18:06:20.516Z"
systemLastModified="2007-10-08T18:06:20.516Z" hidden="0" description=""
title="Custom DT" xmlns:p791="http://model.xsd.clb.content.ibm.com">
<p791:propertySheetTypes id="49cc3e004719baea98f99be57ed4c640" title="Custom PS"
extracted="0">
<p791:templateXml xsi:nil="true"/>
</p791:propertySheetTypes>
<p791:template xsi:nil="true"/>
</p791:documentType>
</p687:document>
</p687:getDocumentReturn>
</p687:getDocumentResponse>
</soapenv:Body>
</soapenv:Envelope>
|
Наш пример коннектора Lotus Quickr работает с метаданными ресурса в режиме "только чтение". С использованием Web-сервисов Lotus Quickr также можно создавать новые документы и изменять существующие. Для этого пользователь должен сначала блокировать документ, затем создать черновую копию ресурса, модифицировать черновик (метаданные или бинарные данные) и после этого опубликовать черновой документ как текущий. Обратитесь к документации по WSDL (как описано ранее в разделе "Генерация кода сервиса") для получения детального описания перечисленных шагов.
Переименовывание и удаление ресурсов
Операции переименования, перемещения и удаления зависят от типа ресурса, другими словами, они различаются для папок и для документов. Каждая запрошенная операция будет производиться с учетом ограничений прав доступа сервера Lotus Quickr.
При выполнении операции переименования ресурса пользователь должен указать либо ID, либо абсолютный путь модифицируемого ресурса. Новое имя должно соответствовать правилам именования файловой системы, установленным сервером.
При выполнении операции удаления ресурса пользователь должен указать либо ID, либо абсолютный путь удаляемого ресурса. Можно удалять папки и документы, но корневую папку библиотеки средствами Web-сервисов Lotus Quickr удалить невозможно.
Web-сервисы Lotus Quickr предоставляют простой путь для работы с документами. Так как все операции описаны в WSDL, вы можете использовать любой язык программирования и соответствующие утилиты быстрой генерации кода для работы с удалённым сервером (в нашем примере это C#). Данная статья демонстрирует, как использовать сервис для вызова основных операций для работы с документами и объясняет основные шаблоны работы для каждого сообщения, запроса или отклика.
| Имя | Размер | Метод загрузки |
|---|---|---|
| QuickrNavigator.zip | 730KB | HTTP |
Научиться
- Оригинал статьи:
"Introducing IBM Lotus Quickr Web services" (EN).
- Прочитайте статью на developerWorks Lotus:
"IBM Lotus Quickr:
Увеличение продуктивности команды при использовании социальных сетей" .
- Прочитайте статью на developerWorks Lotus:
"Введение в сервисы IBM Lotus
Quickr REST" (EN).
- Ознакомьтесь с руководством
Lotus Quickr
Developer's Guide (EN).
- Ознакомьтесь с документацией
Lotus Quickr
(EN).
Обсудить
- Примите участие в обсуждении материала на форуме.
- Участвуйте в блоге
команды developerWorks Lotus
(EN).
Дерек Карр (Derek Carr) занимает в IBM должность консультанта по программному обеспечению и работает в группе Lotus Quickr в Рисерч-Трайэнгл Парк, штат Новая Каролина. С Дереком можно связаться по адресу dwcarr@us.ibm.com.