powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Базовый класс для бизнес-сущностей
25 сообщений из 84, страница 2 из 4
Базовый класс для бизнес-сущностей
    #39703217
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, а можете коротенький пример кода как у вас это реализовано ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703218
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияwsnetКотовасия, а Read Commited не хватит ?
Ну, если ты уверен, что в поцессе формировпния клиентского датасета никто другой не закоммитит изменения - хватит.
Жадачи могут быть разными. Представь, что ты для формирования отчеты часть данных загрузил позавчера, а часть - сегодня. Наверное, такое допустимо в период новогодних праздников, когда никто больше не работает.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703224
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

неа, нельзя коротенько... Если на словах: подгружается объект, передается на форму, на форме данные из объекта грузятся в контролы, пользователь редактирует, при сохранении данные из контролов сохраняются в объект, проверяется корректность, подгружается текущая версия объекта и проверяется, были ли изменени, сохраняется объект в базу. Форма закрывается.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703299
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703353
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ?
В это время стоит таймер, который проверяет изменения и подгружает их в открытые журналы/справочники, если что-то поменялось (например, оставил программу на пол дня, а потом решил поработать). В карточках для редактирования ничего не подгружается, только предупреждение -- данные на момент открытия. Кроме того для важных данных есть еще всплывающие уведомления пользователей, мол их задача или заказ был изменен, кликните сюда для перехода.

Короче, стандартный функционал, который есть во многих CRM/ERP.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703369
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetJaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ?
Вообще, часто ничего такого и не нужно. Ну, прикинь, тётя Маша редактировала полдня документ, а потом, при попытке нажать "Сохранить" вдруг узнала, что дядя Петя что-то поменял раньше нее. И что ей делать - принять к сведению, идти ругаться с Петром или забить на свою работу? Пустой гемор на ровном месте.
...
При создании документа ничего не нужно делать, ибо документ существует только на клиенте, никто его не сможет испортить.
При редактировании - скорее всего, документ принадлежит его создателю, то есть - "кто создал, тот и правит", то есть, все кто не лень не смогут влезть. Т.обр., вопрос чисто организационный, и "проблемы" нет.

А если нужно все же дать возможность что-то менять нескольким юзерам - тут варианты разные. Например:
1. "Кто последний нажал Сохранить - тот и прав". Совершенно ничего страшного в этом нет, главное - предупредить людей об этом.
2. Автоматически выставляется флажок "документ редактируется Марией Ивановной", все остальные могут только смотреть. Если МарьИванна ушла на обед и не вернулась (а работать с документом нужно"), флажок можно сбросить (с регистрацией сего непотребства в логе, если очень хочется). Флажок может сбросить либо админ, либо кто-нибудь из группы юзеров, допущенных до редактирования документа.
3. и т.п.

Мы и так, и сяк, и эдак делали. Никакой разницы с т.зр. эксплуатации, но чаще всего "вариант 1". Если документ - сложная структура, то, возможно, "вариант 2": юзеру проще принять, что документ в его монопольном доступе.

Юзеры - они народ терпеливый. Что им подсунешь, то они и съедят.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703410
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__, Jadi спасибо, что делитель опытом!

чччД__, если я реализовать хочу второй вариант - то кто первый открыл документ для правки - того и тапки?
То есть нужно хранить с документом поле статус и ФИО редактора формы?
А ежели я хочу реализовать права работы с документом - то понадобится реализовать еще и группу для редактирования?

А как организовать группу - это лучше делать на уровне СУБД или на клиентском уровне?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703411
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не буквально я имею ввиду ФИО редактора формы, а его ID конечно же!
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703421
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__2. Автоматически выставляется флажок "документ редактируется Марией Ивановной", все остальные могут только смотреть. Если МарьИванна ушла на обед и не вернулась (а работать с документом нужно"), флажок можно сбросить (с регистрацией сего непотребства в логе, если очень хочется). Флажок может сбросить либо админ, либо кто-нибудь из группы юзеров, допущенных до редактирования документа.
Идея мне нравится, только, ИМХО, лучше сделать что если документ не правится в течении X минут (выбирается админом системы), то сохраняется в черновик и статус "редактируется" сбрасывается сам. А при открытии черновика проверяется, были ли изменения исходного документа, и если были то открывается и новая версия и черновик в отдельном окне, с возможностью переноса выбранных изменений в основной документ.
Да, так сложнее, зато удобнее пользователю НМВ :)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703425
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу файловую базу данных. Объясните, что такое файлы
Программерский фольклор


wsnet... пример кода как у вас это реализовано ?
Позвольте вмешаться...
wsnet, судя по вопросам опыт в Delphi у Вас не большой. По этой причине сильно рекомендую, сосредоточится на изучении стандартных подходов с использованием TDataModule-TDataSet-TDataSource и не придумывать свой неповторимый стиль (пока во всяком случае). Всегда найдется задача которую лучше решить иными способами, но для 90% случаев стандартный подход вполне годен. Кроме того это сильно упрощает жизнь последователям, которые будут поддерживать и развивать Ваш код (людей, которые знают про TDataSet много, а про вашу объектную модель бизнес сущностный знает ровно 1).
Кроме того вопросы общего характера, типа как бы мне организовать архитектуру заранее обречены на флуд и холивары, т. к. чтобы дать более мене вменяемый ответ нужно очень хорошо разбираться в предметной области, организации вашей компании и прочей куче вещей о которой ни кто не знает. В результате все будут заниматься домыслами и выдавать рекомендации на основе своего личного опыта/задачи/конторы. То, что для одного будет вполне верно и очевидно, для другого буде абсолютным бредом.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703506
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetКоллеги, использовал в своих программах бизнес-сущности, типа
Код: c#
1.
2.
3.
4.
TPerson = class
FID:Integer;
….
property ID:Integer read FID write FID;



В итоге поняв, что это ни что иное как DataSet, сделал:
...
Например как с помощью них реализовать поиск по имени?
Если уж действительно хочется "бизнес-сущности" с преферансом и томными барышнями, то можно начать пользоваться каким-нибудь ORM. Например Aurelius или от DevEx. Первый мне прям очень нравится. Не без недостатков, но очень такоой рабочий.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703604
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspb, опыт есть, но он таки связан с формошлепством, вот и ищу другие подходы.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703617
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703630
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetroschinspb, опыт есть, но он таки связан с формошлепством, вот и ищу другие подходы.
Переходите к даташлёпству :o)
Писать свою компонентную модель, фреймворк и т.д. в реальном проекте можно только когда есть четкое понимание, того как должно быть и что своя модель будет радикально лучше стандартной, т.е. на столько лучше, что сферический Вася Пупкин предпочтет тратить своё время на её изучение, а не накидает DataSet-ов которые он и так знает. Обычно такое понимание приходит когда уже много что сделано на стандартных компонентах.
Смотрите исходники TPersistent, TCollection, TStrings, TActionList. Подумайте почему, зачем сделано так а не иначе, может какие идеи для себя почерпнете.
Это как бы совет от человека, который программировал когда небо над Невой еще чернело от птеродактелей
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703716
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoпо сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)

Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703798
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetL_argoпо сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)

Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238
А, так ты не просто из тех, кто скл осилить не в состоянии, а особо упоротый...
Ну, феллируй. В энтерпрайз попадешь.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703825
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__, ни о чем!
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703989
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetL_argoпо сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)

Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 Там же русским по белому написано "для этой задачи это не нужно". Так что все таки "НЕ". :)

Хотите научиться удалять гланды автогеном ? ОК, бро...
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704271
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argowsnetпропущено...


Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 Там же русским по белому написано "для этой задачи это не нужно". Так что все таки "НЕ". :)

