powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
25 сообщений из 60, страница 1 из 3
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32677972
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вступление
Как известно, начиная с 9-ой версии, в Sybase ASA появилась возможность использовать ее в качестве самостоятельного небольшого веб-сервера и создавать на WatcomSQL веб-сервисы с поддержкой RAW, HTML, XML, SOAP и DISH. Так же были добавлены системные процедуры и функции, позволяющие производить различные полезный операции при работе с вебом (например манипуляции с урлами, переменными форм и т.д.). Не сказать, что присутствуют все необходимые с точки зрения веб-программиста функции, но основной базис есть.

Предисловие
Еще с прошлого года я посматривал на веб-сервисы ASA, но особого применения им не находил, так как был занят и главное не было реального места в проекте, где их можно было бы использовать. Совсем недавно я столкнулся с проблемой генерации сложных по форме и заполнению форм строгой отчетности (отчеты по ЕСН, НДФЛ, кадры и т.д.). Такие отчеты невозможно нормально реализовать на бэндовых отчетниках, будь то Crystal Report, PB DataWindow или другой. Плюс такие отчеты желательно выгружать в редактируемый формат, чтобы перед печатью пользователь мог его изменить. Как следствие, обычно они реализуются как макет в MS Word и через COM/OLE заполняются нужными данными. Такой подход имеет много слабых сторон:
1. Тиражный продукт привязывается к чужому ПО и требует его инсталяции.
2. Макет и код его заполнения никак не связаны, поэтому изменяя макет, приходится потом переписывать код.
3. Код получается сложным, вперемешку с логикой получения данных с БД, бизнес-логикой заполнения макета и логикой работы с интерфейсом OLE.
4. Скорость работы получается достаточно низкой при использовании OLE/COM технологии для заполнения макета.
5. Нет возможности поддержки из за использования специализированных протоколов кросс-независимых отчетов, способных открываться и изменяться не только в MS Word, а например в Open Office (или же придеться все генерить через Ворд, сохранять и открывать в Open Office).

Думаю при желании недостатков подхода генерации через Word можно найти еще много. Соотвествующе я вспомнил об веб-сервисах ASA и с учетом того, что моя БД работает на ASA, решил попробовать покопать в сторону разработки отчетов на HTML.

Проблемы и решения
Первое что я хочу сказать, что я никогда не занимался веб-программированием, на примитивном уровне знаю HTML и уж еще меньше знаю об стилях, JavaScript и других сопуствующих технологиях.

Так как основным требованиям отчета является его возможность открытия в MS Word и Open Office, то первым делом было выясненно именно это. Как оказалось, если в стилях генерить соотвествующие тэги, то можно добиться соблюдений условий форматирования, отступов, размеров страницы, перевода страницы и даже характеристик документа как в Word, так и OpenOffice. Сами браузеры игнорируют большинство таких управляющих тэгов, однако было выявлено, что они так же при печати различают тэг перевода страницы.

Вторым шагом были рассмотрены и изучены принципы работы ASA как веб-сервера. Как и предполагалось, ничего там сложного не оказалось, сервер запускается с параметром "-xs http(port=80)" и по указанному порту начинает принимать http-запросы. Для организации сервисов возврата HTML-страничек предусмотренны веб-сервисы с типом RAW, в теле которых должен быть указан запрос, возвращающий данные. На веб-сервис можно указать уровень доступа к нему (по логину, анонимный) и режим защищенной работы. Для веб-сервисов в ASA автоматически существуют расширения, позволяющие во первых управлять уровнем вложенности урлов и работы с переменными, полученными с клиентской сессии, обращение к которым элегатно сделано в форме ":ИмяПеременной".

Лень, двигатель прогресса
Первое, что я сделал - это хранимую процедуру, которая через функцию List генерила по запросу на таблицу строки для каждой записи в виде
Код: plaintext
1.
2.
3.
SELECT
  List('<TR><TD>' || Field1 || '</TD><TD>' || Field2 || '</TD></TR>', 
        Char( 13 ) || Char( 10 ))
FROM Table1;
Далее полученный результат я ручками вставил в HTML, где уже была обьявлена таблица и получил демку отчета, как это примерно выглядело. С точки зрения разработчика это выглядело мягко говоря не очень и не было ничуть не лучше, чем генерить отчеты, используя Word. Соотвествующе я решил попытать счастья и попробовать "поизобретать" свой велосипед.

Что получилось после одной недели изобретения велосипеда
Получилась технология построения динамических веб-страниц на основе макета HTML, с возможностью использования выборок на SQL, макросов и возможностью регулирования формирования потока контента на WatcomSQL, которой я присвоил кодовое название WebSQL. На текущий момент она поддерживает:
1. Секции - позволяют выделить определенный фрагмент HTML документа, описать на него запрос и при генерации страницы повторить его столько раз, сколько было возвращего записей с указанного запроса. Поддерживается неограниченный уровень вложенности секций. В запросе секции разрешается ссылаться на поля родительских секций (особенно полезно для связи) и формировать части запроса динамически (например разная сортировка в Order By).
2. Алиасы - позволяют ассоциировать поля с алиасами, использующимися в теле текста секции. Например если в секции указать алиас "F1" на поле "Field1", то везде в тексте вместо "F1" при ее построении на каждую запись запроса секции будет вставлено значение поля "Field1". Для алиасов определена локальная область видимости, то есть замена алиаса на поле будет производиться только в теле указанной секции и не действительна во вложенных секциях. Разрешается обьявлять алиасы на поля родительских секций, что позволяет использовать в теле секции значения полей родительских секций.
3. Локальные переменные и параметры ХП - позволяют определить для секции локальную переменную, указать для нее тип SQL и инициализационное значение (любое допустимое в WatcomSQL выражение). Имеют область видимости, где дочерние секции могут видят локальные переменные родителей, но имеют право создать собственные переменные, которые именами перекрывают переменные родительских секций. Для отображения значений переменных в теле секции необходимо так же ассоциировать их с алиасами.
4. Макрокоманды - позволяет в любом месте документа на WatcomSQL описать необходимую логику действий. Поддержка вставки внутри макета HTML операторов WatcomSQL дает всю мощь этого языка по управлению формированием динамической страницы и позволяет выполнять любую логику действий - от ветвления формирования документа, до поддержки аггрегированных действий на основе локальных переменных, определения собственной бизнес-логики, вызова ХП и т.д. Ограничений на использование в макрокомандах скриптов WatcomSQL нет.
5. Макросы - позволяют описать именованный блок текста, внутри которого разрешается ссылки на нумерованные параметры. Далее разрешается вызов макросов из любого места документа по его имени и с передачей параметров. Макросы позволяют создавать повторно используемые фрагменты текста, тэгов, параметров для тэгов, вызовов макрокоманд и любых других часто используемых фрагментов текстов. В теле макросов допускается вложение других макросов, что позволяет создавать эффективную иерархию повторно используемых решений. При обьявлении в секциях макросы имеют область видимости, где дочерним секциям разрешается использовать макросы, обьявленные в родительских секциях, но с правом переопределения макроса с существующим в родительской секции именем. Так же поддерживается библиотеки публичных макросов, в которых можно хранить общие и стандартные макросы, которые потом можно задействовать во множестве документов. Библиотеки являются именованными с поддержкой уровня вложенности модулей (например, "СтандартнаяБиблиотека.ПотокКонтента.Неформатированный"). Для библиотек и их иерархий модулей существуют аналогичные секциям правила области видимости макросов. Для использования в документе макросов публичных библиотек их необходимо обьявлять в секциях, указывая полный к ним путь. В теле секции возможно как обьявление использования всех макросов библиотеки (например "Библиотека.*"), так и перечисление конкретных используемых макросов (например "Библиотека.Модуль.Макрос1"). Для публичных макросов поддерживается возможность указания их алиаса при обьялении в теле секции, что позволяет обойти ограничение на уникальность имен макросов в теле секции или же перекрыть ранее обьявленный в родительской секции макрос с одной библиотеки макросом с таким же именем, но другой библиотеки.

