powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Люди, свершилось я создал объектное ядро 2
25 сообщений из 143, страница 1 из 6
Люди, свершилось я создал объектное ядро 2
    #34715998
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Пару лет назад я открыл топик вот здесь

С последнего поста прошло 2 года. Хотелось бы поделиться своими достижениями.
Проработал я 2 года в компании, автоматизирующей Балтику и не только её.
Получил бесценный опыт по части проектирования и реализации структур и процедур для
больших объёмов данных, ну очень больших. Как следствие тонкая оптимизация запросов и
многие другие хитрости.

Работать было тяжело, нагрузки очень большие, никаких праздников (только Новый год 3 дня),
выходные редкость. Связано это было с тем, что изначально система спроектирована была очень
плохо, коллектив не менялся очень давно (15 лет), многие(большинство) работают там со дня
основания, поэтому альтернативного мышления там нет. Что такое ООП никто не знает. То что
архитектура гораздо больше влияет на производительность системы, чем тонкая оптимизация
процедур тоже никто не знает. В результате я уволился как только купил квартиру, платили
там хорошо.

Помыкался я по конторам на зарплаты мне соответствующие и остался ни с чем. Полный
непрофессионализм коллег просто убивает. Системы проектируют те, кто даже интерфейс
проектировать не умеет. Простой пример: форма для создания новой сущности, справочные данные
выбираются комбобоксом, значения, которое нужно выбрать, в справочнике ещё нет.
Значит форму нужно закрыть, так как программа одновременно две формы показывать не может!!!!
Открыть форму справочника, ввести туда это значение. Закрыть. Открыть прежнюю форму ввода
сущности. Заново ввести все данные. Открыть комбобокс и... выматериться, потому что нового
значения в справочнике почему то нет. Эти идиоты кешируют справочники на клиенте. В результате
только после перезагрузки приложения новое значение в справочнике подхватывается.

И это делают за зарплаты от 2000 ЮСД. С такими коллегами я работать не хочу.

Устроился я на работу в торговую фирму в маленький отдел ИТ. Взяли за маленькую зарплату.
Больших там просто нет. И за 3 месяца с нуля создал то самое ядро. И на этом ядре сделал
ещё одно ядро для настройки бизнес-процессов. И вот теперь все договора фирмы проходят
процесс согласования только в электронном виде.

Что сейчас представляет из себя система.
Дельфи 7 и 2000 скуль. Двухуровневая клиент-серверная. Каждое клиентское место это одна
коннекция на сервере с собственным логином. Права пользователю даются только на вьюхи
и хранимые процедуры. Вьюхи с инстед ов триггерами. Все таблицы, вьюхи, триггера и процедуры
генерируются автоматически на основании метаданных. Любую из структур разработчик может
перекрыть своей собственной.
Разработка сводится к регистрации класса, регистрации полей класса, регистрации дочерних
таблиц и их полей. Затем вызывается хр. процедура Compile с указанием класса. Все структуры
пересоздаются, даже если в талицах уже есть пользовательские данные. Данные просто
переливаются в новые структуры.

Клиент это MDI приложение, в котором есть форма-проводник, через которую можно получить
доступ к любому объекту. А также формы объектов. На форме объекта имеется шапка - это
контрол TDBOEdit - панель для отображения полей одной записи датасета. Все описание берет
из TField. Под шапкой находится TPageControl на каждой закладке которого располагаются
либо TDBOGrid либо TDBOEdit для дочерних данных.

Все компоненты мои собственные, TDBOGrid наследуется от TDBGridEh, так что функционала там
предостаточно. Основная форма объекта в приложении это TAutoForm, которая для отображения
данных объекта берет описание из метаданных. Разработчик может использовать свои собственные
формы с любыми другими контролами, главное чтобы наследовалась от TBaseForm.
Форма регистрируется в метаданых, поэтому система сам знает какую форму открыть для каждой
операции объекта.

Всё работает очень быстро. На глаз даже незаметно, когда приложение подгружает метаданные.

Что есть в системе. Кроме ООП и метаданных имеется:

