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

fedotxxl

Well-Known Member
09.11.2005
614
0
#1
Прошу прощения, что шпарю вопросами...

Итак, нужно:
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 для "связанных" парсеров
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#2
ты бы лучше сначала определил почему не работает. см свойство Log, например
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#3
Код:
'где-то тут объявляется 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, прям как олдскульная песне Депешей :(
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#4
кроме прогресса есть еще импорт и экспорт :(
 
Z

zum

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

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

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

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#6
DXLExporter -> DOMParser -> DXLImporter

Если охота ручками, то, кмк, лучше notepad++ ничего нет.
 

TIA

:-)
Lotus team
15.05.2009
790
2
#7
zum
А почему нельзя просто копировать нотусовый документ и править в нём поля на эти самые другие значения?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#8
ну правильно, можно целую колекцию скормить :rolleyes:
 
Z

zum

Гость
#9
ну из этого поста, понимаю что идея сама по себе не совсем больная.
вот кусок документа
Код:
<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
А почему нельзя просто копировать нотусовый документ и править в нём поля на эти самые другие значения?
Потому что, докуентов может быть тысячи...
Я сделаю загрузку из фала по полям, или из экселевкой или еще какой таблицы не суть...
Просто дают список большой, в каком угодно формате нужно будет создать сооветсвенно списку документы
 

TIA

:-)
Lotus team
15.05.2009
790
2
#10
Потому что, докуентов может быть тысячи...
Так тем более. Собственно создание документа через DXL гораздо тормознее, чем напрямую.
Другое дело, из внешнего файла брать данные для заполнения новых документов-копий.

1) что будет если передать юнид "00000...000"?
2) что будет если будут одинаковые юниды?
Поведение задаётся через св-во NotesDXLImporter.DocumentImportOption
 
Z

zum

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

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

Дак чего по пунктам 1,2,3? Ктонить знает?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#13
2) что будет если будут одинаковые юниды?
см notesDXLImporter.DocumentImportOption

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

от блин, шустрый TIA :rolleyes: радует, что разные люди мыслят схожими вариантами реализации ))
 
K

Klido

Гость
#14
Ну сначала необходимо список весь получит, в лубом случае
Чтобы пользователь видел, что будет добавлено. Ну или заменено.
т.е. ты лотусиную базу хочешь в dxl всю выплюнуть, загрузить куда-то+внешние данные, поработать дать там юзеру и потом обратно в базу лотуса качнуть? ох-хо-хо...
 
Z

zum

Гость
#15
см notesDXLImporter.DocumentImportOption


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

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

То есть я хочу сделать так:
notesDXLExporter делает шаблон, я в него программно добавлю документы из внешнего источника.
и обратно
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#17
шаблоны шаблонами, но в алгоритме мне ненра создание доков (особливо массовое) "единомоментно"
часы на сервере "убегут" однозначно :(
ведь док можно и апдейтить (уже существующие) доки, кот. можно создавать "пулами" в к-л ненагрузочное время, с запасом
 
Z

zum

Гость
#19
Ну если кому интересно, то программа написана.
Работает стабильно, импорт примерно 100 док в секунду
Сервер не умирает, нигде ничего не убегает. тьфу-тьфу-тьфу
 

TIA

:-)
Lotus team
15.05.2009
790
2
#20
Ну, левой рукой правое ухо тоже можно чесать. Не удобно только.