Как это работает
WebSQL в полном смысле слова является компилятором макетов HTML в скрипт ХП на WatcomSQL. На вход ему нужен только текст макета. На выходе он создает в Вашей базе данных готовую хранимую процедуру на WatcomSQL, уже содержащую весь код генерации странички. Соотвествующе далее ASA компилирует ее в байт-код и далее к ней применимы все обычные правила по отношению к хранимым процедам в ASA (организация прав доступа пользователей, возможность скрытия исходного текста, работа в профайлере и дебаггере и т.д.). Еще одним плюсом компиляции является то, что в конечном приложении нет необходимости держать HTML макеты страниц и отчетов. Для организации возврата результата хранимой процедуры через веб теперь достаточно создать соотвествующий RAW веб-сервис, в теле которого поставить вызов этой процедуры c передачей в качестве параметров именнованных переменных, переданных клиентской сессией:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE SERVICE "asademo/customers" 
  TYPE 'RAW' 
  AUTHORIZATION OFF 
  USER "WebUser" 
AS 
  call sp_Customers(:SortNumber, :SortOrder);

Весь движок WebSQL полностью написан на WatcomSQL и оформлен в виде отдельной базы данных. Для его инсталяции достаточно запустить на сервере ASA базу данных WebSQL.db. Если ASA запущена с поддержкой протокол http, то возможно использование в качестве клиентского приложения собственные веб-сервисы WebSQL через браузер. Планируется сделать на веб-сервисах полный интерактивный сайт для просмотра и изменения его настроек компилятора, работой с библиотеками макросов, страницей интерактивной компиляции макета с указанного HTML файла в скрипт хранимой процедуры в указанный файл sql и помощи по командам, библиотекам макросов, входящих в комплект стандартной поставки и пошаговому обучению работы с ним.

Так же возможно подключение и использование WebSQL для своих баз данных. Для этого необходимо запустить скрипт "install.sql", который подключит WebSQL в качестве удаленного сервера, ассоциирует удаленного юзера с локальным, подключит нужные удаленные хранимые процедуры и создаст специальные процедуры, позволяющие прямо из родной базы данных вызывать компиляцию макетов с автоматическим их созданием в базе данных. Для очистки обьектов WebSQL в базе данных так же существует скрипт uninstall.sql.

Где еще можно использовать WebSQL
На самом деле, являясь макро-технологией, WebSQL можно использовать везде, где необходимо по макету строить текст. Тут все зависит от полета фантации - начиная с генераторов текстовых отчетов и заканчивая генератором SQL скриптов по указанным обьектам базы данных (причем вполне возможно в дальнейшем расширить функциональность компилятора до уровня поддержки множества диалектов и генерации скриптов хранимых процедур не только на WatcomSQL, но и для того же PL/SQL).

Перспективы развития
Сам движок сейчас уже есть, работает и отлажен (что странно, с учетом того, что всем вышеописанным я занимался ровно неделю). В качестве построителя форм строгой отчетности он полностью удовлетворяет требованиям и сейчас на нем уже во всю рисуются макеты отчетов. Так же никто не мешает использовать WebSQL и в качестве генератора сайтов. Обладая всей мощью WatcomSQL и поддерживая повторно-наследуемые решения, по моему мнению он полностью удовлетворяет условиям для генераторов веб-страниц по макетам. Остается дело за малым - создать достаточно большую и удобную библиотеку макросов на все случаи жизни, начиная от поддержки эффективной работы с таблицами (сортировка, фильтрация и т.д.) и заканчивая механизмами ввода и изменения информации, работы визардов и использования веб-браузера как активного клиента, с использованием наработок на JavaScript. Как итог, при построении веб-решений, разработчик будет больше внимания уделять проектированию базы данных и дизайну интерфейса, а так же при определении бизнес-логики как серверной, так и клиентской части будет использован единый язык WatcomSQL.

За неделю написания этой технологии времени на создание примеров и уж тем более сайта, конечно же у меня не было. Сейчас в публично в интернете выложена в качестве демки одна страничка , макет которой я за 5 минут нарисовал в OpenOffice (он меньше тэгов по сравнению с Вордом генерит). Далее я еще потратил 10 минут на программирование этого макета, где помимо запроса на секцию, в которой HTML-таблица заполнялась записями с Customer, я организовал группировку по штатам (без вложенной секции, методов сортировки по штатам и отслеживания изменения штата), порядковый счетчик и 2 макроса для организации поддержки сортировки по колонкам HTML таблицы. Внизу странички есть ссылка на "чистый" HTML макет, на основании которого и была сгенерирована ХП, которая возвращает указанную страничку. Скорость генерации на моей домашней машине странички довольно высокая - время выполнения ХП составляет 20 мс.

Что дальше
Дальше я планирую все таки начать делать демо примеры, писать спецификацию и помощь, сделать и запустить собственный сайт. Сначала будет идти работа по русскоязычному направлению, чуть далее я планирую подготовившись сделать зеркало сайта и помощи на английском языке (когда библиотеки макросов уже будут обладать достаточной функциональностью). В этом топике если сообщество SQL.RU не против, я наверное буду выкладывать дальнейший ход работ над этой технологией, можно сказать в онлайне, что с одной стороны стимулирует меня в работе над ней, с другой стороны позволит Вам уважаемые коллеги покритиковать мои решения и всем (а то и поучить веб-основам программирования), у кого есть желание, протестировать ее на своих реальных базах данных. Для этого в скором времени я планирую написать спецификацию языка и подключить публично в интернете веб-сервис онлайн компиляции макетов HTML, что позволит Вам через интернет под свои БД порисовать макеты и по созданным ХП посмотреть, что из всего этого получается.

Насчет сотрудничества
С учетом того, что технология будет SHAREWARE, причем с патентом и закрытыми при продаже исходниками, мне будет сложно одному попытаться ее раскрутить в пределах СНГ и за рубежом. Я бы не отказался взять в партнеры человека, который дружит с веб-дизайном, Java-скриптами и другими разными веб-технологиями. В паре с ним мы бы составить тандем, где я продолжать бы
наворачивать движок и начинать рисовать прототипы баз данных под различные решения (форумы, аукционы, новостные каналы и т.д.), а он бы сделал сайт под WebSQL и наращивал стандартные библиотеки макросов лучшими наработками веб-программирования.

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

P.S. Гм, после такого большого официального документа, хотелось бы просто услышать мнение уважаемых коллег, насколько действительно все это перспективно и интересно в первом чтении - а вдруг меня просто переклинило и я пытаюсь делать и толкать продукт, который никому не будет нужен :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678161
chad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не будет ли это изобретением велосипеда?
Немного минут поисков по интернету дали два Java reportа с вожможностью экспорта в pdf,rtf,html,xls
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678197
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Технология и не подразумевает конкуренцию с бэндовыми отчетниками. Хотя бы по причине того, что пришлось бы реализовывать программный расчет высоты страницы HTML для перевода страниц. Лучше всего эта технология подходит для генерации динамических веб-страниц, создания отчетов с фиксированными страницами и организации пользовательского интерфейса через веб. Самое главное преимущество, как мне видиться в ней - это то, что не нужно использовать для этих целей сторонние средства и ПО, а так же изучать другие технологии и языки программирования. Фактически уже зная язык разметки документов HTML и являясь специалистом по проектированию баз данных на ASA, уже можно легко делать различные решения, причем все будет идти на языке хранимых процедур WatcomSQL. В итоге у нас получается самодостаточная база данных (не требуется даже инсталяция веб-сервера на ОС - IIS или Apache), которая и данные хранит, и бизнес-логику серверной и клиентской части реализует, генеря сайты и отчеты (в идеале хотелось бы выйти на приличную функциональность построения тонкого клиентского приложения прямо на браузере). Естественно, технология не способна обхватить различные направления и ньюансы создания интернет и интранет проектов, но как Вы сами правильно заметили, на Java существует достаточное кол-во решений, их охватывающих. С учетом того, что в ASA разрешена работа с Java, то это расширяет возможности моей технологии, позволяя подключать к собственным базам данных решения на Java как компоненты и используя их в более легком в освоении WatcomSQL, использующегося в качестве базового языка технологии WebSQL (можно привести аналогию с VB, который использует компоненты низкоуровневых языков). В итоге всегда можно подключить как бесплатный или коммерческий пакет Java, отвечающий за работу с электронными деньгами, генерящий графики, сложные групповые и кросстаб отчеты и т.д.. Особых ограничений на использование Java классов и хранение Java обьектов в ASA нет (если не считать бесплатной регистрации в Sybase для получения лицензии Java на ее использование в ASA).
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678271
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых, я хочу оспорить пару утверждений. Если вы не против, конечно :)
ASCRUS
2. Макет и код его заполнения никак не связаны, поэтому изменяя макет, приходится потом переписывать код.
3. Код получается сложным, вперемешку с логикой получения данных с БД, бизнес-логикой заполнения макета и логикой работы с интерфейсом OLE.