1. Разграничение прав доступа на уровне объекта, операции и пользователя. Пользователи
связаны с ролями, причём иерархически. Права можно давать как роли так и пользователю.
Права даются на каждую операцию для каждого объекта (записи) Можно давать шаблонные права,
т.е. не объекту, а классу, все объекты наследуют права класса, плюс могут иметь ещё и свои.
По-умолчанию прав нет. Только у админа права не проверяются.

2. Событийная система. Разработчик в методах может возбуждать событие. Например в процедуре
создания объекта сделать такой вызов exec Event_Throw 'Create', @OID
'Create' - это зарегистрированное событие - объект, привязанный к классу.
@OID - ссылка на созданный объект (Self в паскале)
И если к данному событию привязаны какие-либо обработчики - методы, являющиеся объектами
описывающими хранимую процедуру, то они будут вызваны.

3. Система поиска, позволяющая найти любой объект по любому его атрибуту, форма для ввода
параметров и скрипт поиска генерятся автоматически по метаданным.

4. Система скриптования. Очень полезная вещь, когда вы на рабочей базе создали какие-то
настроечные данных и убедились, что всё работает, приходит время когда это нужно перенести
на рабочую базу. Какие есть пути? Повторить весь процесс настройки руками на рабочей базе,
написать вручную скрипт для создания данных. Какова вероятность ошибки?
Так вот система скриптования позволяет нажатием одной кнопки получить скрипт любого объекта
плюс всех связанных с ним объектов с гарантией однозначности.

5. Настройка бизнес-процессов. Позволяет настроить для любого объекта набор статусов,
набор переходов от статуса к статусу, участников процесса, параллельное и последовательное
прохождение статусов. Каждый переход описывается операцией, которая состоит из набора
функций (объектов). Каждая функция делает какую-либо простую задачу (например меняет статус,
отправляет сообщение по Email, даёт права на объект следующему участнику процесса).
Разработчик может создавать любые новые функции. Выполнение функций происходит по шагам,
по результату выполнения возможен переход на любой другой шаг (запросто можно делать циклы
и сложную логику). То есть более высокоуровневое программирование, которое может делать
администратор либо настройщик бизнес-процессов.

6. Автообновление системы. В одном месте выкладываете CAB файл с новой версией, и программа
у пользователя при запуске сначала сравнит версию и предложит её обновить.

7. Все поля ввода раскрашиваются в цвета в зависимости от свойств поля.
Нередактируемые поля одним цветом
Обязательные к заполнению другим цветом
И остальные третьим цветом
Цвета пользователь может настроить по своему усмотрению.

8. Изменение данных происходит кешированно на клиенте с помощью отсоединенных датасетов
И только по нажатию на кнопку ОК открывается транзакция и все данные с формы отправлются
на сервер. Так что транзакции короткие и блокировки короткие.

И еще очень много вкусностей. А главное, что это полноценная среда разработки.
И всё это я сделал за 3 месяца, сделал и внедрил, то есть за время испытательного срока, а
мне до сих пор не повышают зарплату.

Кому нужна такая система? Могу повторить даже за более короткий срок, но за более высокую
зарплату.
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716326
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Юрьевич тебе своё "добро" дал? Благословил?
друзья зовут меня Красавчег Сёка
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716402
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как фамилия у Дмитрия Юрьевича?
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716434
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick пишет:

> Люди, свершилось я создал объектное ядро 2

Еще один ...

> Кому нужна такая система? Могу повторить даже за более короткий срок, но
> за более высокую
> зарплату.

Думаю никому абстрактная система которая может делать "все" не нужна.
Но вот тебе может быть она нужна для того, чтобы на ее базе делать
конкретные разработки. В свое время мы с такими планами и делали
нашу систему. Могу дать совет - попытаться организовать свою фирму
с такими вот целями. Только АдынЦы шагает по планете семимильными
шагами, а за ними идут АкЦаппы и прочие НоуВижины. А это делает разработку
систем под заказ делом малоперспективным. (мое мнение конечно).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716472
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Old Nick пишет:

> Люди, свершилось я создал объектное ядро 2

Еще один ...

> Кому нужна такая система? Могу повторить даже за более короткий срок, но
> за более высокую
> зарплату.

