Докладчик: Сергей Климов Разработчик Москва 2008 БАНКОВСКИЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ ABL Новые возможности.

Презентация:



Advertisements
Похожие презентации
Structured Error Handling in the ABL Sarah Marshall QA Architect, OpenEdge Session 128.
Advertisements

Лекция 3 Раздел 3,1 Windows Phone Темы раздела 3.
Школьная форма Презентация для родительского собрания.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Michael Jackson
БЭСТ Дизайнер проектов Введение Концепции Основные понятия.
Типовые расчёты Растворы
Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Сергей Климов ЗАО «Банковские информационные системы» («БИС») Разработка.
Докладчик: Сергей Климов Разработчик Москва 2009 БАНКОВСКИЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ Новые возможности разработки в 10.2.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
SQL 2012 И ГИБКИЕ МЕТОДЫ КОМАНДНОЙ РАЗРАБОТКИ C TFS Добро пожаловать в команду! Alexander Yakovlev
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
БИТЕК «Бизнес-инжиниринговые технологии» г. Москва, тел.: (495) , Internet: Учебный.
НОВОСИБИРСК Развитие региональных порталов государственных услуг.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
1. Определить последовательность проезда перекрестка
Транксрипт:

Докладчик: Сергей Климов Разработчик Москва 2008 БАНКОВСКИЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ ABL Новые возможности

С.Климов / ABL новые возможности План Поймай меня, если сможешь Погружение в Architect Полный.NET 2

С.Климов / ABL новые возможности Отлов ошибок С новыми возможностями ABL сейчас вы можете поймать и обработать практически любую ошибку!

С.Климов / ABL новые возможности DEFINE TEMP-TABLE ttTable NO-UNDO FIELD intField AS INTEGER. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO. CREATE BUFFER hBuffer FOR TABLE TEMP-TABLE ttTable:HANDLE. /* Старый добрый NO-ERROR */ hBuffer:FIND-FIRST() NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: DELETE OBJECT hBuffer. MESSAGE ERROR-STATUS:GET-MESSAGE (1) VIEW-AS ALERT-BOX. RETURN. END. /* Другие действия */ DELETE OBJECT hBuffer. Как это было…

С.Климов / ABL новые возможности Недостатки Ловятся не все возможные ошибки Не все ошибки могут быть обработаны Нет гарантии, что динамический буфер будет удален Пользователь может увидеть системное сообщение об ошибке Несколько DELETE OBJECT

С.Климов / ABL новые возможности Как это ДОЛЖНО БЫЛО БЫТЬ… DEFINE VARIABLE vNoError AS LOGICAL. /* UNDO переменная */ /* Наличие блока гарантирует удаление hBuffer */ DO ON ERROR UNDO, LEAVE: CREATE BUFFER hBuffer FOR TABLE TEMP-TABLE ttTable:HANDLE. /* NO-ERROR и последующий анализ все еще необходим, ** чтобы не допустить появления сообщения об ошибке */ hBuffer:FIND-FIRST() NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: MESSAGE ERROR-STATUS:GET-MESSAGE (1) VIEW-AS ALERT-BOX. UNDO, LEAVE. END. /* Другие действия */ vNoError = YES. END. DELETE OBJECT hBuffer NO-ERROR.

С.Климов / ABL новые возможности Недостатки Ловятся не все возможные ошибки Не все ошибки могут быть обработаны Нет гарантии, что динамический буфер будет удален Пользователь может увидеть системное сообщение об ошибке Несколько DELETE OBJECT

С.Климов / ABL новые возможности Как это ДОЛЖНО БЫЛО БЫТЬ (Экстрим)… /* Скрываем возможные сист. сообщения от пользователя */ OUTPUT TO nul. /* /dev/null для UNIX */ DO ON ERROR UNDO, LEAVE: CREATE BUFFER hBuffer FOR TABLE TEMP-TABLE ttTable:HANDLE. hBuffer:FIND-FIRST() NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: MESSAGE ERROR-STATUS:GET-MESSAGE (1) VIEW-AS ALERT-BOX. UNDO, LEAVE. END. /* Другие действия */ vNoError = YES. END. OUTPUT CLOSE. DELETE OBJECT hBuffer NO-ERROR.

С.Климов / ABL новые возможности Недостатки Ловятся не все возможные ошибки Не все ошибки могут быть обработаны Нет гарантии, что динамический буфер будет удален Пользователь может увидеть системное сообщение об ошибке Несколько DELETE OBJECT

С.Климов / ABL новые возможности Как это ДОЛЖНО БЫТЬ СЕЙЧАС… CREATE BUFFER hBuffer FOR TABLE TEMP-TABLE ttTable:HANDLE. hBuffer:FIND-FIRST() /* NO-ERROR */. /* Другие действия */ /* Блок поймает все возможные ошибки */ CATCH err AS Progress.Lang.Error : MESSAGE err:getMessage(1) VIEW-AS ALERT-BOX. DELETE OBJECT err. RETURN. END. /* Этот блок гарантирует удаление буфера независимо ** от того была ли ошибка или нет */ FINALLY: DELETE OBJECT hBuffer NO-ERROR. END FINALLY.

С.Климов / ABL новые возможности Недостатки Ловятся не все возможные ошибки Не все ошибки могут быть обработаны Нет гарантии, что динамический буфер будет удален Пользователь может увидеть системное сообщение об ошибке Несколько DELETE OBJECT

С.Климов / ABL новые возможности Progress.Lang.Error CallStack property (SESSION:ERROR-STACK-TRACE или -errorstack) NumMessages property Severity property GetMessage ( MessageIndex ) method GetMessageNum (MessageIndex ) method

С.Климов / ABL новые возможности Progress.Lang.Error Progress.Lang.Object Progress.Lang.ProError Progress.Lang.AppError Пользовательский класс ошибок Progress.Lang.Error Interface

С.Климов / ABL новые возможности Пользовательские классы ошибок /* Класс ошибок преобразования типов */ CLASS CastError INHERITS Progress.Lang.AppError: CONSTRUCTOR PUBLIC CastError(mymsg AS CHARACTER, mynum AS INTEGER): AddMessage(mymsg, mynum). END CONSTRUCTOR. CONSTRUCTOR PUBLIC CastError(mynum AS INTEGER): SUPER("Ошибка преобразования типов",mynum). END. END CLASS.

С.Климов / ABL новые возможности Пользовательские классы ошибок PROCEDURE TestCastError: DEFINE VARIABLE i AS INTEGER NO-UNDO. i = INTEGER("AAA"). CATCH err AS Progress.Lang.Error : DELETE OBJECT err. RETURN ERROR NEW CastError("Ошибка преобразование 'AAA' в целое число",1). END CATCH. END. /* Новый способ обработки ошибки*/ DO ON ERROR UNDO,LEAVE: RUN TestCastError. CATCH err AS CastError : MESSAGE err:getMessage(1) VIEW-AS ALERT-BOX. END CATCH. END. /* Старый способ по-прежнему работает! */ RUN TestCastError NO-ERROR. IF ERROR-STATUS:ERROR THEN MESSAGE ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX.

С.Климов / ABL новые возможности Неуловимые ошибки … /* Возможная ошибка внутри функции не приведет к прерыванию */ FUNCTION fStr2Int RETURNS INTEGER (iStr AS CHARACTER): RETURN INTEGER(iStr). END. /* Возможная ошибка внутри процедуры не приведет к прерыванию */ PROCEDURE pStr2Int: DEFINE INPUT PARAMETER iStr AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER oNum AS INTEGER NO-UNDO. oNum = INTEGER(iStr). END. fStr2Int("AAA") NO-ERROR. MESSAGE ERROR-STATUS:ERROR VIEW-AS ALERT-BOX. DEFINE VARIABLE vNum AS INTEGER NO-UNDO. RUN pStr2Int("AAA", OUTPUT vNum) NO-ERROR. MESSAGE ERROR-STATUS:ERROR VIEW-AS ALERT-BOX.

С.Климов / ABL новые возможности … становятся уловимыми /* Делаем ошибки во всех подпрограммах доступными ** для нашего обработчика ошибок */ ROUTINE-LEVEL ON ERROR UNDO, THROW. FUNCTION fStr2Int RETURNS INTEGER (iStr AS CHARACTER): RETURN INTEGER(iStr). END. fStr2Int("AAA") /* NO-ERROR */. CATCH err AS Progress.Lang.Error : MESSAGE err:getMessage(1) VIEW-AS ALERT-BOX. DELETE OBJECT err. END CATCH.

С.Климов / ABL новые возможности Ошибки в функциях … /* Если преобразовать строку не удалось функция вернет ошибку */ FUNCTION fStr2Int RETURNS INTEGER (iStr AS CHARACTER): DEFINE VARIABLE i AS INTEGER NO-UNDO. i = INTEGER(iStr) NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN ERROR ?. RETURN i. END. /* Но сможем ли мы ее поймать?! */ fStr2Int("AAA") NO-ERROR. MESSAGE ERROR-STATUS:ERROR VIEW-AS ALERT-BOX.

С.Климов / ABL новые возможности … теперь могут и быть! ROUTINE-LEVEL ON ERROR UNDO, THROW. /* Если преобразовать строку не удалось функция вернет ошибку */ FUNCTION fStr2Int RETURNS INTEGER (iStr AS CHARACTER): DEFINE VARIABLE i AS INTEGER NO-UNDO. i = INTEGER(iStr) NO-ERROR. IF ERROR-STATUS:ERROR THEN UNDO, THROW NEW Progress.Lang.AppError("Function Error",1). RETURN i. END. /* которую мы сможем поймать! */ fStr2Int("AAA") NO-ERROR. MESSAGE ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX.

С.Климов / ABL новые возможности Заключение Унифицированная модель управления исключениями Возможность расширения системных исключений исключениями, специфичными для приложения Интегрированная работа нового и старого механизмов обработки исключений

С.Климов / ABL новые возможности План Поймай меня, если сможешь Погружение в Architect Полный.NET 21

С.Климов / ABL новые возможности Повторяем для следующего релиза Цикл разработки приложения Сбор требований Сбор требований Анализ Проектиро- вание Проектиро- вание Кодирование/ Тестирование Кодирование/ Тестирование Сборка, Сист. тестирование/ Производительность Профилирование Сборка, Сист. тестирование/ Производительность Профилирование Разверты- вание Разверты- вание Поддержка Итерация Переисполь- зование Переисполь- зование Потребности бизнеса Эксплуатация, Мониторинг, Управление Эксплуатация, Мониторинг, Управление

С.Климов / ABL новые возможности Набор инструментов разработчика Microsoft Project Microsoft Office Microsoft Visio Enterprise Architect Erwin / PCASE Progress Explorer Data Dictionary Data Admin Appbuilder Procedure Editor WebSpeed Workshop Beyond Compare, Araxis Diff RTB, CVS, VSS Textpad, ED4Win Windows Search Framework Visual Studio Mercury Interactive ProxyGen Compuware QA run PUNIT Call Tracking IE, Mozilla, Firefox Sonic DataXtend SI Homegrown tools ProlintProfiler Elverex auto test tool Firebug

С.Климов / ABL новые возможности Проектировщик Работа с проектными документами внутри среды разработки –Плагин для систем управления изменениями (CVS, Subversion, VSS) Моделирование и проектирование приложения с использованием UML –Плагин для Enterprise Architect Инжиниринг –Модель в код –Код в модель Сбор требований Сбор требований Анализ Проектиро- вание Проектиро- вание

С.Климов / ABL новые возможности Разработчик Назначение задачи –Mylin плагин Работа внутри системы управления изменениями Итерационное изменение кода и сравнение изменений Связь изменений с аннотациями Проверка кода на удовлетворение стандартам кодирование –ProRefactor / Prolint Генерация и изменение юнит-тестов Кодирование/ Тестирование Кодирование/ Тестирование

С.Климов / ABL новые возможности Специалист по интеграции Аннотация публичных сервисов Использованием ProxyGen внутри IDE для развертывания сервисов Публикация ABL кода в виде WebService из IDE Добавление сервиса к Sonic ESB Кодирование/ Тестирование Кодирование/ Тестирование

С.Климов / ABL новые возможности Специалист по качеству Использование листа подсказок (Cheat Sheets) Использование DB Navigator –Анализ изменений схемы данных –Валидация данных Использование Mylin и системы управления изменений для анализа изменений кода Запуск тестовой конфигурации, выполнение юнит- тестов Профилирование кода Тестирование / Производительность Профилирование Тестирование / Производительность Профилирование

С.Климов / ABL новые возможности Специалист поддержки Работа с заявками от пользователей внутри IDE –Плагин Bugzilla Просмотр изменений кода по заявке –Система контроля изменений / Meta Catalog –Инструменты сравнения Просмотр действий разработчика при решении заявки –Плагин Mylin Отладка измененного кода с помощью отладчика Тестирование / Производительность Профилирование Тестирование / Производительность Профилирование

С.Климов / ABL новые возможности Специалист поддержки разработки Создание представлений (perspectives) Кастомизация шаблонов Установка/определение правил Prolint Определение макросов для аннотаций Экспортирование настроек проекта Интеграция ABL инструментов в IDE Все

С.Климов / ABL новые возможности План Поймай меня, если сможешь Погружение в Architect Полный.NET 30

С.Климов / ABL новые возможности ОТРЕЧЕНИЕОТРЕЧЕНИЕ В разработке Презентация включает информацию о возможных будущих продуктах и(ли) их возможных улучшениях Все, что я собираюсь поведать, отражает текущее видение PSC, которое является неокончательным и может меняться. Т.о. будущие продукты PSC могут разительно отличаться от того, что описано здесь ОТРЕЧЕНИЕОТРЕЧЕНИЕ 31

С.Климов / ABL новые возможности Графический клиент –Объектно-ориентированный доступ к элементам управления.NET –Связь между ABL источником данных и.NET элементами управления –Написание обработчиков событий для.NET элементов управления OpenEdge Architect –Новый визуальный дизайнер форм –Базовый набор интерфейсных.NET элементов Дополнительно: –Набор расширенных элементов управления от Infragistics GUI компоненты 32

С.Климов / ABL новые возможности Усиление ABL –Один язык – нет нужды изучать языки C#, VB.NET –Прямой доступ к элементам управления.NET – не требуется никакого контейнера, как в случае с OCX –Связь между ABL источником данных и.NET элементами управления Единый инструмент: OpenEdge Architect –Нет необходимости в покупке, изучении или использовании других инструментов (Visual Studio) Основные преимущества 33

С.Климов / ABL новые возможности Интегрируется с существующим GUI на уровне сессии (не формы) Независимость от архитектуры развертывания – Клиент/сервер или n-звенная архитектура Расширяемость за счет элементов управления от сторонних разработчиков Адаптируемость к будущим улучшениям в области UI (Vista) Основные преимущества 34

С.Климов / ABL новые возможности Новая GUI архитектура OpenEdge Клиент OpenEdge рантайм Microsoft CLR OpenEdge UI (Controller).NET UI (View) Мост OpenEdge и.NET CLR внутри одного процесса GUI компоненты Доступ к данным Обработчики событий GUI компоненты Доступ к данным Обработчики событий GUI отрисовка События и взаимодействие с пользователем GUI отрисовка События и взаимодействие с пользователем 35

С.Климов / ABL новые возможности OpenEdge Клиент OpenEdge рантайм Microsoft CLR OpenEdge UI (Controller).NET UI (View) Мост Новый GUI в действии f = NEW Form( ). f:Closing:Subscribe( EventHdlr1 ). WAIT-FOR Application.Run( f:UIForm ). EventHdlr1( ) … EventHdlr2( ) …

С.Климов / ABL новые возможности GUI компоненты Содержит Progress.Windows.Form Создает все элементы управления на форме Подписка на события Связь источника данных и элемента управления Содержит обработчики событий Form.cls Startup.p Точка входа в GUI Создает Form.cls Выполняет WAIT-FOR Form / Data.p /.is Альтернативное хранилище для обработчиков событий Хранит объявления источников данных и запросов 37

С.Климов / ABL новые возможности.NET классы используются также как «родные» ABL классы –Разделяют базовый класс Progress.Lang.Object –Имена классов становятся чувствительные к регистру Поддержка.NET объектов со стороны ABL DEFINE PROPERTY UIForm AS Progress.Windows.Form GET. SET. DEFINE VARIABLE helloBtn AS System.Windows.Forms.Button. UIForm = NEW Progress.Windows.Form ( ). helloBtn = NEW System.Windows.Forms.Button( ). helloBtn:Text = Hello World. MESSAGE helloBtn:Text VIEW-AS ALERT-BOX. … 38

С.Климов / ABL новые возможности Типы.NET мапируются в ABL –Скалярные типы мапипуются в типы данных ABL –Ссылочные типы обрабатываются как ABL классы Мапинг типов ABL и.NET DEFINE VARIABLE iCnt AS INTEGER INITIAL 20. DEFINE VARIABLE lCount AS INT64 INITIAL … /* Call.NET method Method( int32 iCnt, long lCount) */ objRef:Method( INPUT iCnt, INPUT lCount ). INTEGER INT64 39

С.Климов / ABL новые возможности Улучшен WAIT-FOR для работы.NET формами Подписка ABL кода к.NET событиям Улучшения ABL UIForm:Load:Subscribe( UIForm_Load ). METHOD UIForm_Load( sender AS System.Object, eArgs AS System.EventArgs ): … WAIT-FOR Application:Run( UIForm ). WAIT-FOR Application:Run( ). WAIT-FOR UIForm:ShowDialog( ). 40

С.Климов / ABL новые возможности Связь ABL данных и.NET Связь ABL данных и.NET элементов управления (Databinding) –Новый объект Progress.Data.BindingSource –Использует источники данных ABL построенные на запросах (TT, PDS, DB) DEFINE VARIABLE CustBsrc AS Progress.Data.BindingSource. CREATE QUERY hdlQry. /* Prepare and open query */ CustBsrc = NEW Progress.Data.BindingSource( hdlQry,"*", "" ). custGrid:DataSource = CustBsrc. 41

С.Климов / ABL новые возможности Архитектура нового IDE OpenEdge Architect WYSIWYG дизайнер Генератор ABL кода Подписка на события Методы обработчики ABL Редактор Визуальный дизайнер OpenEdge клиент Eclipse Визуальный дизайнер: 42 Microsoft CLR OpenEdge рантайм

С.Климов / ABL новые возможности WYSIWYG создание и изменение формы –Определение формы Добавление.NET элементов управления –Установка свойств элементов управления –Объявление объектов data binding –Добавление подписок на события Инспектор классов –Показывает информацию о.NET и ABL классах Визуальный дизайнер Построен как плагин Eclipse для OE Architect 43

С.Климов / ABL новые возможности Миграция Сосуществование существующих GUI форм и новых.NET форм Миграция существующих GUI форм на.NET формы –Инструменты / стратегии –Возможен мапинг ADM2 / Dynamics ->.NET Нет необходимости изменения архитектуры приложения ( толстый клиент, клиент/сервер, n-tier ) 44

С.Климов / ABL новые возможности Дальнейшие шаги Переход на Release 10 Отделение бизнес-логики от UI –Перевод ON триггеров на методы Ознакомится с объектно- ориентированными возможностями –Создание и доступ к UI объектам –Вызов методов, доступ к свойствам –Подписка на события UI 45

Сергей Климов Разработчик tel: + 7 (495) Вопросы? 46

Thank You Merci Grazie Gracias Obrigado Danke Japanese French German Italian Spanish Brazilian Portuguese Arabic Traditional Chinese Simplified Chinese Hindi Tamil Thai Korean Спасибо!