Выгрузка документв в DXL, изменение и загрузка обратно в базу

  • Автор темы Автор темы fedotxxl
  • Дата начала Дата начала
F

fedotxxl

Прошу прощения, что шпарю вопросами...

Итак, нужно:
1. Выгрузить notesDocument в domParser
2. Изменить xml (это я сам)
3. Загрузить измененный xml обратно в базу

Код
Set dxlExporter = ns.CreateDXLExporter
Call dxlExporter.SetInput(nd)
Call dxlExporter.SetOutput(domParser)
Call dxlExporter.Process

'Удаляем документ
Call ndTemp.Remove(True)

Dim dxlImporter As NotesDXLImporter
Set dxlImporter = ns.CreateDXLImporter
Call dxlImporter.setInput(domParser)
Call dxlImporter.setOutput(ns.CurrentDatabase)
Call dxlImporter.Process
не работает, т.к., насколько я понял нельзя повторно вызывать метод .Process для "связанных" парсеров
 
ты бы лучше сначала определил почему не работает. см свойство Log, например
 
Код:
'где-то тут объявляется DOMParser

Set dxlExporter = ns.CreateDXLExporter
Call dxlExporter.SetInput(nd)
Call dxlExporter.SetOutput(domParser)

Dim dxlImporter As NotesDXLImporter
Set dxlImporter = ns.CreateDXLImporter
Call dxlImporter.setInput(domParser)
Call dxlImporter.setOutput(ns.CurrentDatabase)

Call dxlExporter.Process

Process надо говорить тока инициатору.
Это зовётся pipeline, прям как олдскульная песне Депешей :(
 
кроме прогресса есть еще импорт и экспорт :(
 
Задача такая:
Есть коллекция документов по одной форме (однотипных)
Эта коллекция выгружается в DXL
Документ простой несколько полей.
Выгружается дабы, отредактировать данные и добавить еще много много таких документов, токо с другими значениями.
Ну и затем импортируется обратно

Проще говоря, выгружаем получаем шаблон документа, добавляем по шаблону еще.

Вопрос собственно, такой
Это вообще идея здравая или можно еще чтото придумать?
Может кто уже сталкивался с похожей проблемой?
И если здравая есть, какой-нить удобный редактор? или придется его написать?
 
DXLExporter -> DOMParser -> DXLImporter

Если охота ручками, то, кмк, лучше notepad++ ничего нет.
 
zum
А почему нельзя просто копировать нотусовый документ и править в нём поля на эти самые другие значения?
 
ну правильно, можно целую колекцию скормить :rolleyes:
 
ну из этого поста, понимаю что идея сама по себе не совсем больная.
вот кусок документа
Код:
<document form='formCompani'>
<noteinfo noteid='1c542' unid='4A04C43E86BFA669C3257678002F0E56' sequence='2'>
<created><datetime>20091124T113358,62+03</datetime></created>
<modified><datetime>20091124T113406,33+03</datetime></modified>
<revised><datetime>20091124T113406,32+03</datetime></revised>
<lastaccessed><datetime>20091124T113406,32+03</datetime></lastaccessed>
<addedtofile><datetime>20091124T113406,17+03</datetime></addedtofile></noteinfo>
<updatedby><name>CN=User/O=SERV</name></updatedby>
<revisions><datetime>20091124T113406,17+03</datetime></revisions>
<item name='txtNameCompani'><text>Тест</text></item>
<item name='Iss'><text>1</text></item></document>
</database>

Возникли следующие вопросы:
1) что будет если передать юнид "00000...000"?
2) что будет если будут одинаковые юниды?
3) вся ли информация тут нужна? в частности noteinfo,revisions.



Добавлено:
zum
А почему нельзя просто копировать нотусовый документ и править в нём поля на эти самые другие значения?

Потому что, докуентов может быть тысячи...
Я сделаю загрузку из фала по полям, или из экселевкой или еще какой таблицы не суть...
Просто дают список большой, в каком угодно формате нужно будет создать сооветсвенно списку документы
 
Потому что, докуентов может быть тысячи...
Так тем более. Собственно создание документа через DXL гораздо тормознее, чем напрямую.
Другое дело, из внешнего файла брать данные для заполнения новых документов-копий.

1) что будет если передать юнид "00000...000"?
2) что будет если будут одинаковые юниды?
Поведение задаётся через св-во NotesDXLImporter.DocumentImportOption
 
Так тем более. Собственно создание документа через DXL гораздо тормознее, чем напрямую.
Другое дело, из внешнего файла брать данные для заполнения новых документов-копий.

Ну сначала необходимо список весь получит, в лубом случае
Чтобы пользователь видел, что будет добавлено. Ну или заменено.
И чтоб, можно было и ручками добавить... кароч большой функционал редактирования, будет, тогды
И источник может быть, в любом формате.

Вот... А скорость не критично, установка начальных данных, один раз будет делаться.

Дак чего по пунктам 1,2,3? Ктонить знает?
 
2) что будет если будут одинаковые юниды?
см notesDXLImporter.DocumentImportOption

Потому что, докуентов может быть тысячи...
и ты хочешь чтобы программа, которая экспортирует файл формировала весь DXL?
а не проще будет свой XML формат сделать, и написать код, который будет его читать и создавать уже документы по данным оттуда, а не надеятся, что лотус съест DXL?

от блин, шустрый TIA :rolleyes: радует, что разные люди мыслят схожими вариантами реализации ))
 
Ну сначала необходимо список весь получит, в лубом случае
Чтобы пользователь видел, что будет добавлено. Ну или заменено.
т.е. ты лотусиную базу хочешь в dxl всю выплюнуть, загрузить куда-то+внешние данные, поработать дать там юзеру и потом обратно в базу лотуса качнуть? ох-хо-хо...
 
см notesDXLImporter.DocumentImportOption


и ты хочешь чтобы программа, которая экспортирует файл формировала весь DXL?
а не проще будет свой XML формат сделать, и написать код, который будет его читать и создавать уже документы по данным оттуда, а не надеятся, что лотус съест DXL?

от блин, шустрый TIA :rolleyes: радует, что разные люди мыслят схожими вариантами реализации ))
А если будет другой шаблон?
Тобишь мне надо написать алгоритм который, структуру документов создаст...
хм... по сути тоже самое что и DXL.

То есть я хочу сделать так:
notesDXLExporter делает шаблон, я в него программно добавлю документы из внешнего источника.
и обратно
 
шаблоны шаблонами, но в алгоритме мне ненра создание доков (особливо массовое) "единомоментно"
часы на сервере "убегут" однозначно :(
ведь док можно и апдейтить (уже существующие) доки, кот. можно создавать "пулами" в к-л ненагрузочное время, с запасом
 
Ну если кому интересно, то программа написана.
Работает стабильно, импорт примерно 100 док в секунду
Сервер не умирает, нигде ничего не убегает. тьфу-тьфу-тьфу
 
Ну, левой рукой правое ухо тоже можно чесать. Не удобно только.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab