|
|
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Спор (если это спор :-) вполне бессмысленен. Есть одни книжки про MDA, а есть другие. Есть UML, а есть UML-2 и Exeсutable UML. Трудно спорить о том, чего не существует. MDA пока нигде не реализована. Тем более, что никто не знает, что это такое (стандарта нет). Есть только приближения, и у каждого разработчика - свое видение. Bold - это, безусловно, не MDA. Bold - это Borland MDA :-) А вообще, приглашаю всех желающих на http://mda.hostok.net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 00:25 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Люди, просто счастлив, что нашел ваш сайт, а особенно ветку уже месяц работаю на BOLD просто великая штука, напсал( почти )проектик с нуля 75 классов, плюс навороты, драг дроп и прочее. А главное работает :). Вот толко один вопросик. Может e кого етсь ссылочка на работающий Bold-Rave? и еще кто нибюудь работал с deBold компонентами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 01:23 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Триалка в RAD - Studio не работает - там *.bpl скомпилирована над Bold - ом 4.0.0.21, а сейчас - 4.0.1.0. Я уж и так и эдак к этим ребятам обращался - ни в какую. Короче - изучил по документации (виртуально, т.сказать :). Пришлось купить. Ну, в общем, эта штука соответствует моим ожиданиям - только вот с саппортом траблы - в Vipper Software какие-то временные оргинизационные сложности. Если будешь покупать - бери сразу Professional, т.к. Standard почему-то откомпилена тоже с 4.0.0.21., а в Professional - все соурсы. Да, если не можешь напрямую заплатить по Vise Standard (and better) - то учти, что эти ребята живут во Влвдивостоке - если что - могу телефон дать. Мне кажется, напрямую платить проще. Я заплатил 29 декабря, платеж через Deutche Bank (охренеть можно!) прошел только 11 декабря. А что тебя с deBold интересует? Вот тут у меня было что-то: автор ===================================== Инструкции для deBoldPropagatorModule.pas ===================================== 1) Наследуйте новый модуль данных от существующего и переопределите: //Mandatory overrides function GetBoldSystemHandle: TBoldSystemHandle; virtual; abstract; function GetBoldModel: TBoldModel; virtual; abstract; 2) В рантайме, если нужен пропагатор, то просто создайте экземпляр вашего нового модуля данных. ===================================== ИНструкции для deBoldAutoForms.pas ===================================== 1) В форме, создаваемой для редактирования вашего объекта, выполните: initialization deBoldAutoForms.RegisterFormClassForElementClass(TPersonForm, TPerson); 2) В событии BoldAFP, чтобы получить класс формы, выполните: Result := deBoldAutoForms.GetFormClassForElement(Element); ===================================== ИНструкции для deAutoIncManager.pas ===================================== ---------------------- Инсталляции в ROSE ---------------------- 1) Установите deBold.PTY в каталог TaggedValues), выбрав Tool->model properties->Add. 2) При импорте в Bold, вы сперва должны добавить deBold в свойство Tools вашего компонента BoldUMLRoseLink. ---------- Применение ---------- Из-за сложности рассмтриваемых компонентов я попытаюсь вкратце описать, как их испольщовать. Первое: Вы должны добавить тег-параметр к атрибуту, который д. стать автоинкрементным. Чтобы это сделать (Из Bold - редактора, перейдите в Tools->Edit Tagged Values. Из следующего окна (должен быть выбран именно тот атрибутd) выполните Tools->Add Tagged Value. Значение "Tool" нужно дял deBold, значение "Name" нужно для AutoIncId, а значение "Value" должно быть вышим собсвенным идентификатором, к примеру, PERSON или PURCHASEORDER. И "deBold", и "AutoIncId" являются регистро - зависимыми. Второе: Класс TdeBoldAutoIncManager является TBoldPersistenceHandlePassthrough. Имеется в виду, что для использования его вы должны указать ваш TBoldSystemHandle.PersistenceHandle для TdeBoldAutoIncManager вместо Вашего действительного persistence handle, а затем указать TdeBoldAutoIncManager для действительного persistence handle путем использования его NextPersistenceHandle. Этот компонент будет перехватывать обновления в persistence перед их выполнением, которые будут разрешать при необходимости назанчать auto-inc числовые значения. Третье: Классс TdeBoldAutoIncManager не назначает числовые значения. Он передает это в производный от TdeAbstractBoldAutoIncProvider класс, с помощью class TdeBoldAutoIncProvider . Вот так это и работает... 1) System.UpdateDatabase; 2) AutoIncManager проверяет все атрибуты новых объектов на предмет наличия тег - параметров deBold.AutoIncId, и помещает AutoIncId в список AutoIncId - ов. 3) Событие OnPrepareAutoIncIdList класса TdeAutoIncProvider вызывается с уникальным списком AutoIncId-ов. Оно дает Вам возможность выполнить предварительную обработку IDs. Вы можете пожелать выполнить пессимистическую блокировку IDs с помощью сервера блокировок или просто можете пожелать убедиться, что все генераторы существуют, перед тем как будете извлекать какое - либо значение из генератора. 4) Для каждого auto-inc - атрибута каждого нового объекта будет вызвано TdeAutoIncProvider.OnGetAutoIncValue . Значение AutoIncId будет передано, и выполучите результат в целой переменной Result, которую выдолжны использовать для определения следующего числа. 5) Событие OnCompleteAutoIncIdList класса TdeAutoIncProvider вызывается с исходным списком уникальных AutoIncId - ов. Это позволяет разблокировать пессимистическую блокировку на ID's, если Вы их перед этим заблокировали, или выполнить другие нужные вещи. ----------- Примечания: ----------- A) При возникновении исключения в OnPrepareAutoIncIdList, OnCompleteAutoIncIdList все еще будет исполняться. B) При возникновении исключении OnGetAutoIncValue, все автоинкрементные значения будут сброшены в ноль (если ResetOnFail = true), а OnCompleteAutoIncIdList будет все еще исполняться. C) За обработку исключения в OnCompleteAutoIncIdList отвечаете вы, и учтите, что данные уже были переданы в следующий дескриптор слоя хранения (похоже на вставку значений в базу данных). D) Чтобы быть уверенным ы обеспечении ссылочной целостности, и в том, что всякие объекты, которые были одифицированы в целях автоинкремента значения, значение должно быть добавлено в той же самой транзакции методом вызова calling AddDirtyObject, AddDirtyObjectList, или AddDirtyObjects. Ну, все, что знал - сказал. (c) - Особенности национальной охоты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 05:44 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
авторЛюди, просто счастлив, что нашел ваш сайт, а особенно ветку уже месяц работаю на BOLD просто великая штука, напсал( почти )проектик с нуля 75 классов, плюс навороты, драг дроп и прочее. А главное работает :). Работает - даже хелло ворд работает, особенно если один пользователь его запускает :) И чего за система, сколько пользователей, какова нагрузка? Написать просто работающую программу - это уже в детских садах пишут. А вот работающую в боевых условиях..... Вот это то интересно. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 12:00 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
2 tygra -------------------- Да ничего не работает, не парься. Сходи, лучше посравнивай "MS SQL vs Oracle", или "преимущество реализации ссылочной целостности в триггерах vs в констреинтах". Нафиг тебе оно нужно - реляционные базы еще долго просуществуют, на хлеб заработаешь. Не забывай только уши брить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 21:37 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Впрочем, сейчас это даже модно - хвастаться растительностью на ушах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 21:40 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
mv А что тебя с deBold интересует? Ну, все, что знал - сказал. (c) - Особенности национальной охоты Readme.txt я тоже читал, спасибо только за перевод. Конкретно меня работа с deBold. как что, может примеры есть. Я ведь " молодой " еще. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 22:44 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Alex Vпроектик с нуля 75 классов, плюс навороты, драг дроп и прочее. А главное работает :). какой кошмар. нафига столько классов ? таблица - класс ? ужас сколько бесполезного и ненужного кода генериться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2005, 01:20 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Lepsik Alex Vпроектик с нуля 75 классов, плюс навороты, драг дроп и прочее. А главное работает :). какой кошмар. нафига столько классов ? таблица - класс ? ужас сколько бесполезного и ненужного кода генериться. Ну что за безапелляционно - декларативные заявления? Ну, с чето ты взял - что тут однозначно таблица = класс? Может и больше, а может - и меньше. Здесь сущность представляется не таблицей, а классом. Ма-а-а - ппинг ("г" - с характерным придыханием)! Вот как это называется. ------------------- По поводу маппинХа. У нас в конторе про проекты, сделанные в Bold for Delphi, говорят - "в балде". Ударение на "а". Протяжное та-акое. Как у клятых москалей. ------------------- А классов там еще больше генерится, чем ты думаешь... ------------------- Как думаешь, почему языки программирования оперируют с объектами, а не с записями? Чтобы глупых студентов запутать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2005, 03:30 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
mvКак думаешь, почему языки программирования оперируют с объектами, а не с записями?2 mv Расскажите пожалуйста как в Bold сделана отчетная система ? Хотя бы тезисно. Интересует следующее: обычно(обычно!) клиент-сервер (РСУБД) приложение на стороне клиента действительно оперирует с объектами, которые далеко не прямо проецируются на РСУБД структуру. Исключение составляют отчеты. Которые очень часто есть фактически красиво нарисованные результаты SQL выборок. Т.е. при построении отчетов оперируют именно что с записями, а не с объектами. А какое решение применяется в Bold ? Будет ли отчет неким отображением коллекции, свойства каждого элемента которой будут выбираться get-ерами из базы ? Или применяется более изящное решение ? Интересует скорее физика построения отчета, а не его описание в рамках модели. Т.е., если можно, ответ не : я рисую класс "отчет", задаю параметры, затем пишу Отчет->Выбрать_все_за период[начало, конец] а что на самом деле происходит при этом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2005, 14:23 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Lepsik Alex Vпроектик с нуля 75 классов, плюс навороты, драг дроп и прочее. А главное работает :). какой кошмар. нафига столько классов ? таблица - класс ? ужас сколько бесполезного и ненужного кода генериться. Необходимо для реализации Полиморфизма и прочего, например есть строка а в ней значениеа e меня 10 -15 разных видов строк. вот и набратлось много классов, Да плюс драг дроп реализовать, изи справочника данные связать. и все. я думаю обоснованно, пока что. ну а так как я еще молод ? мне это простительно, Самое главное в моей ситсеме возможность вставить в строку документа любое значение и сделать это с помощью драг дроп, плюс каждая строка может иметь отображение разное по определению. Вот и взялось много классов. может жто не правильно ? зато по ООП:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2005, 21:20 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Люди, Человеки - вопрос есть: вы каким образом используете автоформы: пишете свой автоформ провайдер или на каждый объект свою форму и используете BoldPlaceableAFP. или вообще не не используете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2005, 21:27 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Использую исключительно при отладке. Мои бизнес - объекты слишком сложны, чтобы их показывать пользователям. Ну, в крайнем случае - генерю свою автоформу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 01:47 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Один ... как в Bold сделана отчетная система ? Хотя бы тезисно. Интересует следующее: обычно(обычно!) клиент-сервер (РСУБД) приложение на стороне клиента действительно оперирует с объектами, которые далеко не прямо проецируются на РСУБД структуру. Исключение составляют отчеты. Которые очень часто есть фактически красиво нарисованные результаты SQL выборок. Т.е. при построении отчетов оперируют именно что с записями, а не с объектами. А какое решение применяется в Bold ? Будет ли отчет неким отображением коллекции, свойства каждого элемента которой будут выбираться get-ерами из базы ? Или применяется более изящное решение ? Интересует скорее физика построения отчета, а не его описание в рамках модели. Т.е., если можно, ответ не : я рисую класс "отчет", задаю параметры, затем пишу Отчет->Выбрать_все_за период[начало, конец] а что на самом деле происходит при этом ? Ваши идеи чрезвычайно интересны. Лично я отчеты созавал всегда по старинке - коллекцию представлял как TDataSet, а дальше все как обычно. Но после ваших слов крепко задумался. ------------------ Еще в Bold есть набор компонентов, позволяющий создавать отчеты напрямую в RAVE, без преобразования в TDataDet. А насчет описания отчета в рамках модели... А почему бы и нет? автор Отчет->Выбрать_все_за период[начало, конец] - а оно все так и работает, вы говорите почти в нотации языка OCL. Только правильный класс описать нужно. Хотя лично мне не нравится привязывать разработку отчетов к метамодели, но идея чрезвычайно интересная - можно создать базовый класс отчет, затем компонент, его визуализирующий, и распечатывающий. А также экспортирующий в RTF/HTML/XLS... Классно. Да, умеют же некоторые товарищи идеями разбрасываться. Теперь опять работать не хочется - об отчетах думать буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 08:17 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Наш ответ Чемберлену автор Отчет->Выбрать_все_за период[начало, конец] - а оно все так и работает, вы говорите почти в нотации языка OCL. Я догадывался, что оно так и работает :) Но это - внешняя сторона, мой же вопрос был в другом. Наверное я плохо объяснил. Есть РСУБД. Есть язык SQL, посредством которого можно работать с сервером баз данных. Других средств для общения с СУБД нет, т.е. на каком то низком уровне MDA приложение все равно генерирует SQL запросы. Идем дальше. SQL язык - язык работы с множествами. В этом его "сила" и суть. Создатели MDA совершенно точно подметили, что есть некая нестыковка между РСУБД и клиентскими приложениями, а именно то, что клиентское приложение работает с объектами, классами, а не результатами множественных выборок (строками). И они (создатели) предложили систему, которая подходит к проектированию со стороны модели. Естественно преимущества SQL при этом теряются, т.к. множествами никто не оперирует. Взамен получаем более легкий/удобный подход к проектированию всего приложения в целом. Во всяком случае так я это понимаю, поправьте меня, если я не прав. Но есть несколько исключений. Одно из них - отчеты (а еще аналитика всякая). Отчеты, как я уже писал - это красиво показанные результаты выборок. Т.е. множества строк. Пример. Допустим есть класс "автомобиль". У него есть какие то свойства. Данные по автомобилям можно получить 2 способами. 1 сделать коллекцию экземпляров класса "автомобиль", в каждом из них вызвать метод GetData, в результате чего к серверу уйдет n запросов вида select * from Auto where id=x. 2 а можно просто сделать select * from Auto и получить какой-нибудь DataSet Первый подход - более "объектный", а второй - более "реляционный" Вот меня и интересует какой применяется в Bold. Когда я пишу Отчет->Выбрать_все_за период что происходит на самом деле ? 1 или 2 ? Или их комбинация ? Или что-то третье ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 14:27 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Один Пример. Допустим есть класс "автомобиль". У него есть какие то свойства. Данные по автомобилям можно получить 2 способами. 1 сделать коллекцию экземпляров класса "автомобиль", в каждом из них вызвать метод GetData, в результате чего к серверу уйдет n запросов вида select * from Auto where id=x. 2 а можно просто сделать select * from Auto и получить какой-нибудь DataSet Первый подход - более "объектный", а второй - более "реляционный" Вот меня и интересует какой применяется в Bold. Когда я пишу Отчет->Выбрать_все_за период что происходит на самом деле ? 1 или 2 ? Или их комбинация ? Или что-то третье ? 1. Можно и так, можно и эдак. Есть специальный метод для класса EnsureObjects (и похожие на него) - который скопом грузит всю коллекцию, за одну сессию. А можно и по одному объекту. Все зависит от задачи. В общем - в зависимости от Ваших религиозных взглядов и Ваших представлениях о структуре Вселенной. Car.allInstances - транслируется в - select * from Car. Car.allInstances->select(color='Бежевый')->orderBy(ModelName) - транслируется в - select * from Car where color='Бежевый' order by ModelName А вот Car.allInstances.at[4] транслируется в более сложный запрос - к таблице объектов, в которой ищется индекс объекта №4, и этот объект выбирается. Впрочем, хотя и к двум (как минимум) таблица - но тоже шустро. А можно и по другому. Действительно, все объекты в память могут загружаются при фактическом к ним обращении. Причем это регулируется вплоть до конкретного атрибута (признак Delayed Fetch). Это тоже поддается управлению. 2. А что ты хотел узнать-то? Включай монитор SQL - запросов, да оптимизируй на здоровье. Можно вообще напрямую SQL - запросами рулить (тьфу - тьфу, мне не понадобилось пока). 3. Меня поначалу тоже такие безобразия интересовали. Индексы, низкоуровневые транзакции и проч. Все просто, как кусок хозяйственного мыла. Просто работает. Шире мыслить нужно, господа девелоперы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 15:02 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Наш ответ Чемберлену 3. Меня поначалу тоже такие безобразия интересовали. Индексы, низкоуровневые транзакции и проч. Все просто, как кусок хозяйственного мыла. Просто работает. Шире мыслить нужно, господа девелоперы! Я и пытаюсь мыслить шире. "Шире" в данном случае подразумевает, что я хочу разобраться, как внутри работает волшебная палочка. Прежде, чем начинать ею размахивать :) На мой вопрос вы ответили, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 15:26 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Alex V Ты вроде как искал работающюю ссылку на Bold-Rave. Вот держы: http://cc.borland.com/ccweb.exe/listing?id=20457 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 19:17 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
kibill Alex V Ты вроде как искал работающюю ссылку на Bold-Rave. Вот держы: http://cc.borland.com/ccweb.exe/listing?id=20457 Спасибо я нашел, думал что и там его нету, ошибку выдавал, а просто сервак занят был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 00:23 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Вот Еще вопросик есть Вычисляемые значения в классах, если их сделать persistant то они все равно не хранятся в базе, а хотелось бы. Есть способы хранить самому но не очень удобно. Кто нибудь разбирался с этой траблой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 00:26 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Не понял. Вычисляемые значения - зачем хранить? Они же вычисляемые! Интересно, а при фетче из базы что бы ты хотел получать - вычисленные значения или сохраненные? :) ---------------- (Ну, заведи спец. атрибут, где будешь хранить результаты вычислений - а как еще?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 08:11 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
ну да в принципе это я и сделаю, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 09:00 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Кто-то интересовался возможностью использования национального набора символов в автоформах и т.д. На днях ворос решен принциапиально - К.Грибачев создал компонент, который просто нужно положить на модуль данных и активизировать - и ... все. Болд заговорил по - русски. Порсмотреть и скачать можно здесь: http://mda.hostok.net/forums/viewtopic.php?t=34 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2005, 21:49 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Один mvКак думаешь, почему языки программирования оперируют с объектами, а не с записями?2 mv Расскажите пожалуйста как в Bold сделана отчетная система ? Хотя бы тезисно. Интересует следующее: обычно(обычно!) клиент-сервер (РСУБД) приложение на стороне клиента действительно оперирует с объектами, которые далеко не прямо проецируются на РСУБД структуру. Исключение составляют отчеты. Которые очень часто есть фактически красиво нарисованные результаты SQL выборок. Т.е. при построении отчетов оперируют именно что с записями, а не с объектами. А какое решение применяется в Bold ? Будет ли отчет неким отображением коллекции, свойства каждого элемента которой будут выбираться get-ерами из базы ? Или применяется более изящное решение ? Интересует скорее физика построения отчета, а не его описание в рамках модели. Т.е., если можно, ответ не : я рисую класс "отчет", задаю параметры, затем пишу Отчет->Выбрать_все_за период[начало, конец] а что на самом деле происходит при этом ? Неожиданное информация в разрезе Вашего вопроса: Вы только посмотрите, какие вещи люди делают: http://mda.hostok.net/forums/viewtopic.php?t=46 Да, еще: теперь Bold говорит не только по - английски и по-русски, но и по - молдавански, по - украински, по - белорусски и по всяковски: http://mda.hostok.net/forums/viewtopic.php?t=34 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2005, 21:09 |
|
||
|
Bold for Delphi /Bold for C++. Вторая попытка.
|
|||
|---|---|---|---|
|
#18+
Ну, пожалуй, стоит начать с архитектуры. Или с возможностей. Ну ладно, возможности. Возможности Ну, как всегда, сперва бла-бла-бла (можно не читать первые два абзаца :) Технология Bold является реализацией переноса в приложение UML моделей. Различные свойства продукта Bold for Delphi помогают упростить процесс перемещения между моделью и кодом с помощью разнообразного набора сервисов, таких, как генерация схемы, механизмы размещения данных и их отображения. Он также позволяет получать готовые приложения с удивительно малым объемом кода. Реализация модели предполагает, что приложение знает о модели. Управляя разработкой приложения на основании информации о модели, мы приближаемся к новой мощной технологии, называемой «Процесс Разработки, Основанной На Модели» (Model Powered Development). Производительность Производительность, выраженная во времени разработки, вызывает дикую радость пользователя (пъянки, пляски, песни и проч.), максимально использующего Bold - технологию. RAD – природа продукта дает непревзойденную скорость при итеративной разработке и требует минимум кодирования. Рабочая среда дает Вам мощное ядро возможностей как программисту, каких не заказывал Вам ни один пользователь - такие, как управляемый моделью механизм drag and drop, полный доступ к модели и т.д.. Преобразователь OCL в SQL естественным образом преобразует выражение OCL в высокопроизводительные запросы SQL, уменьшая нагрузку на локальную машину. Все, дальше - по делу. Масштабируемость Механизм Синхронизациии Объектного Пространства (Object Space Synchronization) совместно с механизмом Распространения (Enterprise propagation engine) позволяет объектам бизнес- слоев выглядеть одинаково у огромного числа клиентов. Когда один из клиентов сохраняет сделанные им изменения, немедленно посылется сообщение остальным клиентам, заинтересованным в текущий момент в состоянии класса или объекта. Обработчики архитектуры отображения (model view architecture handles) извлекает свежие данные из DBMS, когда требуется клиенту, без всякого дальнейшего вмешательства. (=mv= - реализуется на "раз-два", и выглядит очень прикольно). Поддержка погопользовательского доступа Сервер управления блокировками (Concurrency Management Server) управляет регионами путем их блокирования, не позволяя клиентам модифицировать данные, модифицируемые в данный момент другими клиентами. Оптимистическое блокирование гарантирует, что изменения не будут случайным образом перезаписаны. Возможно блокирование на коллекцию глобально во всем приложении, на класс или на сохраняемый атрибут. COM - aware объектное пространство, совместно с функционально полным набором COM - aware визуальных компонентов (GUI –controls) позволяет разрабатывать токого клиента. Кодирование упрощено и выполнено путем автоматической генерации интерфейсов (IDL-code) и адаптеров классов. Поддержка Модели Для манипулирования с информацией о модели и просмотра ее имеется среда разработки, основанная на технологии Bold. То есть Bold – приложение рабтает с мета – моделью UML как с бизнес - моделью! Значения вычисляемых атрибутов может быть получено безо всякого кодирования. Достаточно указать OCL - выражение, необходимое для вычисления значения – и все. Естественно, возможна кодовая реализация (Object Pascal - Delphi т.е. ;) вычисляемых атрибутов для вещей, трудно достижимых (либо невозможно) в предложениях OCL. Атрибуты могут быть так же Обратно Вычисляемыми (Reverse Derived). В большинстве случаев подобным путем могут быть вычислены ассоциации. Разрабатываем модель в Rational Rose или в любом инструменте для моделирования, поддерживающем XMI, а затем запрашиваем наш компонент, чтобы он связался с моделью. И все - модель имортирована. Особенности при работе с моделью: Представление модели, основанное на UML 1.3 Импорт из Rational Rose Bold – специфициующие добавления в Rational Rose Поддержка определяемых пользователем тег - значений Импорт потоков XMI Объектное пространство Объектное Пространство Bold (Bold Object Space) – это то место, где живут Ваши бизнес - объекты. Это – средний уровень в данной трехуровневой архитектуре. Он чрезвачайно тщательно разработан так, чтобы ничего не знать об устрйстве уровне представления или об уровне данных. Тем не менее, навигация по отношениям всегда будет гарантировать, что связанные объекты быдут отфетчены (извлечены то есть) из базы данных. Ограничения Ограничения теперь могут быть добавлены в модель и могут помочь в заставить работать бизнес – правила безо всякого дальнейшего кодирования. Транзакции в объектном пространстве Bold реализует транзакции в объектном пространстве, начиная с r2.0. (а сейчас 4.0!) Механизм запросов В дополнение к существующему событийному механизму, когда возникает необходимость, может быть добавлен связанный механизм запросов для доступа и манипулирования всеми элементами объектного пространства. Это очень мощная инфраструктура для разрешения, блокировки и авторизации. OCL Существуют методы получения значений OCL – выражений как параметров. Это очень производительный метод извлечения результатов из объектного пространства. Эти выражения могут быть вычислены сразу (или возможна подписка на них), чтобы получит результат "вживую" или выполнить некоторую логику, когда были изменены конкретные значения объекта или коллекции объектов. Откаты Объектное пространство поддерживает транзакции, которые могут быть использованы для изоляции от комплексных изменений, которые в дальнейшем могут быть неудачными. В этом случае возможен откат сделанных изменений. (=mv= - Undo - Redo - юзеры заныли сразу - "а почему сразу нельзя сделать было?") Итого: Object Space Synchronization Server Нетипизированный COM – доступ к Объектному Пространству Типизированный COM – доступ к Объектному Пространству Вычисляемые обратно – вычисляемые атрибуты Кодирование свободно – вычисляемых атрибутов и ролей Временная навигация в объектном пространстве Логика 3-х – уровневой архитектуры Обширный набор лагических атрибутов Поддержка ограничений для модели Поддердка обновление объектов для новых версий Поддержка извлечения данных в XML Возможность добавления типов данных, определяемых пользователем Многоуровневый undo/redo Уровень данных Bold for Delphi отображает всю Вашу бизнес – модель в реляционную базу данных. Схема базы данных, которая отображает Вашу бизнес – классы и отношения, генерируется автоматически. Поддерживаемый набор атрибутов включет стандартный набор типов, таких, как строки, различные числовые типы. Ваши собственные атрибуты, используемые в процессе, должны быть использованы в модели. Автогенерация схемы основывается на диалекте SQL ANSI92. Имеется возможность подцепить Ваши собственные SQL-операторы, чтобы принять участие в фазе генерации базы. Все штатные операции построения схемы могут быть переделаны. Одна из наиболее изумительных возможностей – Эволюция Модели (Model Evolution). Она позволяет преобразовывать схему на основании предыдущей версии модели в схему, которая соостветствует текущей версии модели. Все это позволяе максимально обеспечить сохранность и целостность данных. Итого: Сервер управления блокировками (Concurrency Management Server) Полный набор атрибутов для управления уровнем данных Физическая 3-х - уровневая архитектура Поддержка для атрибутов, определяемых пользователями Поддержка определяемых пользователем многоколонных атрибутов Поддержка для удаленных серверов хранения данных Расширение для версионности объектов (Object Versioning Extension) Оптимистическое блокирование Оптимизированный потоковый XML формат Отображение модили в базу, хранимое в базе Эволюционная трансформация модели/схемы Эволюционная трансформация модели/данных Совместимость модели/схемы с будущей версией Совместимость модели/схемы с предыдущей версией Поддержка default - знаечений в БД Графический интерфейс Графический интерфейс подключается к объектному пространству, использую выражения OCL. Все наши компоненты позволяют Вам специфицировать одно или больше OCL – выражений, чтобы получит некоторое подмножество наших бизнес – объектов или их членов. Набор of Bold-aware - компонентов приблизительно соответствует набору DB-компонентов. Также имеется очень мощный Bold aware компонент для работы с деревьями. Enterprise edition поставляется с эквивалентным набором COM-enabled натуральных VCL-компонентов, который позволяет вам выполнить построение тонкого клиента. Чтобы защитить Ваши вложения в толстого клиента, конвертер толстого в тонкий клиент включен в продукт. Он изменяет значимые части кода и формирует из него эквивалент в виде тонкого клиента. Расширенный набор дескрипторов как стартовая точка для обработки ваших данных. Некоторые дескрипторы могут быть соединены в цепочки с целью моделирования отношений и создания набора объектов. Продукт поставляется с исходным кодом всех размещаемых компонентов, как визуальных, так и невизуальных. Итого по GUI: Функционально полный набор VCL model aware - компонентов Функционально полный набор COM enabled – компонентов Функционально полный набор обработчиков объектов для получения данных из объектного пространства. Адаптеры между DB – компонентами и Bold - компонентами (TBoldDataset) Оптимизированные multy – valued компоненты Общий адаптер между VCL – свойствми и Объектным Пространством (TBoldPropertyController) Акции (от TActions) для общих задач Дизайн - тайм Разработчики найдут множество полезных возможностей в дизайн – тайме, таких, как на интуитивно – понятный редактор для свойств и компонентов. Очень полезен для редактирования конткстно – зависимый OCL – редактор, который позволяет Вам премещаться по модели для создания собственных сложных OCL – выражений методом point – and - click. Другой мощный редактор компонента – это внутренний UML Редактор Модели, который обрабатывает модель в дизайн - тайме. Он позволит редактировать все важные части модели (=mv= по мне - в Rose удобнее. Хотя, может, не привык еще) . Дополнительно, он позволяет в дизайн – тайме перетаскивать элементы модели на форму. Связанные свойства Bold сгруппированы в Bold - категории. После импортирования модели из Rose или XMI, генератор на основании шаюлона сгенерирует код для всей вашей модели, включая список типов, методы доступа к типам для атрибутов и ролей. Bold for Delphi обеспечивает генерацию кода Delphi, чтобы обеспечить доступа к иерархии классов, определенной в модели. Члены доступны как настоящие типы Delphi или как члены классов. Генерируются модули – заглушки для реализации бизнес - логики. По желанию, Вы также можете сгенерировать код IDL, также, как и адаптеры для всех бизнес - классов. Это позволит использовать COM в вашем приложении и написать клиентов в любом COM-aware – инструменте разработке (VB, VC++, Office и т.д.). Выражения OCL в компонентах могут быть вычислены для проверки в дизайн - тайме. Итого по дизайн – тайму: Проверка OCL Контекст – чувствительный OCL - редактор Генерация IDL и кода адаптеров Уличшенные редакторы свойств и компонентов Drag and drop из редактора модели Внутренний редактор модели Генерация кода, основанная на шаблонах Проверка OCL – выражений в модели Доступ по одному щелчку мыши к редактору модели Ран - тайм В ран - тайме мощь MDA сверкает во всю силу (прям в глазай рябит). Типо-чувствительный автоматический drag-and-drop поддерживает drag and drop :), где только такое возможно, и наполняет отображение модели гарантированной логикой связи между объектами и их отображаемыми значениям и другими ценными возможностями. Короче, это нажо видеть. Новая возможность управления преобразованием OCL выражения в стандартный SQL - оператор. Она дает заметное повышение производительность при формировании одиночных объетов из можества классов. Итого по Ран – тайму Преобразование OCL в SQL Расширенные механизмы подписок Отимизация представления модели в рантайме Оптимизация объектного пространства Управление памятью/распределение/цепочками дескрипторов Прочее Масса примеров в комплекте. Плюс толковое описание принципов работы по каждому из примеров. Естественно, множество примеров рассматриваемой рабочей среды упрощены для уменьшения затрат времени. Примеры включают маленькие приложения, примеры компонетов и куски кода, иллюстрирующие возможности применения технологии. Итого по Прочему: Преобразователь Толстого коиента в Тонкий Расширенный набор примеров (ну, типа - Simple сперва был набор, а потом расширили. Но примеры классные =mv=) Примеры компонентов Help, интегрированный в IDE Исходный код для компонентов GUI Определение интерфейсов для все модулей ------------------ Уфф! Overfuck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 11:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32886073&tid=1541599]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 395ms |

| 0 / 0 |
