Dxl

Тема в разделе "Lotus - Программирование", создана пользователем alik86, 12 май 2010.

  1. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Предыстория:
    Я так часто натыкался на этом форуме на выражения типа «ДХЛ тебе в помощь…» и т.п., что не выдержал и решил таки ознакомиться с данной технологией. ;)
    Так вот:
    Господа, не были бы вы столь любезны «ткнуть меня носом» в полезные ресурсы по DXL?
    Интересует всё, начиная с теории (желательно на русском) и заканчивая примерами практической реализации (желательно с описанием)...
    Поделитесь кто что видел, поделитесь кто что знает.
    Раздел хелпа «XML for Domino» не предлагать! ;)
    Заранее благодарен!
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    странный запрос...
    звучит как - "научите меня водить ВАЗ 21111" ;)
    нужно не ДХЛ учить, а ХМЛ - как технологию (т.е. со ср-вами работы и подходами к обработке)
     
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    To lmike
    Да в том-то и дело, что вроде как «где газ, тормоз, сцепление, коробка передач находятся, уже изучил, уже даже знаю, как завестись, тронуться и ехать, но вот каково оно ехать именно на ВАЗе 21111, как там у него отрегулировано сцепление, как именно расположены передачи и т.п. хотелось бы узнать и попробовать». ;)
    P.S. Т.е. интересует именно DXL.
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    дык дело в том, что изучение сводится к просмотру ДТД, и готовых выгрузок
    как и на авто - только поездив, сам, на конкретной модели преобретаешь специфичный опыт...
     
  5. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    БИНГО!!! Вот меня и интересуют среди всего прочего "примеры практической реализации". Т.е. хотелось бы посмотреть конкретные примеры, начиная постановки "хочу/надо сделать то-то и то-то" и заканчивая "а вот я/он/они сделали это, использовав DXL вот так:" и код этого "вот так".
    P.S. Ща доизучаю хелп + нарыл че-то на OpenNTF -- лед тронулся, господа присяжные заседатели...
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    делал тупо подстановку файла в РТ и иконки...
    делал выгрузку LAX, VTD для файлов
    игрался с конвертацией РТ в UJAC (забросил - UJAC не развивается и не имеет границ для параграфа)
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    alik86
    На затравку — определение наличия картинки в рт-поле. РТ-нафигатор их в упор не видит.
     
  8. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    имхо, dxl применяеца в двух случаях:
    1. нужно достать данные из документа( вида , базы , короче - лотусового объекта ), которые невозможно( сложно ) получить через стандартный апи( @, LS ). Пример задачи - получение скриптом файла из file resourses.
    2. и наоборот - хочеца впихнуть данные в объект, но нету штатного апи для впихивания. Пример задачи - убрать в бэкенде дурацкую зеленую рамку для ссылок в rt поле
    В обоих случаях приходица приходица действовать эвристическим путем. ( Можно конечна выкурить dtd и найти решение эмпирически - но это не наш путь )
    1. экспортируем документ в dxl, открываем его текстовым редактором и вдумчиво курим увиденное. Найти нужные данные - обычно не проблема. Поняв, где оно(искомые данные) живет - пишем выдирающий его скрипт. Путей выдираения - множество: strleft-rigth, xslt, разбор dom , реализация sax. Для случая file resource - получаем ресурс через notecollection, выгружаем в dxl, выдираем содержимое <filedata> , декодируем base64, финиш.
    2. впихивание данных чуть сложнее. нужно фактически иметь два документа: исходный и целевой. Исходный обычно есть, а целевой часто можно собрать ручками в ui. Далее, играем в "найди 10 отличий" и садимся писать скрипт, преобразующий исходный документ в целевой...
    При работе с элементами дизайна - все то же самое, плюс надо не забывать их подписывать после импорта.
    В любом случае - чтоб набить руку - необходимо повыгружать различные объекты и посмотреть "что у ней внутре"
    Примеры:
    проверка наличия ровно одной картинки в rt-поле.
    http://www-10.lotus.com/ldd/bpmpblog.nsf/d...alidation-image
    импорт элементов дизайна с подписыванием
    http://www-10.lotus.com/ldd/bpmpblog.nsf/d...nt&comments
     
  9. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    В догонку: если на форме расположен обычный текст вперемешку с pass-thru html - дизайнер часто вставляет ненужные параграфы перед html содержимым.
    переодически натыкаюсь на эти грабли, особенно часто вылезают при отрисовке на форме html-таблиц - перед таблицей добавляется пустой параграф и нет возможности его убрать. Решение - убрать лишний <par>, выгрузив форму в dxl.
     
  10. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
  12. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Итак, если никто не против, продолжим, господа… :rolleyes:
    Захотелось мне реализовать такой примерчик:
    Форма с двумя rt полями RTField1 и RTField2 и кнопкой. В поле RTField1 вставлена картинка (допустим 100х100рх). По нажатию на кнопку надо «впулить» эту же картинку, но уже уменьшенную (допустим до 50х50рх) в поле RTField2.

    Как я понимаю, теоретически решение выглядит как-то так:
    Экспортирую RTField1, подменяю picture width="100px" height="100px" на picture width="50px" height="50px" (может еще и item name="RTField1" на "RTField2" – в общем хз ) и результат импортирую в RTField2.
    (сразу же смутило то, что в NotesDXLImporter в Possible output objects значится лишь NotesDatabase)
    Но как?! Как это реализовать и реализуемо ли это вообще через DXL?
    Если да, то подкиньте пожалуйста приблизительный код.

    P.S. ToxaRat, Ваша ссылка нерабочая.
     
  13. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Анализатор ToxaRat был выложен и на нашем форуме - Lotus Analyzer V1.4, но код там скрыт, так что вряд ли поможет разобраться с DXL.
    Видать, с тем сайтом сегодня траблы...
     
  14. Klido

    Klido Гость

  15. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Кнопка на форме наверно не очень правильно. Не надо наступать на все грабли одновременно. Опытный граблепроходчик знает, что на грабли необходимо наступать последовательно. И даже умное слово для этого процесса выдумали: декомпозиция.
    Пусть будет DXL отдельно, а UI отдельно. Сначала разберитесь с экспортом-импортом в бэкенде, потом подключайте UI. Так что для начала кнопку рекомендую сделать во вьюхе( или вообще - отдельного агента )
    По задаче: все правильно рассуждаете.
    1. выгружаем документ в xml.
    2. преобразуем файл( поток, если не хочеца выгружать на диск) к нужному нам виду
    3. импортируем полученный файл(stream) обратно в NotesDatabase с параметром
    notesDXLImporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE ' (5)
     
  16. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    alik86
    выгружать док лучше в stream а потом вам и реплейса хватит
     
  17. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    C импортом/экспортом вроде разобрался.
    А эти преобразования вообще делаются в огороде NotesDOMParser/NotesSAXParser али нет?

    Экспортнул я документ (в нем есть поле Subject = "тема1") в D:\filename.xml:
    Код (Text):
    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE document (View Source for full doctype...)>
    <document xmlns=...>
    ..............
    <item name="Subject" sign="false" seal="false" sealed="false" authors="false" names="false" readers="false" placeholder="false">
    <text>тема1</text>
    </item>
    ................
    </document>
    Теперь хочу подменить это поле на "тема2".
    Мои действия?
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    читайте pipelines в хэлпе
    кусок:
    Код (Text):
    Sub Initialize
    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim nc As NotesNoteCollection
    Dim exporter As NotesDXLExporter
    Dim importer As NotesDXLImporter


    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set nc = db.CreateNoteCollection(False)
    nc.SelectDocuments = True
    Call nc.BuildCollection

    REM Set up importer to receive DXL piped from exporter
    REM and to re-import the documents back into the
    REM current database as copies.
    Set exporter = session.CreateDXLExporter(nc)
    'наша вставка, styleSheet получаем где-то ещё;)
    Set notesXSLTransformer = notesSession.CreateXSLTransformer(exporter , styleSheet)
    'вставка - завершена
    Set importer = session.CreateDXLImporter(notesXSLTransformer, db)
    exporter.Process
    End Sub
    ежели в цепочку вставить XSLT - получим желаемое
     
  19. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    :) Т.е. преобразования делаются в огороде NotesXSLTransformer и NotesDOMParser/NotesSAXParser тут вообще нипричем?
     
  20. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    можно и ими - тока зачем (для вашего случая)
     
Загрузка...

Поделиться этой страницей