|
|
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDi, а можете коротенький пример кода как у вас это реализовано ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2018, 22:07 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
КотовасияwsnetКотовасия, а Read Commited не хватит ? Ну, если ты уверен, что в поцессе формировпния клиентского датасета никто другой не закоммитит изменения - хватит. Жадачи могут быть разными. Представь, что ты для формирования отчеты часть данных загрузил позавчера, а часть - сегодня. Наверное, такое допустимо в период новогодних праздников, когда никто больше не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2018, 22:09 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnet, неа, нельзя коротенько... Если на словах: подгружается объект, передается на форму, на форме данные из объекта грузятся в контролы, пользователь редактирует, при сохранении данные из контролов сохраняются в объект, проверяется корректность, подгружается текущая версия объекта и проверяется, были ли изменени, сохраняется объект в базу. Форма закрывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2018, 22:25 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 06:50 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetJaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ? В это время стоит таймер, который проверяет изменения и подгружает их в открытые журналы/справочники, если что-то поменялось (например, оставил программу на пол дня, а потом решил поработать). В карточках для редактирования ничего не подгружается, только предупреждение -- данные на момент открытия. Кроме того для важных данных есть еще всплывающие уведомления пользователей, мол их задача или заказ был изменен, кликните сюда для перехода. Короче, стандартный функционал, который есть во многих CRM/ERP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 09:25 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetJaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ? Вообще, часто ничего такого и не нужно. Ну, прикинь, тётя Маша редактировала полдня документ, а потом, при попытке нажать "Сохранить" вдруг узнала, что дядя Петя что-то поменял раньше нее. И что ей делать - принять к сведению, идти ругаться с Петром или забить на свою работу? Пустой гемор на ровном месте. ... При создании документа ничего не нужно делать, ибо документ существует только на клиенте, никто его не сможет испортить. При редактировании - скорее всего, документ принадлежит его создателю, то есть - "кто создал, тот и правит", то есть, все кто не лень не смогут влезть. Т.обр., вопрос чисто организационный, и "проблемы" нет. А если нужно все же дать возможность что-то менять нескольким юзерам - тут варианты разные. Например: 1. "Кто последний нажал Сохранить - тот и прав". Совершенно ничего страшного в этом нет, главное - предупредить людей об этом. 2. Автоматически выставляется флажок "документ редактируется Марией Ивановной", все остальные могут только смотреть. Если МарьИванна ушла на обед и не вернулась (а работать с документом нужно"), флажок можно сбросить (с регистрацией сего непотребства в логе, если очень хочется). Флажок может сбросить либо админ, либо кто-нибудь из группы юзеров, допущенных до редактирования документа. 3. и т.п. Мы и так, и сяк, и эдак делали. Никакой разницы с т.зр. эксплуатации, но чаще всего "вариант 1". Если документ - сложная структура, то, возможно, "вариант 2": юзеру проще принять, что документ в его монопольном доступе. Юзеры - они народ терпеливый. Что им подсунешь, то они и съедят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 09:49 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
чччД__, Jadi спасибо, что делитель опытом! чччД__, если я реализовать хочу второй вариант - то кто первый открыл документ для правки - того и тапки? То есть нужно хранить с документом поле статус и ФИО редактора формы? А ежели я хочу реализовать права работы с документом - то понадобится реализовать еще и группу для редактирования? А как организовать группу - это лучше делать на уровне СУБД или на клиентском уровне? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 10:36 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
Ну не буквально я имею ввиду ФИО редактора формы, а его ID конечно же! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 10:37 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
чччД__2. Автоматически выставляется флажок "документ редактируется Марией Ивановной", все остальные могут только смотреть. Если МарьИванна ушла на обед и не вернулась (а работать с документом нужно"), флажок можно сбросить (с регистрацией сего непотребства в логе, если очень хочется). Флажок может сбросить либо админ, либо кто-нибудь из группы юзеров, допущенных до редактирования документа. Идея мне нравится, только, ИМХО, лучше сделать что если документ не правится в течении X минут (выбирается админом системы), то сохраняется в черновик и статус "редактируется" сбрасывается сам. А при открытии черновика проверяется, были ли изменения исходного документа, и если были то открывается и новая версия и черновик в отдельном окне, с возможностью переноса выбранных изменений в основной документ. Да, так сложнее, зато удобнее пользователю НМВ :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 10:48 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
Пишу файловую базу данных. Объясните, что такое файлы Программерский фольклор wsnet... пример кода как у вас это реализовано ? Позвольте вмешаться... wsnet, судя по вопросам опыт в Delphi у Вас не большой. По этой причине сильно рекомендую, сосредоточится на изучении стандартных подходов с использованием TDataModule-TDataSet-TDataSource и не придумывать свой неповторимый стиль (пока во всяком случае). Всегда найдется задача которую лучше решить иными способами, но для 90% случаев стандартный подход вполне годен. Кроме того это сильно упрощает жизнь последователям, которые будут поддерживать и развивать Ваш код (людей, которые знают про TDataSet много, а про вашу объектную модель бизнес сущностный знает ровно 1). Кроме того вопросы общего характера, типа как бы мне организовать архитектуру заранее обречены на флуд и холивары, т. к. чтобы дать более мене вменяемый ответ нужно очень хорошо разбираться в предметной области, организации вашей компании и прочей куче вещей о которой ни кто не знает. В результате все будут заниматься домыслами и выдавать рекомендации на основе своего личного опыта/задачи/конторы. То, что для одного будет вполне верно и очевидно, для другого буде абсолютным бредом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 11:00 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetКоллеги, использовал в своих программах бизнес-сущности, типа Код: c# 1. 2. 3. 4. В итоге поняв, что это ни что иное как DataSet, сделал: ... Например как с помощью них реализовать поиск по имени? Если уж действительно хочется "бизнес-сущности" с преферансом и томными барышнями, то можно начать пользоваться каким-нибудь ORM. Например Aurelius или от DevEx. Первый мне прям очень нравится. Не без недостатков, но очень такоой рабочий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 12:27 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
roschinspb, опыт есть, но он таки связан с формошлепством, вот и ищу другие подходы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 13:50 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
по сабжу: полнейший бред и тупосць. Не нужно тулить ООП туда, для чего оно не предназначено. зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 14:07 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetroschinspb, опыт есть, но он таки связан с формошлепством, вот и ищу другие подходы. Переходите к даташлёпству :o) Писать свою компонентную модель, фреймворк и т.д. в реальном проекте можно только когда есть четкое понимание, того как должно быть и что своя модель будет радикально лучше стандартной, т.е. на столько лучше, что сферический Вася Пупкин предпочтет тратить своё время на её изучение, а не накидает DataSet-ов которые он и так знает. Обычно такое понимание приходит когда уже много что сделано на стандартных компонентах. Смотрите исходники TPersistent, TCollection, TStrings, TActionList. Подумайте почему, зачем сделано так а не иначе, может какие идеи для себя почерпнете. Это как бы совет от человека, который программировал когда небо над Невой еще чернело от птеродактелей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 14:20 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
L_argoпо сабжу: полнейший бред и тупосць. Не нужно тулить ООП туда, для чего оно не предназначено. зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :) Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 15:50 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetL_argoпо сабжу: полнейший бред и тупосць. Не нужно тулить ООП туда, для чего оно не предназначено. зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :) Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 А, так ты не просто из тех, кто скл осилить не в состоянии, а особо упоротый... Ну, феллируй. В энтерпрайз попадешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 17:58 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
чччД__, ни о чем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2018, 19:01 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetL_argoпо сабжу: полнейший бред и тупосць. Не нужно тулить ООП туда, для чего оно не предназначено. зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :) Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 Там же русским по белому написано "для этой задачи это не нужно". Так что все таки "НЕ". :) Хотите научиться удалять гланды автогеном ? ОК, бро... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2018, 09:22 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
L_argowsnetпропущено... Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 Там же русским по белому написано "для этой задачи это не нужно". Так что все таки "НЕ". :) Хотите научиться удалять гланды автогеном ? ОК, бро... Ага. Если ООП не нужно, тогда и Delphi нафик не нужён. Пущай автор голым SQL-ом обойдётся. Декларативненько так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2018, 14:16 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
Банальная пустая форма уже ООП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2018, 17:05 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
эндиБанальная пустая форма уже ООП не обязательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2018, 17:08 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
DimonkaАга. Если ООП не нужно, тогда и Delphi нафик не нужён.Не ага. Речь не шла про ненужность ООП как такового. Речь шла про использование ООП по назначению . Попытка притянуть за уши ООП в описание бизнес-сущностей - тупосць. В любом случае это будет не ООП, а фарс и посмешище. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 09:20 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
"ОО-языки упрощают абстракцию, возможно, даже слишком ее упрощают. Они поддерживают создание структур с большим количеством связующего кода и сложными уровнями. Это может оказаться полезным в случае, если предметная область является действительно сложной и требует множества абстракций, и вместе с тем такой подход может обернуться неприятностями, если программисты реализуют простые вещи сложными способами, просто потому что им известны эти способы и они умеют ими пользоваться. Все ОО-языки несколько склонны "втягивать" программистов в ловушку избыточной иерархии. Чрезмерное количество уровней разрушает прозрачность: крайне затрудняется их просмотр и анализ ментальной модели, которую по существу реализует код. Всецело нарушаются правила простоты, ясности и прозрачности, а в результате код наполняется скрытыми ошибкми и создает постоянные проблемы при сопровождении. Данная тенденция, вероятно, усугубляется тем, что множество курсов по программированию преподают громоздкую иерархию как способ удовлетворения правила представления. С этой точки зрения множество классов приравнивается к внедрению знаний в данные. Проблема данного подхода заключается в том, что слишком часто "развитые данные" в связующих уровнях фактически не относятся у какому-либо естественному объекту в области действия программы - они предназначены только для связующего уровня. Одной из причин того, что ОО-языки преуспели в большинстве характерных для них предметных областей (GUI-интерфейсы, моделирование, графические средства), возможно, является то, что в этих областях относительно трудно неправильно определить онтологию типов. Например, в GUI-интерфейсах и графических средствах присутствует довольно естественное соотвествие между манипулируемыми визуальными объектами и классами. Если выясняется, что создается большое количество классов, которые не имеют очевидного соответствия с тем, что происходит на экране, то, соотвественно, легко заметить, что связующий уровень стал слишком большим. " Эрик Реймонд, Искусство программирования для Unix ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 10:12 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
Обсуждение перешло в курилку :o) Слышал еще такую аналогию: SQL работает со множествами, а ООП с объектами. Объекты и множества отдаленно похожи, как например стая селедки похожа на кита, если смотреть через эхолот. Но вот не стоит селедку ловить с использованием гарпуна, а кита ловить используя сеть, или удочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 10:30 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
L_argoDimonkaАга. Если ООП не нужно, тогда и Delphi нафик не нужён.Не ага. Речь не шла про ненужность ООП как такового. Речь шла про использование ООП по назначению . Попытка притянуть за уши ООП в описание бизнес-сущностей - тупосць. В любом случае это будет не ООП, а фарс и посмешище. Ну давай рассмотрим гипотетический пример. У тебя есть: Пользователи, Клиенты, Заказы, Элементы заказа, Товары на складе итд. Используя ORM и ООП ты пишешь примерно следующий код: Код: pascal 1. 2. 3. 4. 5. А теперь напиши всё тоже самое "без ООП". :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 12:47 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39703218&tid=2040386]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 425ms |

| 0 / 0 |
