Сохранить и открыть удаленные документы - PullRequest
1 голос
/ 16 сентября 2010

Я ничего не знаю о разработке Microsoft Office, но я хотел бы создать прототип плагина, который позволит пользователю сохранять и открывать документы из удаленного хранилища. Возможно, позже создайте систему управления версиями на сервере - но серверная часть - самая легкая ее часть (в моем случае). Возможно, я должен сосредоточиться на том, чтобы заставить это работать для одного офисного приложения за раз - скажем MS WOrd (если люди не думают, что с Excel легче работать) И давайте нацелимся на Office 2007 (поскольку это то, что я установил).

Сохранение

В хранилище будет храниться документ с тегами (многими тегами, разных типов). Для сохранения документа надстройка должна сначала показать диалог и разрешить пометку. Надстройка должна отправить массив тегов вместе с документом (в кодировке Base 64?) Через API SOAP или REST на наши серверы. Несколько вопросов

  1. Возможно ли это? если так предложения относительно того, как это может быть достигнуто? Существует ли механизм получения доступа к двоичным данным (потоку) просматриваемого документа?
  2. Возможно ли добавить это обратно в диалог File-SaveAs? ИЛИ мне нужно будет создать свой собственный пункт меню? Первый Obviuos, вероятно, больше знаком с пользователями ...
  3. Существует ли уже механизм удаленного сохранения документов, от которого я могу отказаться?

Открытие

После сохранения нескольких документов нам потребуется метод извлечения документов / их открытия. Поэтому я подумал бы, что мне нужен диалог, позволяющий просматривать документы. Тип тега -> Значения тега (в дереве может быть больше уровней, но я хочу начать с него). Раз документ открыт, я думаю, что API нужно будет

  1. Выполните вызов RPC (SOAP / REST) ​​для извлечения документа - декодируйте содержимое (фактический документ) и откройте этот поток внутри Word (например)
  2. Я также хотел бы сохранить свои теги в памяти

XML Design

Чтобы лучше представить данные, которыми обмениваются Word и сервер, давайте представим XML-структуру наподобие

<document name="recapOfTheGame.doc">
   <tags>
      <tag type="team">New York Yankees</tag>
      <tag type="team">Boston Redsox</tag>
      <tag type="city">New York</tag>
      <tag type="city">Boston</tag>
      <tag type="type">recap</tag>
   </tags>
   <content encoding="base64">AKJSGHKASHGFKSJDHGFKSJDHGFSKDJFHGSKJDGSKDJGSKDJFHGSDKJFH</content>
</document>

Исследователь хранилища должен показывать этот документ в нескольких местах дерева; Вот пример репозитория, показывающего этот документ в пяти местах (на основе тегов):

repository
    + untagged <not shown in XML>
    - team  
        + Tampa Bay Rays <not shown in XML>
        - Boston Resox
               recapOfTheGame.doc
        - New York Yankeeys
               recapOfTheGame.doc
    - city
        + Tampa Bay <not shown in XML> 
        - new york 
               recapOfTheGame.doc
        - boston
               recapOfTheGame.doc
    - type
        + box scores <not shown in XML> 
        - recaps
               recapOfTheGame.doc

Другие мысли

Я только предоставил дизайн XML, чтобы сделать концепцию более осязаемой, и я открыт для других методов хранения тега (в документе, если это возможно). В целом, любое направление, которое я могу дать в этом начинании, будет с благодарностью.

Я задал этот вопрос по-другому, чтобы проверить, будут ли отличаться ответы, Открыть документ WORD из базы данных ИЛИ веб-сервис

Я принимаю ответ webDav - ниже, так как он является общим для обоих и именно так делает alfresco.

Спасибо

1 Ответ

2 голосов
/ 16 сентября 2010

Посмотрите на использование WebDAV для открытия / сохранения документов; Офис имеет поддержку для этого, хотя Ymmv. Если вы не можете использовать встроенную поддержку Office, используйте WebDrive , NetDrive и т. Д. Или создайте свою собственную.

Другой альтернативой является протокол SharePoint, если ваш репозиторий его поддерживает. Alfresco, например, клонировал части этого. Это также имеет преимущество встроенного клиента в Word.

CMIS более современен, чем WebDAV, хотя вам придется создать свой собственный клиент (смотрите Apache Chemistry). Тем не менее, это может быть полезно, если ваш репозиторий поддерживает его;

Вы также можете использовать SOAP или REST, как вы упомянули, через VSTO, но это также относится к вашей категории клиентов.

Относительно тегов: вы можете передать их как свойства WebDAV. Также может быть целесообразно поместить их в docx как часть CustomXML (или просто в свойствах документа, что дает преимущество в том, что они видны в пользовательском интерфейсе Word), поэтому в документе они есть, даже если они перемещены или что-то подобное.

...