Использование библиотеки из другой БД

Тема в разделе "Lotus - Программирование", создана пользователем SkinGreek, 29 июл 2008.

  1. SkinGreek

    SkinGreek Гость

    Всем привет.

    Попытался найти способ в поиске, но как то не очень получилось. В общем хотелось бы вызывать код библиотеки из другой БД.
    Вообще основная задача состоит в уже не раз поднятой темой нумерации документов 1,2,3... Начитавшись топиков по данной теме решил сделать отдельную БД, в которой была библиотека для генерации ID. В этом функционале собираюсь создавать документы по форме имеющую поля "имя счетсчика" "значение". Для каждого счетчика свой документ.
    Все вроде ясно и просто, только замялся на том чтобы вызывать функции библиотеки из другой БД:(

    Или этот подход не верен и библиотека с функционалом должна лежать в БД из которой она вызывается?

    Заранее спасибо за помощь.
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Именно!

    Но можно шмальнуть агента из нужной базы, который заюзает библиотеку.
    Или настроить наследование библиотек что бы меньше гемора было...
     
  3. SkinGreek

    SkinGreek Гость

    ех как же все сложно;)

    Агента "шмальнуть" не могу, ибо надо передавать параметр "имя каунтера" - он динамический.
    Я конечно делал передачу параметров в агент через документ, и даже библиотечка завалялась, но это слишком много телодвижений будет для обычного инкремента с локированием счетчика:(

    Это имеется ввиду сделать рутовский шаблон, от которого будут наследовать другие БД. Как я понимаю иерархию наследования можно делать.
    Ладно вопрос про наследование в принципе просто для расширения кругозора. Хотелось просто сделать по-модульней. Если советуют создать для каунтера отдельную БД, то и было бы логичней туда скинуть функционал. Иначе я не мог объяснить необходимость создания отдельной БД для этого функционала. Доков там не так уж много получается. На каждый каунтер - док. От силы было бы 100 доков.

    Ну раз нельзя, так нельзя. Обидно конечно.

    Пасиб за помощь.
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Дэк это...
    Можешь проверять, есть ли док для данного каунтера, если нет, то создать и шмальнуть агента с NoteID именно этого дока.
    А если такой док уже есть, то опять-таки запустить агента с NoteID найденого дока.
    Не будет лишних промежуточных документов.
    Типа того...
     
  5. SkinGreek

    SkinGreek Гость

    просто не ясно тогда для чего это, все равно пользующая БД будет очень много знать о каунтере.
    а именно
    что каунтер ведется в документах типа Counter и у него есть поле с которого надо брать значения.
    Вся суть инкапсуляции метода нумерации и способа хранения таким образом теряется. Если б я мог просто вызывать библиотеку базы каунтера, то пользовательская БД толком ничегоб и не знала что там да как, просто тупо вызывала бы методы и получала бы значения.
    А так получится и кода дофигища писать в клиентской БД который будет много знать о реализации каунтера. в общем и целом просто смысла тогда не вижу. может я просто прищюрин?:))
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Так как ты хочешь, не получится, кмк.
     
  7. SkinGreek

    SkinGreek Гость

    да я уже это понял, поэтому плюнул и решил что для данной задачи достаточно сделать библиотеку в клиентской БД.
    Обыдно конечно, но стерпеть можно)
    Пасиб огромное за помощь и быстрый ответ.

    Немного офтопну...
    Сейчас немного приболдел от кода в хелпе.
    Код (Text):
        Do While True
    If Codelock(LockID) Then
    Exit Do     ' We finally have a lock, exiting Loop
    End If
    Loop
    это типа "ожидание" когда конкурирующий процесс раслочит док.
    Сорри, но не удержался... "И эти люди нам запрещают ковыряться в носу?!"(с)
     
  8. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ничего супер плохого не вижу :) для каждой задачи есть своя реализация, не будут же они приводить супер пример, который будет ждать какое-то время, потом спрашивать у юзера что делать, ну и т.п. :)
     
  9. SkinGreek

    SkinGreek Гость

    Akupaka
    ИМХО какая бы задача не была, насиловать проц + рисковать зацикливания, если по каким бы то нибыло причинам лотус не снял лок с ресурса, нельзя
    Сделать слип на 1,3,5 или 10 секунд не затруднит. Для процессора это уйма времени, а для человека мнгновение, да и нечто подобное таймауту. тоже не проблема сделать. А уж клиенский код путь как хочет так и обрабатывает неудачу.
    Например можно простейшую защиту сделать.
    Код (Text):
    Do While Not Codelock(lockId) And attemptsCount < MAX_ATTEMPS_COUNT
    Sleep(SLEEP_TIME)
    attemptsCount = attemptsCount + 1
    Loop
    If attemptsCount => MAX_ATTEMPS_COUNT Then
    LockCounter = False
    Exit Function
    End If
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Вы меня не поняли :)
    я с Вами абсолютно согласен на счет проверок, циклов и т.п.
    но, суть кода в том, чтобы показать как пользоваться методом, а не в том, что нужно использовать именно указанный пример для реализации своих потребностей :)
     
  11. SkinGreek

    SkinGreek Гость

    Спасиб за обсуждение этого вопроса. Не бум спорить, главное чтоб не сильно ошибиться при использовании подобных опасных методов)
     
  12. PaKo

    PaKo Well-Known Member

    Регистрация:
    29 апр 2005
    Сообщения:
    59
    Симпатии:
    0
    Если не ошибаюсь, то на курсах "повышения" квалификации в IBA нам говорили что можно в качестве библиотеки использовать txt файл залитый на сервер и приинклюденный к БД. теоритически если несколько БД юзают одну библиотеку то просто надо указать в Option - Use "путь\имя к файлу"
     
  13. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    PaKo
    lss чтоли?
     
Загрузка...

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