Конкретно вот эти два пункта. Дело в том, что у меня уже довольно давно работает аналогичная система - Дельфийский GUI предлагает пользователю выбрать параметры отчета, запускает через SaVCL пачку ХП, и их резалтсеты забрасывает в MS Excel, для этого используется библиотека FlexCel. Связка между ХП и шаблонами отчетов только в наименовании колонок. При добавлении нового отчета или изменении старого приходится следить только за тем, чтобы поле резалтсета упомянутое в шаблоне действительно существовало в резалтсете. Итого: работа с OLE однажды сделаная, более не трогается.

ASCRUS
WebSQL в полном смысле слова является компилятором макетов HTML в скрипт ХП на WatcomSQL. На вход ему нужен только текст макета. На выходе он создает в Вашей базе данных готовую хранимую процедуру на WatcomSQL, уже содержащую весь код генерации странички. Соотвествующе далее ASA компилирует ее в байт-код и далее к ней применимы все обычные правила по отношению к хранимым процедам в ASA (организация прав доступа пользователей, возможность скрытия исходного текста, работа в профайлере и дебаггере и т.д.).
Можно ли в этот "текст макета" запихать команды управления процедурой? Например те же самые grant execute...?
Можно посмотреть результат компиляции макета?

ASCRUSВесь движок WebSQL полностью написан на WatcomSQL и оформлен в виде отдельной базы данных. Для его инсталяции достаточно запустить на сервере ASA базу данных WebSQL.db.
Э??? Данный WebSQL.db это что, "чистая" БД которую предпологается наполнять реальными таблицами/данными/процедурами? Может лучше оформить проект как скрипт который можно было бы наложить на существующую базу?

ASCRUSТак же возможно подключение и использование WebSQL для своих баз данных. Для этого необходимо запустить скрипт "install.sql", который подключит WebSQL в качестве удаленного сервера, ассоциирует удаленного юзера с локальным, подключит нужные удаленные хранимые процедуры и создаст специальные процедуры, позволяющие прямо из родной базы данных вызывать компиляцию макетов с автоматическим их созданием в базе данных. Для очистки обьектов WebSQL в базе данных так же существует скрипт uninstall.sql.
Зачем нужен удаленный сервер? Если речь идет о распределении web и db серверов по разным физическим компьютерам, то лично я предпочел бы поставить на удаленном компьютере обычный http сервер и ходить к базе данных через ASP/ADO если в качестве http-сервера будет IIS или Perl/PHP с их библиотеками если сервером будет стоять Апач.
Завязывать DB сервер на работу с http имеет смысл только если данный DB сервер единственный доступный сервер. Если же в офисе организована нормальная LAN с DB-сервером внутри LAN, а доступ снаружи в LAN перекрыт файрволом, то использование выделенного "классического" http сервера становится единственным решением.

ASCRUS
Остается дело за малым - создать достаточно большую и удобную библиотеку макросов на все случаи жизни, начиная от поддержки эффективной работы с таблицами (сортировка, фильтрация и т.д.) и заканчивая механизмами ввода и изменения информации, работы визардов и использования веб-браузера как активного клиента, с использованием наработок на JavaScript. Как итог, при построении веб-решений, разработчик будет больше внимания уделять проектированию базы данных и дизайну интерфейса, а так же при определении бизнес-логики как серверной, так и клиентской части будет использован единый язык WatcomSQL.
[/quote]
Что-то использованный в показаном макете язык не очень то похож на WatcomSQL :)
Язык почти прозрачен, но к сожалению тяготеет к лапшеообразности. В частности использование переменных до их формального описания. Смесь собственных операторов и html текста тоже не добавляет читабельности. В общем, я пока не особо в восторге.
Во время предварительного чтения данного описания, я предполагал что-то типа ESQL текста, только вместо C/PowerScript чтобы был html текст. Оно по моему было бы намного проще в сочиненнии макетов.

[quot ASCRUS]В этом топике если сообщество SQL.RU не против, я наверное буду выкладывать дальнейший ход работ над этой технологией,[/quote]
Идея хорошая, но ... или я не совсем понял методы реализации или они мне не нравятся :) В общем, я пока в сомнениях, но готов поучаствовать.

[quot ASCRUS]P.S. Гм, после такого большого официального документа, хотелось бы просто услышать мнение уважаемых коллег, насколько действительно все это перспективно и интересно в первом чтении - а вдруг меня просто переклинило и я пытаюсь делать и толкать продукт, который никому не будет нужен :)
Лично мне была бы очень интересна библиотека типа уже упомянутого FlexCel, под Delphi или Java, а лучше и под то и под другое. Принимающая на вход шаблон отчета и пачку резалтсетов и формирующая html. Но если уходить от специально написаного клиента и использовать в качестве клиента стандартный браузер, то наилучшим решением на мой взгляд был бы модуль для http-сервера реализующий ESQL внутри html.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678332
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько надежен/функционален встроенный http-сервер в АСА?
Поэтому я выбираю Apache/PHP.

...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678365
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых, я хочу оспорить пару утверждений. Если вы не против, конечно :)
Я только за :)


ASCRUS
2. Макет и код его заполнения никак не связаны, поэтому изменяя макет, приходится потом переписывать код.
3. Код получается сложным, вперемешку с логикой получения данных с БД, бизнес-логикой заполнения макета и логикой работы с интерфейсом OLE.

Конкретно вот эти два пункта. Дело в том, что у меня уже довольно давно работает аналогичная система - Дельфийский GUI предлагает пользователю выбрать параметры отчета, запускает через SaVCL пачку ХП, и их резалтсеты забрасывает в MS Excel, для этого используется библиотека FlexCel. Связка между ХП и шаблонами отчетов только в наименовании колонок. При добавлении нового отчета или изменении старого приходится следить только за тем, чтобы поле резалтсета упомянутое в шаблоне действительно существовало в резалтсете. Итого: работа с OLE однажды сделаная, более не трогается.
В качестве примера я предлагаю рассмотреть отчет для зарплаты НДФЛ, состоящий из кучи листов строгой отчетности. Заваять их на Word или Excel представляется мне нелегким делом.


Можно ли в этот "текст макета" запихать команды управления процедурой? Например те же самые grant execute...?
Можно посмотреть результат компиляции макета?

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

авторЭ??? Данный WebSQL.db это что, "чистая" БД которую предпологается наполнять реальными таблицами/данными/процедурами? Может лучше оформить проект как скрипт который можно было бы наложить на существующую базу?
Действительно WebSQL реализован в чистой БД (размер страницы 1024), в которой лежат системные обьекты движка - таблицы и ХП. Их владелец DBA закрыт паролем и для пользования базой данных предлагается 2 логина - администратор и пользователь. Скриптом проект оформлять не хочется по 2 причинам:
1. Надо же как то защищать свои авторские права от просмотра текста хранимых процедур, где используются некоторые уникальные как я считаю наработки.
2. WebSQL и не нужен в конечной базе, так как он сам при компиляции не привязывается к обьектам этой базы - его задача из макета вернуть скрипт полноценной хранимой процедуры, которую потом можно просто наложить на нужную базу данных. Далее уже для работы этой процедуры ни макет, ни WebSQL не требуется.

авторЗачем нужен удаленный сервер?
Удаленный сервер нужен только в случае, если Вы хотите, чтобы WebSQL не только генерила скрипты ХП по макетом, но и автоматом их создавала. Для этой цели БД WebSQL подключается как удаленный сервер, далее подключается удаленная ХП sp_web_Compile и создается локальная ХП sp_web_CreateProc, которую теперь можно вызывать прямо из соединения своей БД, передавая ей имя файла макета и хранимой процедуры, на что она автоматически в Вашей базе данных создаст по макету указанную процедуру.

авторЕсли речь идет о распределении web и db серверов по разным физическим компьютерам, то лично я предпочел бы поставить на удаленном компьютере обычный http сервер и ходить к базе данных через ASP/ADO если в качестве http-сервера будет IIS или Perl/PHP с их библиотеками если сервером будет стоять Апач.
Вполне реально держать на внешнем слое Apache + ну и тот же PHP для реализации основной логики веб-приложения, а всю бизнес-логику на ASA во внутреннем слое, где PHP подгружает с веб-сервисов нужные HTML странички с ASA. А для внутренних нужд (интранет-сайты) можно вообще просто ставить прокси + ASA и все крутить (сейчас по указанной мной ссылке на демку именно все таки и крутиться).

авторЗавязывать DB сервер на работу с http имеет смысл только если данный DB сервер единственный доступный сервер. Если же в офисе организована нормальная LAN с DB-сервером внутри LAN, а доступ снаружи в LAN перекрыт файрволом, то использование выделенного "классического" http сервера становится единственным решением.
В данном случае ASA является классическим http сервером и я не вижу отличий от того же Апача (хотя каюсь - может быть не знаю всех его особенностей).

авторЧто-то использованный в показаном макете язык не очень то похож на WatcomSQL :)
Язык почти прозрачен, но к сожалению тяготеет к лапшеообразности. В частности использование переменных до их формального описания. Смесь собственных операторов и html текста тоже не добавляет читабельности. В общем, я пока не особо в восторге.
Во время предварительного чтения данного описания, я предполагал что-то типа ESQL текста, только вместо C/PowerScript чтобы был html текст. Оно по моему было бы намного проще в сочиненнии макетов.
Языка как такового в WebSQL нет. Есть макет, внутри которого вставлены управляющие команды его формированием. Самый близкий аналог - это та же похороненная Microsoft технология ASP. Не нужно макет воспринимать как программу. Ее нужно воспринимать как описанный документ, в теле которого с помощью SQL секций, WatcomSQL операторов и макросов описана бизнес логика, влияющая на формирование контента документа. Поэтому сравнивать макротехнологии с языками программирования честно говоря не корректно. С лапшеобразностью я ничего к сожалению поделать не могу, так как мне пришлось следовать по стопам MS Word-а (причем параллейно, так как я сам пытался подобрать семантику языка) и пользоваться для вставки макрокоманд тэгами комментариев. Причина этого кроется только в невозможности в HTML описывать собственные тэги, соотвествующе ввод несанкционированных тэгов повлек бы за собой возмущение различных дизайнеров и редакторов кода HTML. С другой стороны WebSQL не сильно привязан к определенным формальностям описания макросов и в любой момент я могу его расширить до уровня поддержки любых диалектов, заданным пользователем.

авторИдея хорошая, но ... или я не совсем понял методы реализации или они мне не нравятся :) В общем, я пока в сомнениях, но готов поучаствовать.
Думаю стоит чуть чуть подождать - как только я открою в интернете онлайн компилятор HTML макетов и выложу предварительное описание правил составления макетов, то можно будет самому все попробовать и поэскпериментировать.

авторЛично мне была бы очень интересна библиотека типа уже упомянутого FlexCel, под Delphi или Java, а лучше и под то и под другое. Принимающая на вход шаблон отчета и пачку резалтсетов и формирующая html.
С точки зрения кодера да. С точки зрения проектировщика БД лично мне ближе получается для генерации сайтов WebSQL, хотя бы потому, что я не хочу пользоваться алгоритмическими языками типа Delphi или Java, или учить правила и особенности какого нибудь отчетника, когда я прекрасно умею проектировать базы данных, писать запросы и реализовывать логику на WatcomSQL.

авторНо если уходить от специально написаного клиента и использовать в качестве клиента стандартный браузер, то наилучшим решением на мой взгляд был бы модуль для http-сервера реализующий ESQL внутри html.
А именно так все и есть :) Наглядный пример генерации текстового отчета по таблице:
Код: 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.
<! --  
  Описание главной секции документа:
  обьявление локальной переменной @Count и инициализация ее на "0".
 --> 
<! --<section name="#MAIN#"> 
  <field name="@Count" alias="[Total]"/>
  <local name="@Count" type="int" init="0"/>
</section> --> 

 --------------------- 
| List of customers: |
 --------------------- 
<! --  
  Описание секции Customers на запрос 
  по табличке Customer c указанием алиасов на ее поля и
  переменную @Count
 --> 
<! --<section name="Customers" 
  sql="
    SELECT id, lname || ' ' || fname AS name, address, phone
    FROM customer
    ORDER BY state, name">

    <field name="name" alias="[Name]"/>
    <field name="address" alias="[Address]"/>
    <field name="phone" alias="[Phone]"/>
    <field name="@Count" alias="[NN]"/>
</section> --> 
<! -- Тут само тело секции, которое повторяется на каждую запись --> 

<! -- макрокоманда на WatcomSQL --> 
<! --* 
// Увеличиваем счетчик
SET @Count = @Count +  1 ;

// Может быть даже вызывем какую нибудь свою ХП
CALL MyStoredProc ( id );
* --> 
№:[NN]
Name: [Name]
Address: [Address]
Phone: [Phone]
 -------------------- 

<! -- Конец тела секции --> 
<! --/Customers> 

Total records: [Total]
После генерации макета, компилятор WebSQL (ХП) вернет примерно такой код в виде выборки, состоящей из одной записи, c long varchar полем Content:
Код: 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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
 // Начало построения контента 
BEGIN

 // Таблица для построения результатов контента 
DECLARE LOCAL TEMPORARY TABLE #Result (
  Number int NOT NULL IDENTITY PRIMARY KEY CLUSTERED,
  Line long varchar NOT NULL,
  PCTFREE  0 
) NOT TRANSACTIONAL;


 // ***** Начало секции "#MAIN#" ***** 
BEGIN

 // Дополнительные аттрибуты секции 
DECLARE @Count int;
SET @Count =  0 ;

INSERT INTO #Result (Line) VALUES( '
<!-- 
  Описание главной секции документа:
  обьявление локальной переменной @Count и инициализация ее на "0".
-->
<HEAD>
');
INSERT INTO #Result (Line) VALUES( '
</HEAD>

---------------------
| List of customers: |
---------------------
<!-- 
  Описание секции Customers на запрос 
  по табличке Customer c указанием алиасов на ее поля и
  переменную @Count
-->
');


 // ***** Начало секции "Customers" ***** 
BEGIN
  DECLARE @_SQL_Customers long varchar;

 // Устанавливаем запрос для секции 
SET @_SQL_Customers = '
SELECT id, lname || '' '' || fname AS name, address, phone     FROM customer     ORDER BY state, name';

 // Организация движения курсора по секции 
FOR Customers AS Customers NO SCROLL CURSOR USING @_SQL_Customers
DO
INSERT INTO #Result (Line) VALUES( '
<!-- Тут само тело секции, которое повторяется на каждую запись -->

<!-- макрокоманда на WatcomSQL -->
');
 // Увеличиваем счетчик 
SET @Count = @Count +  1 ;

 // Может быть даже вызывем какую нибудь свою ХП 
CALL MyStoredProc ( id );
INSERT INTO #Result (Line) VALUES( '
№:' || @Count || '
Name: ' || name || '
Address: ' || address || '
Phone: ' || phone || '
--------------------

<!-- Конец тела секции -->
');

END FOR;
END;
 // ***** Конец секции  "Customers" ***** 

INSERT INTO #Result (Line) VALUES( '

Total records: ' || @Count || '

');
END;
 // ***** Конец секции  "#MAIN#" ***** 

 // Возвращаем контент 
SELECT List(Line, '' ORDER BY Number) AS Content
FROM #Result;

 // Конец работы 
END;
Далее по желанию этот код или будет оформлен, как тело ХП, или же Вы просто его сможете выполнить в ISQL, динамическом SQL, сохранить в файл скрипта SQL и т.д. и т.п. Причем как видно, уже ни WebSQL, ни сам макет уже не нужны.

авторНасколько надежен/функционален встроенный http-сервер в АСА?
Поэтому я выбираю Apache/PHP.
Насчет надежности - есть поддержка защищенных режимов работы и аутенфикации пользователей по таким же принципам, как и подключение к БД по другим протоколам связи. По функциональности опять же - сам веб-сервер особо ничего не делает - его задача через веб-сервис открыть сессию, залогиниться, выполнить уже нужный запрос или хранимую процедуру и вернуть полученный результат клиентской сессии. То есть в данном случае функциональность и скорость работы - это показатели работы сессий ASA и ее характеристик нагрузок как СУБД, а не как веб-сервера. Еще раз могу подчеркнуть, что использовать Apache и PHP не представляет собой трудности - ASA не обязательно запускать на 80 порт и ее можно сделать внутренним локальным сервером на закрытом для интернета порту, к которому будут обращаться тот же Apach и PHP. Далее уже определение степени интеграции логики на части ASA и части других средств будет зависеть только от программиста.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678393
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу... кажется понял.
То есть, практически данный подход предполагает, что на каждый отчет, у нас будет одна хранимая процедура. Которая будет не только вытягивать несколько резалтсетов из БД, но и склеивать их в один, уже отформатированный, html.
Результатирующий html можно выдавать в клиентский браузер напрямую из ASA (если в нем будут уже объявлены заголовки), либо брать этот html и вклеивать его во внешний html (с заголовками, баннерами, счетчиками, и всякой другой фигней).
Внешний html может быть так же организован как ХП с ASA в качестве http сервера или ASP/SHTML страничка на классичком http сервере.
Так?

Ладно, принимается.
Остается вопрос, почему в качестве средства реализации был выбран сам ASA/Watcom SQL? Может имеет смысл сделать такой конвертор WebSQL -> WatcomSQL в виде обычной программы? Потом добавляем к ней менеджер проекта, в проекте регестрируем пачку шаблонов, и.... По большой, толстой, красной кнопке все обновленные шаблоны уже в виде готовых ХП отправляются в рабочую БД? :)
Кстати, подобный внешний, не привязаный к ASA конвертор мог бы работать и не только с ASA, но оно и под любой другой сервер заработает. Если конечно знать диалект этого сервера или использовать строго SQL-92.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678397
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C другой стороны, компилятор на WatcomSQL позволяет хранить подготовленные шаблоны в блобах рабочей базы, и на лету, на каждый запрос делать компиляцию в процедуру с уникальным именем, запускать процедуру, и по завершению убивать ее. Но тогда все же компилятор надо будет хранить непосредственно в рабочей базе и распространять его в исходниках...
Как вариант - делаем компилятор в виде dll и вызываем его из ASA как внешнюю функцию... Тогда можно будет исходники держать под секретом :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678454
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlугу... кажется понял.
То есть, практически данный подход предполагает, что на каждый отчет, у нас будет одна хранимая процедура. Которая будет не только вытягивать несколько резалтсетов из БД, но и склеивать их в один, уже отформатированный, html.
Результатирующий html можно выдавать в клиентский браузер напрямую из ASA (если в нем будут уже объявлены заголовки), либо брать этот html и вклеивать его во внешний html (с заголовками, баннерами, счетчиками, и всякой другой фигней).
Внешний html может быть так же организован как ХП с ASA в качестве http сервера или ASP/SHTML страничка на классичком http сервере.
Так?

Угу, все так. В принципе как я уже и говорил на самом деле макрогенератор вообще ничего о языке макета не знает, поэтому макет чего он будет строить - HTTP с заголовками, без заголовков, макет SQL-скрипта, генератор XML или еще чего - это уже дело вкуса того, кто макет рисует :)

White OwlОстается вопрос, почему в качестве средства реализации был выбран сам ASA/Watcom SQL? Может имеет смысл сделать такой конвертор WebSQL -> WatcomSQL в виде обычной программы? Потом добавляем к ней менеджер проекта, в проекте регестрируем пачку шаблонов, и.... По большой, толстой, красной кнопке все обновленные шаблоны уже в виде готовых ХП отправляются в рабочую БД? :)
Кстати, подобный внешний, не привязаный к ASA конвертор мог бы работать и не только с ASA, но оно и под любой другой сервер заработает. Если конечно знать диалект этого сервера или использовать строго SQL-92.
Это конечно дико будет звучать, но на WatcomSQL у меня больше развязаны руки по доработке и расширению функциональности движка, чем если бы я это делал например на Java. Все что я описал по функциональности весит ровно 5 хранимых процедур и занимает на текущий момент примерно 500 строчек кода с обширными комментариями, которые я так люблю вставлять на любой чих в коде :) Я очень сильно сомневаюсь, что на Java я смог бы за неделю на классах реализовать подобную функциональность, с подобным кол-вом кода, чтобы все с первого раза заработало и легко расширялось и модифицировалось по функциональности :) Плюс так как я планирую хранить различные данные по движку (конфигурация, библиотека макросов, еще чего нибудь), то мне по любому бы пришлось задействовать базу данных, а из за этого бы пришлось подключать JDBC, делать бизнес-логику контроля за уникальностью имен обьектов и т.д. и т.п. В данном случае решение на WatcomSQL позволяет мне использовав всю мощь языка запросов и функциональности ASA обходиться малой кровью, да еще и без всяких интерфейсов доступа, причем компиляция занимает миллисекунды. В конце концов и сам MacroSQL именно на это и расчитан - ничего лишнего, зачем нам интерфейсы доступа на SQL для генерации HTML, когда мы внутри сессии и так видим, все что нам надо. В случае же написания компилятора на внешнем по отношению к ASA языку мы получаем проблемы с отладкой компилятора, поддержкой кроссплатформенности на разных ОС, более сложной инсталяции (БД надежнее и легче скопировать и подключить к другой БД, чем внешний выполняемый модуль к указанной БД) и еще и лишний язык для сопровождения компилятора. Ну и напоследок хочу добавить, что я так привык к вкусностям WatcomSQL и настолько привык думать множествами и запросами, что мне честно говоря даже немного претит чего то писать на алгоритмическом языке и заморачиваться с ООП, компонентами доступа или еще чем. Единственное исключение из этого правила составляет PowerBuilder, на котором я продолжаю работать и который меня радует возможностями своих DataWindow и PowerScript, но при условии что он только используется по назначению - построении клиентских приложений.

авторC другой стороны, компилятор на WatcomSQL позволяет хранить подготовленные шаблоны в блобах рабочей базы, и на лету, на каждый запрос делать компиляцию в процедуру с уникальным именем, запускать процедуру, и по завершению убивать ее. Но тогда все же компилятор надо будет хранить непосредственно в рабочей базе и распространять его в исходниках...
Все таки скрипты движка я открывать не буду, распостраняться они будут как база WebSQL.db, у которой скрыты исходные тексты ХП и нет возмодности изменить служебные обьекты из за того, что запоролен хозяин БД. Это мне еще гарантирует, что народ не будет удалять или менять то, что нельзя изменять и удалять. С другой стороны в этой БД пользователи могут создавать собственные обьекты и заполнять специальные пользовательские таблички тех же библиотек макросов, что позволит им описывать и расширять повторно используемые решения. Компилировать скрипты можно и так на лету, без обязательного создания ХП, полученный код будет прекрасно выполняться через EXECUTE IMMEDIATE или в ISQL, так что ничего лишний раз создавать или удалять не надо. Запустить WebSQL можно и на одном сервере с рабочей базой командой START DATABASE по мере необходимости и так же его остановить. Ну и плюс я напоминаю, что это только базовый комплект моего макродвижка и я собираюсь еще дальше его расширять (поддержка генерации секций и подсекций одним SQL-запросом с помощью подзапросов и функции LIST, если внутри них не используются макрокоманды, поддержка движения секции в виде цикла WHILE LOOP, возможность установки аттрибутов организуемых курсоров, и т.д. и т.п.). В общем двигаться куда есть, главное, чтобы движение было целенаправленным и в нужную сторону :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678459
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSВ принципе как я уже и говорил на самом деле макрогенератор вообще ничего о языке макета не знает, поэтому макет чего он будет строить - HTTP с заголовками, без заголовков, макет SQL-скрипта, генератор XML или еще чего - это уже дело вкуса того, кто макет рисует :)
А что проверка на синтаксис отсутсвует как класс?

ASCRUSПлюс так как я планирую хранить различные данные по движку (конфигурация, библиотека макросов, еще чего нибудь), то мне по любому бы пришлось задействовать базу данных, а из за этого бы пришлось подключать JDBC, делать бизнес-логику контроля за уникальностью имен обьектов и т.д. и т.п.
Ну если внешний компилятор делать на java то и библиотеку его можно и нужно хранить в jar'ах. БД там совсем не нужна :)

ASCRUSподдержкой кроссплатформенности на разных ОС,
Java. Если кроссплатформенность действительно нужна. Либо C компилируем перед распространением на разные платформы, а пользователи уж как-нибудь сами сумеют дополнительные макросы скомпилировать :) Впрочем, "компилируемый макрос" уже звучит странновато :)

ASCRUS более сложной инсталяции (БД надежнее и легче скопировать и подключить к другой БД,
Ну да - ну да. А EBF кто накладывать будет? :) Разрешите напомнить - если база работала на более свежем сервере, то она откажется запускаться на более старом. А это значит что пользователи будут вынуждены выкачивать и накладывать пачку EBF'ов. А если они этого делать не хотят? Вот я например очень и очень долго не апгрейдил свои сервера с 7.0.2. Просто потому, что в 7.0.3 поменяли работу с локальными темп именами, и при переходе на 9-ку мне пришлось переписывать почти сотню ХП.
А для инсталляции внешней программы, чаще всего, достаточно запустить один экзешник или распаковать один tar.gz и запустить setup.sh. И нету привязки к ASA.

ASCRUSЕдинственное исключение из этого правила составляет PowerBuilder, на котором я продолжаю работать и который меня радует возможностями своих DataWindow и PowerScript, но при условии что он только используется по назначению - построении клиентских приложений.
"Tell me!" как говорят наши друзья американцы :) Только что два часа убил: пытался понять почему композитное DW начало криво рисоваться. В итоге экспортировал его в srd, стер из pbl, импортировал обратно - идеально отрисовалось. Что это было за явление так и не понял.

ASCRUSКомпилировать скрипты можно и так на лету, без обязательного создания ХП, полученный код будет прекрасно выполняться через EXECUTE IMMEDIATE
Да действительно. Вечно я про эту команду забываю. Просто ни разу в реальной жизни ее не использовал :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678462
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА что проверка на синтаксис отсутсвует как класс?
WebSQL проверяет на синтаксис свои макрокоманды в компилируемом документе. Сам документ он не проверяет по той простой причине (повторюсь), что он ничего про него не знает. И ему и не надо знать - его задача скомпилировать по контенту макета хранимую процедуру, реализовав в ней всю указанную для него в документе логику управления формированием контента и привязкой его к SQL-запросам и операторам.

авторНу если внешний компилятор делать на java то и библиотеку его можно и нужно хранить в jar'ах. БД там совсем не нужна :)
Зачем чего то делать на Java и требовать наличия у пользователя JVM, когда это прекрасно работает на родном языке ASA WatcomSQL ? Другое дело, что на Java было бы неплохо сделать собственный дизайнер построения макетов, с поддержкой семантики WebSQL, но это уже из другой оперы. У меня неплохо с построением макетов справляется GoldFusion Studio и даже OpenOffice.

автор ASCRUSподдержкой кроссплатформенности на разных ОС,
Java. Если кроссплатформенность действительно нужна. Либо C компилируем перед распространением на разные платформы, а пользователи уж как-нибудь сами сумеют дополнительные макросы скомпилировать :)
Гм, зачем и тут Java, когда макросы - это имя макроса и тело макроса с поддержкой параметров, внутри которого могут идти WatcomSQL команды, тэги, текст, стили, вызовы вложенных макросов ... в общем все то, что нужно человеку для описания повторно используемого решения в макетах. То есть макрос - это кусок чего то, что можно повторно использовать. Особых требований к этому чего то нет - лишь бы параметры в теле макроса корректно обьявлялись.

авторВпрочем, "компилируемый макрос" уже звучит странновато :)
Макрос - это определенная последовательность действий, которую можно в дальнейшем повторно использовать (в случае с WebSQL макрос - это определеный фрагмент текста). Дальше уже зависит от логики технологии - можно макрос каждый раз интерпретировать и выполнять, можно сразу по его телу скомпилировать на каком то языке готовый скрипт и при ссылке на макрос уже сразу выполнять скомпилированный скрипт. В данном случае для WebSQL весь HTML макет можно назвать одним большим макросом, на основании которого строиться готовый к употреблению скрипт на WatcomSQL.

автор ASCRUS более сложной инсталяции (БД надежнее и легче скопировать и подключить к другой БД,
Ну да - ну да. А EBF кто накладывать будет? :) Разрешите напомнить - если база работала на более свежем сервере, то она откажется запускаться на более старом. А это значит что пользователи будут вынуждены выкачивать и накладывать пачку EBF'ов. А если они этого делать не хотят? Вот я например очень и очень долго не апгрейдил свои сервера с 7.0.2. Просто потому, что в 7.0.3 поменяли работу с локальными темп именами, и при переходе на 9-ку мне пришлось переписывать почти сотню ХП.
На 9-ке у меня таких проблем не наблюдается. Между версиями 7 и 9 по любому бы были конфликты хотя бы потому, что это можно сказать по ядру совершенно разные СУБД.

автор ASCRUSЕдинственное исключение из этого правила составляет PowerBuilder, на котором я продолжаю работать и который меня радует возможностями своих DataWindow и PowerScript, но при условии что он только используется по назначению - построении клиентских приложений.
"Tell me!" как говорят наши друзья американцы :) Только что два часа убил: пытался понять почему композитное DW начало криво рисоваться. В итоге экспортировал его в srd, стер из pbl, импортировал обратно - идеально отрисовалось. Что это было за явление так и не понял.
Ну это радости жизни :) PB всегда напоминает, что он то конечно молодец, но расслабляться с ним нельзя :)

автор ASCRUSКомпилировать скрипты можно и так на лету, без обязательного создания ХП, полученный код будет прекрасно выполняться через EXECUTE IMMEDIATE
Да действительно. Вечно я про эту команду забываю. Просто ни разу в реальной жизни ее не использовал :)
А вот поэтому и возникает некоторое непонимание, что я имею ввиду, потому как я частенько для автоматизации самого себя именно этой командой и пользуюсь. Стоит только заглянуть в FAQ/Примочки :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32678540
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм. Я по прочтении описания технологии и ее возможных перспектив, мягко говоря, был впечатлен. :) Особенно что это за неделю было придумано. :))

ASCRUSПричина этого кроется только в невозможности в HTML описывать собственные тэги, соотвествующе ввод несанкционированных тэгов повлек бы за собой возмущение различных дизайнеров и редакторов кода HTML.
А почему бы тогда для описания шаблонов не использовать XML?

Вообще говоря, это мне напоминает Sybase-совскую же PowerDynamo, которое они благопоолучно похоронили в пользу EAS. Там тоже описывались шаблоны на языке DynaScript и на выходе была готовая страничка или что-то еще, в зависимости от обработок. И прикручивается к любому веб-серверу, через CGI как минимум, про другие способы не скажу точно. У нас до сих пор на ней куча интранетовских сайтов работает.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32713762
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут чтобы особо на форуме не флеймить, решил кое какие описание развития моего MacroSQL (пришлось переименовать с WebSQL по причине того, что оказалось, что он не только Web) в форум Теста выкладывать. Кому интересно, можно глянуть:
/topic/121139#991228
- на этот раз я тут его прикрутил для генерации по однотипным шаблонам скриптов процедур, триггеров и функций WatcomSQL. Надоело мне ручками в БД одно и тоже писать, пусть теперь ASA за меня делает, я лучше буду мышкой галочки ставить где надо по табличкам БД :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32751643
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мельком прочитал, заинтересовало... А в каком сейчас состоянии WebSQL?
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32751676
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря в забавном :) На его основе я разработал методологию экстремального программирования на базе прототипов сущностей с эталонными свойствами и процедурами, плюс механизм обвязки в зависимости от установленных на таблицу аттрибутов триггеров и ХП. Например, у меня сейчас по этому поводу в БД автоматом по шаблонам в зависимости от аттрибутов генерятся где то 200 ХП и 150 триггеров на таблицы по шаблонам. Так же сейчас делается инструментарий под все это дело, с автоматической генерацией по шаблонам представлений по библиотеке стилей в формате DataWindow под PowerBuilder и DataWindow.NET.

P.S. Я готов выложить MacroSQL в OpenSource, однако пока у меня нет времени на его документацию. Хотя там честно говоря учить особо нечего - ровно 3 команды управления генерацией контента и WatcomSQL в качестве встроенного языка шаблонов. Другое дело, что необходимо вникать в саму концепцию.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32751753
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звучит мощно, но не понятно... :-)

я вот не могу понять, на основании каких исходных данных генерятся ХП и триггеры. И какой код в этих ХП и триггерах.

Можно на примере объяснить? Например, вот на таком примитивном:

Группа товаров (ИД, Наименование, Признак "не используется")
Товар (ИД, ИД группы, Наименование, Цена, Валюта, Описание, Признак "не используется").

Пусть условно нужно будет написать клиента для такой бд и сделать отчет (типа прайса).

Это была задача. Теперь решение. Сейчас у меня уйдет день на сделать это все с нуля полного - включая рисование бд в ервине (логика+физика), написание клиента, создание отчета, создание инсталяшки и пр.

К вечеру я получу законченный продукт в полном смысле этого слова - с рюшечками и бантиками.

Чем может тут помочь WebSQL?



И второй вопрос. Какова дальнейшая судьба этой затеи? Это будет опенсурс или платный продукт?
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32751830
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сержя вот не могу понять, на основании каких исходных данных генерятся ХП и триггеры. И какой код в этих ХП и триггерах.

Можно на примере объяснить? Например, вот на таком примитивном:

Группа товаров (ИД, Наименование, Признак "не используется")
Товар (ИД, ИД группы, Наименование, Цена, Валюта, Описание, Признак "не используется").

Пусть условно нужно будет написать клиента для такой бд и сделать отчет (типа прайса).

Это была задача. Теперь решение. Сейчас у меня уйдет день на сделать это все с нуля полного - включая рисование бд в ервине (логика+физика), написание клиента, создание отчета, создание инсталяшки и пр.

К вечеру я получу законченный продукт в полном смысле этого слова - с рюшечками и бантиками.

Чем может тут помочь WebSQL?
Как известно любой проект состоит из 2 частей - непосредственной бизнес-логики, реализуемой по постановке и физической реализации на основании возможностей инструментария (системная логика). MacroSQL позволяет писать повторно используемые шаблоны решений для SQL (как для бизнес-логики, так и для системной логики), для генерации динамических страничек HTML, генерации по шаблонам XML и т.д.

Думаю по HTML и XML все понятно - рисуется шаблон, в котором указываются поля и правила их заполнения. В случае SQL все похитрее. Приведу одно из используемых мной решений:

Постановка
- в проекте есть понятие закрытого периода. Все данные, которые были введены ранее открытого периода не могут уже изменяться.

ТЗ
- на таблицы с такими данными нужны триггера BEFORE INSERT, UPDATE, DELETE которые запрещали бы изменения данных в закрытых периодах.

Решение
- пишем шаблон этих триггеров, MacroSQL компилирует его в ХП - теперь достаточно вызвать эту ХП и передать ей имя таблицы и имя поля, означающее дату ввода информации - на выходе на эту таблицу будут автоматически сгенерированы соотвествующие триггера по шаблону, естественно со всеми отступами, ремарками и всем тем, как написал автор шаблона.

Это примитивная ситуация использования шаблонов. На самом деле шаблоны можны рисовать гораздо мощнее - например во время генерации обьекта БД по шаблону требуется генерить ту или иную часть скрипта в зависимости от метаструктуры обьекта. Ну например для генерации процедуры добавления записи в таблицу необходимо во первых сгенерить ее параметры, соотвествующие именам и типам полей таблицы, во вторых если присутствует инкремент-поле, то необходимо параметру поставить тип возврата OUT. Соотвествующе в теле шаблона можно вставить обычный WatcomSQL код, который обращается к метаструктуре указанной таблицы, получает нужные данные и в зависимости от результата генерит ту или иную часть скрипта шаблона. Сейчас у меня на свой проект более десятка шаблонов на все случаи жизни - поддержку хранения данных в истории, их изменения задними числами, организация проверок на изменения системной информации, создание ХП для клиента на изменения и удаления данных и т. д. Все генерится автоматически, если чего то не хватает, то достаточно изменить шаблон и заново запустить генерацию.

СержИ второй вопрос. Какова дальнейшая судьба этой затеи? Это будет опенсурс или платный продукт?
Я думаю это будет open-source. На его базе я сейчас веду эксперементальную разработку собственной платформы построения клиент-серверных приложений, так что было бы здорово, если бы технология MacroSQL получила распостранение и в силу возможности использования повторно используемых шаблонов и макросов обрастала бы решениями в различных направлениях. Звучит конечно помпезно, но на самом деле те кто видел эту технологию признают, что в этом что то есть :)
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32751839
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSДумаю по HTML и XML все понятно - рисуется шаблон, в котором указываются поля и правила их заполнения.

А как указываются правила? Ведь правило может быть совсем не тривиальным.

ASCRUS
На его базе я сейчас веду эксперементальную разработку собственной платформы построения клиент-серверных приложений

Слова красивые, но меня ими не запугать ;) Что понимается под платформой построения кс-приложений? КС-приложения состоят из серверной части (в нашем случае АСА) и клиентской, которую пишут на каком-то средстве. Что это будет за средство, ПоверБилдер?

Или может будет все на АСА, а клиент - использование возможностей веб-сервера АСА?
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32751946
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серж ASCRUSДумаю по HTML и XML все понятно - рисуется шаблон, в котором указываются поля и правила их заполнения.

А как указываются правила? Ведь правило может быть совсем не тривиальным.
Без проблем. В качестве языка управления генерации контента используется сам WatcomSQL, думаю никто не будет отрицать, что на нем можно описать самое нетривиальное правило, ну а если вспомнить что на нем можно вызывать и использовать Java обьекты ... то вообще неразрешимых задач на горизонте не видно.

Серж ASCRUS
На его базе я сейчас веду эксперементальную разработку собственной платформы построения клиент-серверных приложений

Слова красивые, но меня ими не запугать ;) Что понимается под платформой построения кс-приложений? КС-приложения состоят из серверной части (в нашем случае АСА) и клиентской, которую пишут на каком-то средстве. Что это будет за средство, ПоверБилдер?
Платформа поддерживает автоматическую генерацию по определенным стилям, описанных на DataWindow Expression, представлений DataWindow, экспортирующихся в библиотеки проекта на PowerBuilder или C#. Я мог бы конечно довести до полной автоматизации вообще построение клиентского приложения, но не вижу в этом смысла - у меня для PB есть целая иерархия продуманных и проверенных временем компонент и форм для построения качественного интерфейса. Полученный в результате генерации DataWindow элементарно можно далее просто открыть в DataWindow дизайнере PB, подредактировать (растащить мышкой поля, проставить lookup поля, дополнительные правила форматирования, проверок и т.д.). Далее достаточно наследоваться от нужной формы, прицепить туда готовый DataWindow и на коде PowerScript дописать интерфейсную часть бизнес-логики и сделать ее вызов с проекта. С учетом того, что при генерации DataWindow платформа уже проставила различные правила получения, сохранения и ввода информации, процесс получается быстрым и не сложным и вводить его дальнейшую автоматизацию означало бы лишать программиста клиентской части гибкости и подсовывать ему вместо PowerBuilder собственной средство разработки приложений, что было бы совсем печально (думаю такие печальные системы перечислять не стоит). Так что главный упор платформы - это не автоматизировать создание серверной или клиентской части, а реализовать 2 главных для проектирования парадигмы:
1. Обеспечить абстрагирование данных от кода - в платформе есть понятие прототипа сущности, у которого есть эталон полей, эталонные процедуры получения и сохранения информации, понятие связи с другими прототипами и юнит-тесты, успешное выполнение которых гарантирует правильность физического отображения в БД прототипа. Получается, что в независимости от способа физического проектирования и реализации сущности в БД, прототип всегда будет абстрагирующим слоем, гарантирующем серверной и клиентской части корректность и правильность работы с ожидаемой информацией.
2. Обеспечить разделение бизнес и системной логики. В данном случае моя платформа требует, чтобы вся основная бизнес-логика хранилась только на сервере. Клиенту оставляется только интерфейсная часть бизнес-логики. В тоже время платформа, в которую входит MacroSQL и мои компоненты построения интерфейсной части под PowerBuilder настаивает, чтобы системная логика как для БД, так и клиентской части была максимально повторно-наследуемой и автоматической. Если условия БД требуют, чтобы на определенные таблицы вводилась триггерная проверка на невозможность изменения информации задними числами, значит такая проверка должна быть написана в виде шаблона и для соотвествующих таблиц установлен аттрибут из словаря аттрибутов, который укажет шаблону, что на них будут сгенерированы соотвествующие триггера. Для клиентской части в плане системной бизнес-логики предоставляется ООП иерархия компонент и форм, что позволяет просто наследоваться от нужных обьектов и изначально получать требуюмую функциональность. В данном случае в моей иерархии ключевыми фигурами являются прототипы главных и дочерних форм, компонент для построения визардов ввода и изменения информации, а так же наследованный DataWindow контрол с расширенной функциональностью. Все обьекты автономны и при использовании в проекте могут быть наследованы для дальнейшего расширения их базовой функциональности и использовании при построении клиентской части приложения.

ASCRUS
Или может будет все на АСА, а клиент - использование возможностей веб-сервера АСА?
Вариант построения тонкого клиента на браузере вполне возможен и с помощью MacroSQL легко автоматизируется, где можно взять любой HTML редактор для рисования шаблонов форм и отчетов, бизнес-логику вынести в ХП, а управляющий код интерфейса (системную логику), описываемых тэгами и JavaScript, автоматизировать с помощью использующейся технологии макросов (по принципам ближе всего к функциональным языкам). Будет неудобство в том, что HTML редакторы будут управляющий код для MacroSQL видеть как комментарии, так что в случае написания собственного RAD средства можно было бы добиться действительно удобной для рисования HTML-клиентов IDE. Однако во первых я не имею времени писать свою IDE, во вторых будет очень сложно реализовать на JavaScript для браузера всю ту функциональность, которую изначально предоставляет PowerBuilder. Лично я предпочитаю идти по пути наименьшего сопротивления и всегда пользоваться существующим, чем изобретать свое. Однако для генерации динамических сайтов думаю при соотвествующей обвязке с веб-сервером и тем же PHP мой MacroSQL мог бы принести несомненную пользу и перенести с PHP на ASA всю бизнес-логику сайта, оставив PHP такие системные вещи, как управление сессиями, обеспечение защиты, работы с электронными деньгами и т.д.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32753741
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за пояснения.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32761488
dp_tnd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUSP.S. Я готов выложить MacroSQL в OpenSource, однако пока у меня нет времени на его документацию. Хотя там честно говоря учить особо нечего - ровно 3 команды управления генерацией контента и WatcomSQL в качестве встроенного языка шаблонов. Другое дело, что необходимо вникать в саму концепцию.

Бало бы очень интересно посмотреть/попробовать. Заниматься изобретением велосипеда к сожалению нету времени :(. Интересует в первую очередь генерация html.

Страничка http://62.141.90.19/websql/asademo/customers мне не доступна :(
(62.141.90.19 даже не пингуется)

А документация - достаточно по 1 примеру шаблона на каждую конструкцию, особенно с иллюстрацией вложенных секций. с реализацией отношения master->detail.

Если примеры и MacroSQL можно откуда-то утащить - пришлите пожалуйста сылку на dp_tnd@km.ru. Или в форуме обнародуйте. А лучше обоими способами - читать форум регулярно не получается.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32761557
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо - я на выходные постараюсь на ASADemo чуть порисовать шаблонов на HTML. Если все получится, то я исходники MacroSQL и шаблоны выложу прямо на SQL.RU .

P.S. Данный ip не пингуется, потому что это мой домашний компьютер, сейчас он в оффлайн днем, так как вроде никто особо к нему не обращается. Скоро он будет работать в режиме с 8-00 до 22-00 кроме выходных, так как на нем я хочу открыть FTP. Можно будет тогда на нем и ASA как веб-сервер поднять.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32761710
dp_tnd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUSХорошо - я на выходные постараюсь на ASADemo чуть порисовать шаблонов на HTML. Если все получится, то я исходники MacroSQL и шаблоны выложу прямо на SQL.RU .


Спасибо! Жду с нетерпением !!! :-))
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32762182
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал делать сайт на базе демонстрационной базы ASADemo. Сайт доступен тут: http://62.141.90.19 , предположительно будет работать с 8-00 до 22-00 ежедневно. Все остальное я буду выкладывать в его новости.
...
Рейтинг: 0 / 0
Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
    #32762187
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм, работать то он начал, только пока по интернету почему то недоступен. В понедельник буду выяснять у провайдера.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Приглашаю к обсуждению собственной технологии построения динамических веб-страниц на базе ASA 9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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