Думаю никому абстрактная система которая может делать "все" не нужна.
Но вот тебе может быть она нужна для того, чтобы на ее базе делать
конкретные разработки. В свое время мы с такими планами и делали
нашу систему. Могу дать совет - попытаться организовать свою фирму
с такими вот целями. Только АдынЦы шагает по планете семимильными
шагами, а за ними идут АкЦаппы и прочие НоуВижины. А это делает разработку
систем под заказ делом малоперспективным. (мое мнение конечно).
Posted via ActualForum NNTP Server 1.4
Да, многие неплохо жившие на своих самописках(вполне приличных), в последнее время прикупили 1цэ. Видимо вопрос унифицированной раб.силы тоже важен. В коллективах самописчиков есть текучка, есть она и у 1эснегов, но в последнем случае всё как то стандартнее, предсказуемее. Такие вот мнения недавно услышал от сменивших ориентацию.
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716477
Фотография Сиоко Асахара
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickКак фамилия у Дмитрия Юрьевича?
Это отсюда http://www.sql.ru/forum/actualthread.aspx?tid=457660
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716486
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это я знаю, что отсюда. Фамилию кто может сказать? Мне кажется что я знаю человека заочно.
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716509
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv

Само собой разумеется, что прикладные вещи гораздо интереснее, но чтобы их сделать нужно ядро, а на это ядро у меня прав нет, так как они принадлежат работодателю.
Поэтому сначала нужно будет сделать ядро (2 месяца), затем любая прикладуха.

Если внимательнее почитать первый пост, то там написано, что на этом ядре я сделал документооборот.
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716541
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сиоко Асахара пишет:

> Такие вот мнения недавно услышал от сменивших ориентацию.

Ты эта, полегче на поворотах, я ориентации не менял !!

А если и менял, то на более правильную, не 1С.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34716549
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick пишет:

> Само собой разумеется, что прикладные вещи гораздо интереснее, но чтобы
> их сделать нужно ядро, а на это ядро у меня прав нет, так как они
> принадлежат работодателю.

За неприкладные никто наверное денег платить не будет.

> Поэтому сначала нужно будет сделать ядро (2 месяца), затем любая прикладуха.

Ну у тебя же остались наработки
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34717039
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЛюди, свершилось я создал объектное ядро 2
С нетерпением ждем обьектное ядро 3.

авторВсе таблицы, вьюхи, триггера и процедуры
генерируются автоматически на основании метаданных
Мда... Имхо, автогенерация серверного кода на клиенте - признак неумения проектировать системы.

Все остальное - представляет интерес для мамого автора. Что-то может хорошее, что-то нет... - попытка кого-либо еще разработки посредством такого обьектного ядра, как правило, оказывается дороже написания приложения без оной.




Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34717848
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автогенерация кода происходит не на клиенте, а на сервере.
И не в момент выполнения программы, то есть не интерпретация, а именно генерация таблиц, вьюх, хранимок.
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34719139
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickВсе таблицы, вьюхи, триггера и процедуры генерируются автоматически на основании метаданных.
Пример описания на метаданных можно привести ? Например счет-фактуры
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34719906
кщщщй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old Nickа именно генерация таблиц, вьюх, хранимок.Ну и что? Зачем это надо? Какие практические задачи решает?
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34720277
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кщщщй пишет:

> а именно генерация таблиц, вьюх, хранимок.
> Ну и что? Зачем это надо? Какие практические задачи решает?

Как какие ? Программирование без программистов !!
Метаданные -то уже есть.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34720505
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полный непрофессионализм коллег просто убивает ... И это делают за зарплаты от 2000 ЮСД.

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

Определись или деньги ... или удовольствие
Архитектура достаточно похожа на используемую у нас.


______________________________________________________
Ох ! Болят мои крылья ...
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34723588
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример программирования Контракта:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
exec RegisterClass 'Contract', 'Document', 'Контракт'
exec RegisterField 'Contract.ContractType', 'ContractType', 'Тип контракта'
exec RegisterField 'Contract.PayCondition', 'PayCondition', 'Условие оплаты'
exec RegisterField 'Contract.StartDate', 'Date', 'Начало действия', 'null'
exec RegisterField 'Contract.FinishDate', 'Date', 'Действует до', 'null'
exec RegisterField 'Contract.Prolong', 'Boolean', 'Автоматическое продление', 'null'
exec RegisterField 'Contract.Summa', 'Money', 'Сумма', 'null'
exec RegisterField 'Contract.Currency', 'Currency', 'Валюта', 'null'