Хотите научиться удалять гланды автогеном ? ОК, бро...

Ага. Если ООП не нужно, тогда и Delphi нафик не нужён. Пущай автор голым SQL-ом обойдётся. Декларативненько так.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704434
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Банальная пустая форма уже ООП
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704437
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эндиБанальная пустая форма уже ООП
не обязательно
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704701
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaАга. Если ООП не нужно, тогда и Delphi нафик не нужён.Не ага. Речь не шла про ненужность ООП как такового.
Речь шла про использование ООП по назначению .
Попытка притянуть за уши ООП в описание бизнес-сущностей - тупосць. В любом случае это будет не ООП, а фарс и посмешище.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704752
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ОО-языки упрощают абстракцию, возможно, даже слишком ее упрощают. Они поддерживают
создание структур с большим количеством связующего кода и сложными уровнями.
Это может оказаться полезным в случае, если предметная область является
действительно сложной и требует множества абстракций, и вместе с тем такой
подход может обернуться неприятностями, если программисты реализуют простые
вещи сложными способами, просто потому что им известны эти способы и они умеют
ими пользоваться.
Все ОО-языки несколько склонны "втягивать" программистов в ловушку избыточной
иерархии. Чрезмерное количество уровней разрушает прозрачность: крайне
затрудняется их просмотр и анализ ментальной модели, которую по существу
реализует код. Всецело нарушаются правила простоты, ясности и прозрачности,
а в результате код наполняется скрытыми ошибкми и создает постоянные проблемы
при сопровождении.
Данная тенденция, вероятно, усугубляется тем, что множество курсов по
программированию преподают громоздкую иерархию как способ удовлетворения
правила представления. С этой точки зрения множество классов приравнивается
к внедрению знаний в данные. Проблема данного подхода заключается в том, что
слишком часто "развитые данные" в связующих уровнях фактически не относятся
у какому-либо естественному объекту в области действия программы -
они предназначены только для связующего уровня.
Одной из причин того, что ОО-языки преуспели в большинстве характерных для них
предметных областей (GUI-интерфейсы, моделирование, графические средства),
возможно, является то, что в этих областях относительно трудно неправильно
определить онтологию типов. Например, в GUI-интерфейсах и графических средствах
присутствует довольно естественное соотвествие между манипулируемыми
визуальными объектами и классами. Если выясняется, что создается большое
количество классов, которые не имеют очевидного соответствия с тем, что
происходит на экране, то, соотвественно, легко заметить, что связующий уровень
стал слишком большим.
"

Эрик Реймонд, Искусство программирования для Unix
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704772
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждение перешло в курилку :o)
Слышал еще такую аналогию:
SQL работает со множествами, а ООП с объектами. Объекты и множества отдаленно похожи, как например стая селедки похожа на кита, если смотреть через эхолот. Но вот не стоит селедку ловить с использованием гарпуна, а кита ловить используя сеть, или удочку.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704865
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoDimonkaАга. Если ООП не нужно, тогда и Delphi нафик не нужён.Не ага. Речь не шла про ненужность ООП как такового.
Речь шла про использование ООП по назначению .
Попытка притянуть за уши ООП в описание бизнес-сущностей - тупосць. В любом случае это будет не ООП, а фарс и посмешище.
Ну давай рассмотрим гипотетический пример. У тебя есть: Пользователи, Клиенты, Заказы, Элементы заказа, Товары на складе итд.
Используя ORM и ООП ты пишешь примерно следующий код:
Код: pascal
1.
2.
3.
4.
5.
Client := Manager.Find<TClient>(ClientID);
Order := Client.Orders[0];
for Item in Order.Items do
  if not Item.WarehouseItem.IsAvailable then
    raise EOrderError bla bla


А теперь напиши всё тоже самое "без ООП". :-)
...
Рейтинг: 0 / 0
25 сообщений из 84, страница 2 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Базовый класс для бизнес-сущностей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]