Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/121: Рейтинг темы: голосов - 121, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 26.06.2010
Сообщений: 29

Транзакции в Лотусе

04.08.2010, 16:34. Показов 22998. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Подскажите кто как решает вопрос по реализации транзакционной записи в БД. В большей степени интересует работа через C API, но можно и к LotusScript. Если будут какие-то готовые решения, то вообще замечательно
При создании документов мне видится пока один вариант: отдельно вести список созданных документов, при завершении транзакции очищать этот список. Если транзакция не завершена, то считывать из списка все доки и удалять их из БД.
С изменениями полей посложнее будет, т.к. надо хранить предыдущие значения. И при откате транзакции может возникнуть ситуация, что мне надо восстановить поле, которое после меня уже кто-то изменил...
Буду рад любым идеям
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2010, 16:34
Ответы с готовыми решениями:

Jvm в лотусе 6.5.1
В лотусовом клиенте этой версии используется Java 1.3.1. Надо было прицепить библиотечку явовскую, но она работает минимум под 1.4. В...

Отчет в лотусе
Нужно сделать отчет в лотусе. То есть Есть много документов в базе. Они создаются каждый месяц. Раз в месяц. То есть даты идут по...

Письма в Лотусе
Подскажите пожалуйста..... Как можно сделать так чтобы отправленное письмо в $Inbox в колонке Who не оттображалось имя пользователя...

15
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
04.08.2010, 16:44
Что за откат транзакции?
Что для Вас вообще Транзакция в лотусе?
0
0 / 0 / 0
Регистрация: 26.06.2010
Сообщений: 29
04.08.2010, 17:24
Цитата Сообщение от Klido
Что за откат транзакции?
Что для Вас вообще Транзакция в лотусе? ;)
Мне необходимо произвести запись/изменение нескольких документов. Причем если на каком-то этапе возникла ошибка (отвалился от сервера по таймауту, сеть пропала или еще чего хуже сама программа записи дала сбой), то все действия необходимо отменить. В общем определение прям как для релиционных СУБД, но сделать это надо для Лотуса. Почему - вопрос отдельный
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
04.08.2010, 17:28
Цитата Сообщение от AlexeyStaf
то все действия необходимо отменить
сочувствую....
софтина походу внешняя? ну так и пишите транзакции какие надо куда угодно+данные про лотусиный док (UNID и пр. что надо)... по необходимости - набор обратных операций... но чуднО - всё равно..
0
0 / 0 / 0
Регистрация: 26.06.2010
Сообщений: 29
04.08.2010, 18:08
Цитата Сообщение от Klido
сочувствую....
софтина походу внешняя? ну так и пишите транзакции какие надо куда угодно+данные про лотусиный док (UNID и пр. что надо)... по необходимости - набор обратных операций... но чуднО - всё равно..
Да, внешняя. Я и просил желательно применительно к Lotus C API. Я думаю, что не я один такой, кто с этим столкнулся - надеялся на может уже есть готовые наработки для этого.
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
04.08.2010, 18:42
Цитата Сообщение от AlexeyStaf
желательно применительно к Lotus C API
нет разницы тут API или там OLE/COM... надо откатить действия - их надо залогировать согласно алгоритму внешней софтины...


Цитата Сообщение от AlexeyStaf
Я думаю, что не я один такой, кто с этим столкнулся
боюсь вряд ли есть что-то толковое...
идеология лотуса особо не подразумевает таких манипуляций...ибо


Цитата Сообщение от AlexeyStaf
что мне надо восстановить поле, которое после меня уже кто-то изменил...
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
04.08.2010, 19:57
в простом случае - сохранение всех меняемых доков в ДХЛ, до транзакции, в случае отката - импорт из негоже (с реплейсом текущих)
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
05.08.2010, 10:52
ну нам же надо знать как обычно:
- создание (тут для отката просто список UNID-ов и потом удалить по списку)
- удаление (тут для отката слив в DXL и потом залить)
- изменение (тут для отката слив в DXL перед изменением, а потом надо проверять не успел ли поменяться, а если успел - значит принимать какие-то решения)

это для простого случая, но, например, не просто создать, а ещё воркфлоу применить - там и почта полетит и пр.
0
0 / 0 / 0
Регистрация: 26.06.2010
Сообщений: 29
05.08.2010, 12:20
Цитата Сообщение от Klido
ну нам же надо знать как обычно:
- создание (тут для отката просто список UNID-ов и потом удалить по списку)
- удаление (тут для отката слив в DXL и потом залить)
- изменение (тут для отката слив в DXL перед изменением, а потом надо проверять не успел ли поменяться, а если успел - значит принимать какие-то решения)