exec RegisterTable 'Contract', 'Files', 'Прикреплённые файлы'
exec RegisterField 'Contract_Files.File', 'File', 'Файл', 'Key'
exec RegisterField 'Contract_Files.PageCount', 'Integer', 'Кол-во страниц'
exec RegisterField 'Contract_Files.Main', 'Boolean', 'Основной документ', 'null default(0)'

exec Compile 'Contract'
go

exec RegisterFolder 'Contracts', 'Контракты', 'Docs'
exec RegisterClassFolder 'Contract', 'Contracts'

exec RegisterForm 'Contract', 'Create', 'TfrmContractEdit'
exec RegisterForm 'Contract', 'View', 'TfrmContractEdit'
exec RegisterForm 'Contract', 'Edit', 'TfrmContractEdit'
go

exec RegisterPage 'Additive', 'Дополнительно', 'Contract', 'Create', 'Object', 'Edit'
exec RegisterPage 'Additive', 'Дополнительно', 'Contract', 'View', 'Object', 'Edit'
exec RegisterPage 'Additive', 'Дополнительно', 'Contract', 'Edit', 'Object', 'Edit'

exec RegisterControl 'Create', 'Contract', 'Contract.PayCondition', 'Additive'
exec RegisterControl 'Create', 'Contract', 'Contract.StartDate', 'Additive'
exec RegisterControl 'Create', 'Contract', 'Contract.FinishDate', 'Additive'
exec RegisterControl 'Create', 'Contract', 'Contract.Prolong', 'Additive'
exec RegisterControl 'Create', 'Contract', 'Contract.Summa', 'Additive'
exec RegisterControl 'Create', 'Contract', 'Contract.Currency', 'Additive'

exec RegisterControl 'View', 'Contract', 'Contract.PayCondition', 'Additive'
exec RegisterControl 'View', 'Contract', 'Contract.StartDate', 'Additive'
exec RegisterControl 'View', 'Contract', 'Contract.FinishDate', 'Additive'
exec RegisterControl 'View', 'Contract', 'Contract.Prolong', 'Additive'
exec RegisterControl 'View', 'Contract', 'Contract.Summa', 'Additive'
exec RegisterControl 'View', 'Contract', 'Contract.Currency', 'Additive'

exec RegisterControl 'Edit', 'Contract', 'Contract.PayCondition', 'Additive'
exec RegisterControl 'Edit', 'Contract', 'Contract.StartDate', 'Additive'
exec RegisterControl 'Edit', 'Contract', 'Contract.FinishDate', 'Additive'
exec RegisterControl 'Edit', 'Contract', 'Contract.Prolong', 'Additive'
exec RegisterControl 'Edit', 'Contract', 'Contract.Summa', 'Additive'
exec RegisterControl 'Edit', 'Contract', 'Contract.Currency', 'Additive'
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34723998
ну и что?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну и что? куча процедур для различных действий с базой...
а где тут ООП ???
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34724622
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickПример программирования Контракта:
Код: plaintext
1.
exec RegisterField 'Contract.Currency', 'Currency', 'Валюта', 'null'

А где указание на справочник валют ?
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34729422
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Contract.Currency - класс.поле
Currency - тип поля - класс - он и есть справочник
Валюта - caption
null - необязательное поле
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34729886
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так можно: (т.е. дерево)
Код: plaintext
1.
exec RegisterField 'Contract.Contract', 'Contract', 'Контракт', 'null'
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34732250
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, можно. Почему нет.
Такие варианты даже есть
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34732442
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick
ОК. А как это все хозяйство, включая деоевья, отображаются на экране. И как описываются методы классов, на каком языке.
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34732462
Не томи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Показывай картинки скорей, не томи!
...
Рейтинг: 0 / 0
Люди, свершилось я создал объектное ядро 2
    #34732665
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
25 сообщений из 143, страница 1 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Люди, свершилось я создал объектное ядро 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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