Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Компонент имеет публичные методы - это формы, приватные методы - это хранимые процедуры и атрибуты - это поля и таблицы. И по уникальному идентификатору может вытащить все поля и все таблицы для просмотра или редактирования. И если у какого-то объекта есть объектный атрибут определенного класса и данный объект вызывает его метод (например, накладная имеет атрибут вещь, у которого вызывает метод взять текущую цену), то в этот атрибут можно подставить ссылку на любой наследник этого класса (например, наследники вещи - это товар, услуга) и если у наследника перекрыт метод определения текущей цены, то будет вызван перекрытый метод. И для этого используется специальный механизм. А методом является обычная хранимая процедура. И все эти механизмы используются неявно, разработчик может и не подозревать о их наличии, хотя лучше это понимать :-) Вот вам и полиморфизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 13:05 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Решил поднять тему, так как кое что изменилось за последнее время. В данный момент совсем нет времени заниматься системой. Все остановилось на полушаге от готовности. 1. Почти что есть автоформы, достаточно посидеть один-два дня и все будет готово, но взять эти два дня негде. 2. Последнее время была реализована система разделения прав. 3.Была переписана система папок для хранения объектов, теперь объект может находится не в одной, как раньше а в нескольких папках, хоть во всех. 4.Была реализована система поиска объектов на основе метаданных. Еще хотелось бы реализовать: 1. Систему скриптования объектов (и классов в том числе) 2. Класс таблица - для создания и изменения таблиц через интерфейс с учетом версионности и при наличии данных в таблице. 3. Создать класс процедура - для создания и модификации хранимых процедур тоде через интерфейс системы и тоже с учетом версионности. 4. Класс проект, через который определять версионность предыдущих объектов. Может найдется человек, готовый вложить во все это деньги, чтобы привести систему к товарному виду. На сайте, который упоминался выше находится устаревшая информация, поэтому обращайтейсь по емайлу, указанному в профиле. Тем не менее система уже в данный момент позволяет заметно облегчить разработку прикладных задач в ОО-стиле. Мною реализована на моем же ядре мини-СРМ система для одной конторы, которая торгует рекламной продукцией, что позволило отладить фреймворк, исправить некоторые ошибки, как баги, таки и концептуальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 10:48 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ну и как в ней лучше реализовать, так сказать аналоги, объектов 1С: 1. Константа ( в т.ч. периодическая) 2. Справочник (с иерархией и без, возможно с периодическими реквизитами, возможно подчиненный) 3. Документ (желательно с табличной частью, лучше несколькими) 4. Регистр (оборотов, остатков) 5. Бухгалтеркиие итоги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 12:47 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Да никаких проблем. В вашем распоряжении вся мощь сервера MSSQL2000 К одному объекту можно привязать неограниченное количество таблиц. По созданию процедур ограничений тоже никаких. Пример создания вышеперечисленных сущностей. 1. Константа Определяем сущность - например, настройки. Для интерфейса таблиц создавать не надо. Наименование будет в таблице Objects, наследуем от класса DBObject. Для хранения констант заводим таблички Constant_Names ( OID int, ID int identity, Constant varchar(32), Name varchar(128), primary key clustered ( OID, ID ) ) Constant_Values ( ID, Date, Value varchar(255) ) создаем 4 процедуры для подтаблички объекта. В результате в интерфейсе видим объект класса DBOSettings с наименование "Настройки" Открываем его для просмотра/редактирования, видим в шапке наименование и ниже на закладке грид с константами, которые можно править, причем значения будут хранить историю. И все это можно использовать в других объектах. 2. Справочник уже есть с иерархией, причем множественной, если от справочника нужно только наименование и идентификатор, то достаточно зарегистрировать новый класс, можно прямо через интерфейс. Если необходимы еще поля, создаем таблицу по аналогии выше. таблица может быть связана как один-к-одному, тогда доп.атрибуты будут в шапке формы либо как многие-к-одному, тогда это будет грид в закладке. Закладок можно создавать сколь угодно много, в пределах разумного. 3. По документу тоже самое. 4. И т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 13:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
> 2. Последнее время была реализована система разделения прав. и > 3.Была переписана система папок для хранения объектов, теперь объект может > находится не в одной, как раньше а в нескольких папках, хоть во всех. Подробнее (на уровне структуры) можно (если есть время)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 13:28 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Система прав представляет собой матрицу Object, Method, User Под методом подразумевается форма. Формы бывают всякие, какие зарегистриешь такие и будут. В разрезе атрибутов не делал, не вижу необходимости. Проще отдельными формами контролировать. Каждый отдельный пользователь имеет логин для доступа со своими правами. Все пользователи имеют доступ на выполнение только хранимых процедур. Адимнистратор имеет полный доступ. Объект - это запись в таблице Objects, папка наследуется от объекта и имеет доп. таблицу Folder_Objects ( OID, ObjectOID ), соответсвенно в любую папку можно поместить сколько угодно объектов. Есть еще таблица FolderTree, в которой хранится развернутая иерархия папок. По ней можно быстро определить имеет ли отношение к папке объект. То есть хранится запись принадлежности объекта папке, ее родителя, родителя ее родителя и так до верху. Это позволяет не делать обходы деревьев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 14:10 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Смущает то, что система, похоже, упрощает только проектирование клиентской части приложения. Что же касается серверной части - тут всё, наоборот, становится только хуже. 1) Для каждого нового класса приходится писать методы создания, удаления, редактирования. Вроде, так, или я не прав? 2) Основная писанина в нормально спроектированном приложении происходит на сервере. Вот и вопрос - эта самая объектность на сервере как-то видна? Или просто заключается в неком наборе соглашений по именованию ХП? До сих пор здесь были приведены только примеры работы с объектами из клиентской части. Всё, что на сервере - использует обычные инсёрты, апдейты и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2005, 14:08 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old Nick Спешу поделиться своей радостью Что еще за ядро? Ядро чего собственно? Что оно будет делать? OQL запускать и их выполнять? Или вызывать какие-то проги? В последнем случае это не ядро, а какая-то библиотека или компонент каких много. А ядро то, что будет реально проги выполнять - ядро СУБД. Кроме того, наверняка в Юконе есть поддержка пользовтельских объектов. Т.е. оно и есть объектное ядро. Концепция не ясна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2005, 17:59 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Так_забежал_простоСмущает то, что система, похоже, упрощает только проектирование клиентской части приложения. Что же касается серверной части - тут всё, наоборот, становится только хуже. 1) Для каждого нового класса приходится писать методы создания, удаления, редактирования. Вроде, так, или я не прав? 2) Основная писанина в нормально спроектированном приложении происходит на сервере. Вот и вопрос - эта самая объектность на сервере как-то видна? Или просто заключается в неком наборе соглашений по именованию ХП? До сих пор здесь были приведены только примеры работы с объектами из клиентской части. Всё, что на сервере - использует обычные инсёрты, апдейты и т.д. Для меня никогда не было проблемой писать серверный код, но всегда доставало при этом на каждый чих описывать клиентские изменения/дополнения. К тому же если нет стандартного способа доступа клиента к серверу, то отслеживать какие-то ограничения затруднительно. Кто-то с клиента через ХП работает, а кто-то напрямую. Ядро эту часть берет на себя. Здесь даже формы создавать не нужно, хотя это и не закрыто специально. Объектность на сервере именно в виде различных соглашений. Это правила создания таблиц, процедур, правила их наименования и использования. Чтобы получить истинную объектность с инкапсуляцией, нужно создавать ООЯ с компилятором, который переводил бы ОО-код в T-SQL, это не сложно, но на это нужно время и деньги. Да и смысла в этом сейчас уже нет, так как есть Cache. Для создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит. Для реализации ОО на сервере есть такие вещи как таблица иерархии классов, в который нужно новый класс зарегистрировать. Это дает возможность среди практически одинаковых объектов, находящихся в одном наборе таблиц, но имеющих разную природу отсекать лишние. Допустим построить отчет по объектам только этого класса и его наследников. Кроме того это дает полиморфизм. Допустим, описываем класс документ (абстрактный) и в нем метод ИзменитьСтатус. В этом методе пишем динамический вызов хранимой процедуры конкретного класса определив его по идентификатору, являющемуся аналогом This/Me/Self. А процедуру ИзменитьСтатус дергает какой-то другой механизм, ничего не знающий о наследниках документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 07:18 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
2OldNick Не так много дельных разработок - зато трепачей развелось... Поддерживаю ! если использовать только готовое - какие мы нахрен программисты ! SQL-писатели.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 10:16 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Сейчас я работаю с похожей системой. Это полноценная ЕРП система с сервером MSSQL2000 и клиентом на С++. Пишем только на T-SQL. Недостатки на мой взгляд отсутствие полноценного наследования, хотя в какой-то мере оно есть. И нет полиморфизма, как раз из-за отсутствия типизации. Но тем не менее эта система стоит почти на всех пивзаводах бывшего СССР. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 10:46 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickОбъектность на сервере именно в виде различных соглашений. Это правила создания таблиц, процедур, правила их наименования и использования. Чтобы получить истинную объектность с инкапсуляцией, нужно создавать ООЯ с компилятором, который переводил бы ОО-код в T-SQL, это не сложно, но на это нужно время и деньги. Да и смысла в этом сейчас уже нет, так как есть Cache. Если нет смысла - тогда зачем вообще Ваше объектное ядро? Перечислите Ваши цели и задачи. И что конкретно упростилось с появлением этого ядра. При этом соглашения об именовании ядром я бы не считал - это, скорее, инструкция по проектированию системы в объектных терминах, а ядро и инструкция - вещи разные. Все вызовы методов из клиента в этом "ядре", по-моему, можно заменить на прямые вызовы соотв. процедур - ничего не изменится. Old NickДля создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит. Вот этот самый генератор - уже больше похож на часть (малую) настоящего объектного ядра. Old NickКроме того это дает полиморфизм. Допустим, описываем класс документ (абстрактный) и в нем метод ИзменитьСтатус. В этом методе пишем динамический вызов хранимой процедуры конкретного класса определив его по идентификатору, являющемуся аналогом This/Me/Self. А процедуру ИзменитьСтатус дергает какой-то другой механизм, ничего не знающий о наследниках документа. Нет. Это не полиморфизм. Опять-таки, это инструкция по реализации полиморфизма. Вы в дельфях каждый раз описываете такой метод, забабахиваете в него begin if ClassName = 'class1' then class1(Self).DoSmth ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 22:51 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Так_забежал_просто Если нет смысла - тогда зачем вообще Ваше объектное ядро? Перечислите Ваши цели и задачи. И что конкретно упростилось с появлением этого ядра. При этом соглашения об именовании ядром я бы не считал - это, скорее, инструкция по проектированию системы в объектных терминах, а ядро и инструкция - вещи разные. Все вызовы методов из клиента в этом "ядре", по-моему, можно заменить на прямые вызовы соотв. процедур - ничего не изменится. Цель - облегчить разработку интерфейса. Так_забежал_простоНет. Это не полиморфизм. Опять-таки, это инструкция по реализации полиморфизма. Вы в дельфях каждый раз описываете такой метод, забабахиваете в него begin if ClassName = 'class1' then class1(Self).DoSmth ... ? Это можно легко сделать с помощью макроса. Я имею ввиду прекомпилятор для T-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 23:58 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickЦель - облегчить разработку интерфейса. Да, можно немного упростить, согласен. Но совсем чуть-чуть - только разве карточки просмотра и редактирования объекта. Да и то нужны метаданные - какие поля пользователь видит, какие - нет. Old NickЭто можно легко сделать с помощью макроса. Я имею ввиду прекомпилятор для T-SQL Ну да, можно. Тогда это станет некой незамысловатой разновидностью объектного ядра ;) А вообще, есть у меня хороший знакомый, который почти один написал ядро с автоматической генерацией таблиц по метаданным в виде xml, сделал почти 3-звенку, т.е. передаёт на клиент описания интерфейса, сделал нормальный полиморфизм с наследованием... Так что есть куда расти :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 09:47 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
У меня тоже есть знакомые, которые аналогичные вещи сделали. 1. NEXUS. Автоформы, все на T-SQL в ОО стиле 2. Ontario. Все в ОО стиле без метаданных 3. A2. Полностью на метаданных, полноценное ОО, но без клиента 4. MonolitSQL. Собственная среда разработки. Неполноценное наследование, отсутствие полиморфизма. Все эти системы имеют инстансы в организациях. И вполне успешно работают. Я пытаюсь вобрать все самое лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:10 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
а ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:21 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Вообще приветствую подобные системы (есть в некоторых организациях), позволяющие разделить (объединить) проектирование базы с кодированием и облегчающие жизнь разработчику. Например... "Словарная система" совместно c "DelphiScript"... Один у них недостаток - ставят разработчика в более узкие рамки и позволяют легко менять его в случае нужды.... и соотвестственно зарплата у разработчика падает.. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:49 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:00 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Долго думал. Так и не понял, как соотносятся пункты http://dbobjects.narod.ruАрхитектура системы двухуровневая. Вся логика приложения находится на сервере и http://dbobjects.narod.ruкомпонент TDBObject <...> полностью инкапсулирует в себе объект базы данных, предоставляет доступом к атрибутам и методам, а также управляет формами объекта, виртуальными методами и разграничением прав доступа в разрезе пользователя создавшего объект TDBObject находится на клиенте. Так? И управляет разграничением прав доступа. Так? А если я зайду в базу через свой клиент - никакой TDBObject больше не будет ограничивать мой доступ. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Если зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:35 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickДля создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит. Old NickЕсли зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение Ответьте пожалуйста на несколько вопросов. Генератор тривиальных процедур пока еще не готов? Правильно ли я понимаю, что проверка прав доступа реализуется вручную, основываясь на метаданных вашего ядра? Есть ли причина, по которой вы решили не реализовывать разграничение доступа, предоставляемое сервером? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 20:34 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
1. Генератор процедур не готов, так как я сейчас доделываю более нужные вещи. Хотя генератор я однажды уже делал и с серверным кодом и с клиентским, где-то валяется, но он не имеет ценности пока не сделаю единую среду разработки. 2. Не понял, что значит вручную? Есть механизм назначения прав, ядро используя этот механизм определяет, что давать пользователю, а что нет. Прикладному программисту ничего для этого делать не нужно. 3. Причина есть. Это невозможность дать ограничение на доступ к записи. У меня же каждый объект является записью, соответственно на каждую запись (объект) можно дать право на различные действия различным пользователям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 10:14 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ранее было сказано, что ядро нужно только для упрощения проектирования интерфейса. Я лично не думаю, что такое ядро сильно упростило бы клиентский код, т.к. вызовы "методов" легко заменяются на прямые вызовы соответствующих ХП, но это личное дело каждого. Теперь оказывается, что ядро также должно проверять права доступа. Автоматически. На сервере. При этом генератор даже простейших ХП не готов. Как??? Как ядро автоматически будет проверять права, если все ХП пишет прикладной программист? А права на их вызов есть у всех? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 10:45 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Система не имеет абсолютной защиты. Разграничение прав выполняет клиент, проверяет какие формы можно показывать пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 11:44 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickСистема не имеет абсолютной защиты. Разграничение прав выполняет клиент, проверяет какие формы можно показывать пользователю.Как это коррелирует с Old NickЕсли зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение? Именно поэтому у меня и возникли вопросы. Old Nick2. Не понял, что значит вручную? Есть механизм назначения прав, ядро используя этот механизм определяет, что давать пользователю, а что нет. Прикладному программисту ничего для этого делать не нужно.Вручную, это значит, что разработчик ХП должен правильно обратиться к метаданным вашего ядра (написать, как минимум, соответствующий вызов процедуры) и обработать результат, например сгенерировать ошибку. BTW, а механизм назначения прав на запись что из себя представляет? Администратор должен явным образом раздавать права пользователю/группе/ветви иерархии пользователей? Ядро поддерживает настройку политики умолчаний, хотя бы в виде флага (все, что явно не разрешено запрещено/все, что явно не запрещено - разрешено)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 12:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33023320&tid=1545838]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
130ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 486ms |

| 0 / 0 |