это для простого случая, но, например, не просто создать, а ещё воркфлоу применить - там и почта полетит и пр.
Одно только беспокоит не сильно ли ударит по производительности экспорт в DXL? Благо удаления документов не предвидится. Но тем не менее запись полей периодически будет весьма оживленная.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
05.08.2010, 13:20
блокировки могут помочь. суть способа - сохранять изменения одновременно и как можно позже.
перед изменением документа лочим его, добавляем в коллекцию( класс - обертка, поддерживающая хранение доков из разных БД )
commit - сохранение коллекции, разлочка
rollback - просто разлочка.
это конечно не классическая транзакция, но бОльшая часть проблем у меня решилась.
блокировка заодно решает проблему, связанную с доступом: когда в процессе сохранения коллекции выясняеца, что у юзера нет прав сохранить предпоследний документ...
Прямое попадания баллистической ракеты в серверную такая схема конечно не переживет - т.е. от аппаратных/сетевых сбоев в момент сохранения защиты нету, но для обычных задач мне хватало.
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
05.08.2010, 13:49
turumbay
я вот пытаюсь вас понять и не могу
неужели лотус изменил меня настолько что логика процедур, которые я пишу каждый день уже не должна содержать в себе откат транзакций...
Что мешает строить свои изменения таким образом, чтобы они продолжались с прерванного места?
И что плохого что часть данных будет уже новой? уж лучше часть чем вообще ничего
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
05.08.2010, 13:55
Цитата Сообщение от ToxaRat
И что плохого что часть данных будет уже новой? уж лучше часть чем вообще ничего
Что плохого, что со счёта покупателя средства списались, а на счёт продавца не поступили? Хотя, конечно, писать на Лотусе банковские и т.п. системы — маразм.
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
05.08.2010, 14:00
Цитата Сообщение от nvy
со счёта покупателя средства списались, а на счёт продавца не поступили?
хм... списали - создали док СПИСАНИЕ, ждем пока не поступят средства - создали док ПОСТУПЛЕНИЕ (как ответ списанию, например)...
если поступления не произошло - док СПИСАНИЕ помечаем неактуальным и заново... не вижу тут никаких откатов транзакций...



Цитата Сообщение от nvy
писать на Лотусе банковские и т.п. системы — маразм.
:(
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
05.08.2010, 14:30
вообще, транзакции - отличная тема для пятничного флейма. скользкая, неочевидная, с кучей "а вот если так, то..."


Цитата Сообщение от Klido
если поступления не произошло - док СПИСАНИЕ помечаем неактуальным и заново... не вижу тут никаких откатов транзакций...
а пока поступления нет - считаем списание актуальным??? принцип двойной записи никто не отменял.
я выписал клиенту накладную: запасы уменьшились, дебиторка выросла. И меня не устроит, что товар уже списался, а баланс клиента еще не изменился. Если это произошло - система находится в некорректном состоянии. То, что систему переодически можно проверять на целостность - проблему смягчает, но не решает.

речь о том, что бывает ситуация, когда нужно изменить два документа одновременно, в рамках одной "транзакции". И домино не предоставляет этого функционала. Чтоб ни накручивали - всегда в результате будет два последовательных вызова doc.save. И нет возможность обеспечить атомарность такой операции.Т.е. проблема - системная. Ее можно всячески смягчать( блокировки, доп. проверки и т.п. ), но чистого решения нет.


Цитата Сообщение от ToxaRat
И что плохого что часть данных будет уже новой? уж лучше часть чем вообще ничего
это верно, мягко говоря, не всегда.
0
Mykty0x
05.08.2010, 14:46
Имхо, по большому счёту надо писать серверную задачу для домины, которая будет перехватывать обращения к документам и реализовывать "промежуточный слой" с возможностью откатить операции, при желании. Аппаратные сбои должен обрабатывать лотусовый журнал транзакций.
Но это сложно, имхо на энтузиазме даже тех.задание нормальное не получится :sorry:
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
05.08.2010, 15:49
Цитата Сообщение от turumbay
нужно изменить два документа одновременно, в рамках одной "транзакции". И домино не предоставляет этого функционала
Пт - не догоняю что именно вы там делаете :sorry:
если в пределах домино - тут и так все ясно..
Речь идет о некоей внешней софтине, которая по каким-то своим событиям дергает лотус... А тут атомарность транзакции размыта: есть транзакция внешней софтины, есть транзакция коммуникации с лотусом, есть транзакция действия в лотусе... Не вижу что может помешать в рамках одной внешней транзакции выполнить N транзакций в лотусе.
Внешние транзакции вообще тупо ставят некий признак в доках лотуса (у меня так с 1С - там проводки, отправки в клиент-банк, прием выписок банка и пр.), а лотусина уже обрабатывает признаки как её надо...

Как по мне - тема явно из-за попыток лотус заставить делать реляционные дела (с соответствующим подходом)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2010, 15:49
Помогаю со студенческими работами здесь

String в Лотусе
Такой вопрос: Есть строка размером 32 775 899 байт как ее передать в качестве параметра внешней С-функции?

Web в лотусе
У меня задача переноса документооборота в Лотусе на WEB. Я новичок в Лотусе. Как переделать существующие базы, чтобы они работали и в WEB....

[?] web на лотусе...
сабж.... а то в лотус_клиенте моя база выглядит красиво, а в вебе -- ужасно как нить можно разукрасить? :D ведь можно же делать...

вложения в лотусе, редактирование
на данный момент: открываю вложения в лотусе, редактирую, сохраняю в итоге измененный attach будет только на локальном компьютере. ...

Учусь программировать на Лотусе
dym note as notesDocument set collection=db.UprocessedDocuments set note = collection.GetFirstDocument Forall i in note.Items ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru