Журнал LinuxFormat - перейти на главную

LXF98:Ананас

Материал из Linuxformat
(перенаправлено с «LXF98:Ананас3»)
Перейти к: навигация, поиск
Ананас

Содержание

Создаем CRUD-приложение

ЧАСТЬ 2 Вариации «Hello, World!» набили оскомину – и Андрей Паскаль будет стараться избежать надоевшего приветствия до последнего, а попутно создаст бизнес-приложение, не написав ни строчки кода!


Важно! Загрузить изображения...


Из чего состоит приложение Ананаса? Как начать работу над собственной бизнес-схемой?

В стародавние времена хорошим педагогическим приемом считалось дать в начале учебника пример программы, печатающей на экране приветствие «Hello, World!».

Времена меняются, требования растут, и вот уже новая педагогическая мода диктует необходимость демонстрировать в качестве примера первого приложения не просто команду вывода на экран, а целую готовую программу по редактированию таблицы базы данных. Такая программа должна уметь Создавать, Показывать, Изменять и Удалять данные в таблице БД, поэтому ее принято называть CRUD-приложением, по первым буквам английских слов Create, Retrive, Update, Delete.

Так как Ананас – бизнес-платформа, то и наше первое CRUD-приложение будет редактировать данные о бизнес-партнерах, также называемых иногда контрагентами. Итак, сегодня мы разработаем CRUD-приложение «Справочник контрагентов». Интересно заметить, что среда разработки платформы Ананас позволяет создать CRUD-приложение без какого-либо написания кода, так что я даже не стал бы называть такую деятельность программированием. Скорее это проектирование.

Для каждого контрагента в справочнике будет храниться следующий упрощенный для нашего случая состав реквизитов:

  • Наименование;
  • Почтовый адрес;
  • Телефон;
  • E-Mail;
  • Банк.

Разработка бизнес-схем ведется в среде разработки Дизайнер платформы Ананас (Рис. 1). После успешного запуска командой

[app@app ~]$ ananas-designer

Дизайнер предложит выбрать бизнес-схему для работы из списка, точно так же, как предлагает выбрать бизнес-схему при запуске сам Ананас. Однако, в отличие от Ананаса, Дизайнер предоставляет доступ к настройке и созданию/модификации структур данных, алгоритмов, а также печатных и экранных форм бизнес-схемы.

Для создания новой бизнес-схемы требуется указать (или создать новую) группу в окне диалога выбора бизнес-схем и активировать пункт Новая бизнес-схема меню Действия.

Открывшийся диалог позволяет задать параметры новой бизнес-схемы. Наиболее важными из них являются параметры доступа к базе данных на SQL-сервере и положение файла бизнес-схемы в файловой системе вашего компьютера. Если вы укажете несуществующую базу данных или несуществующий файл бизнес-схемы, они будут созданы Ананасом автоматически.

На Рис. 2 показан пример заполнения параметров настройки бизнес-схемы для случая использования MySQL в качестве сервера баз данных.

  • Имя файла ресурса содержит ссылку на файл, в котором хранятся значения всех остальных полей этого диалога. Имеется возможность выбора ранее созданного файла ресурса: для этого достаточно вызвать диалог выбора файла щелчком по кнопке, расположенной справа от поля с именем файла ресурса. При открытии файла ресурса значения всех полей диалога будут заменены значениями из этого файла.
  • Заголовок базы данных' предназначен для пользователя и отображается в списке доступных для выбора баз данных в диалоге Список бизнес-схем, появляющемся при старте Дизайнера.
  • Имя базы данных содержит имя базы данных, используемое системой при доступе к серверу базы данных.
  • Тип сервера базы данных позволяет выбрать один из поддерживаемых Ананасом серверов баз данных (MySQL, PostgreSQL или SQLite). Разумеется, следует убедиться, что соответствующий выбираемому вами типу сервер установлен и запущен, так как здесь вы указываете лишь драйвер, который не будет работать, если не установлен соответствующий сервер.
  • Адрес сервера базы данных – это адрес компьютера, на котором установлен сервер выбранного выше типа. Разумеется, сервер баз данных может работать как на том же самом компьютере, где вы установили Ананас, так и на любом другом. Если сервер баз данных запущен локально, здесь следует указать значение localhost. В остальных случаях следует узнать адрес сервера у системного администратора. Адрес может быть задан как DNS-именем (например, myhost.com), так и числовым значением (например, 127.0.0.1).
  • Порт сервера базы данных по умолчанию не содержит никакого значения. Его следует задавать лишь в тех случаях, когда используется нестандартный порт, что случается достаточно редко. По этому вопросу следует консультироваться с системным администратором, выполнявшим установку сервера баз данных. Если вы выполняли установку сервера баз данных самостоятельно и не меняли порт сервера баз данных, то поле Порт сервера базы данных следует оставить пустым.

Задав таким образом значения полей, следует нажать кнопку OK, а затем выбрать только что определенную бизнес-схему и снова нажать OK. После получения подтверждения о локальном сохранении настроек (в каталоге ~/.ananas) откроется главное окно Дизайнера.

Наше CRUD-приложение предназначено для управления Справочником контрагентов, поэтому в дереве бизнес-объектов (Рис. 3) нас в первую очередь будет интересовать раздел Справочники. Определение справочника начинается с присвоения ему имени, которое в дальнейшем будет использовано в программировании бизнес-логики в процедурах на языке Ананас-Скрипт. В главном окне Дизайнера щелкните правой клавишей мыши по разделу Справочники и в появившемся меню выберите пункт Новый.

В появившемся экранном диалоге закладка Общий позволяет задать имя справочника и заполнить поле Описание. На данном этапе в этом диалоге больше ничего изменять не требуется. Следует закрыть его и перейти к определению реквизитов Справочника контрагентов. Разумеется, среда разработки Ананас позволяет организовать древовидную структуру справочника. Однако, желающих изучить эту тему я адресую к «Справочному руководству по Дизайнеру» Ананаса, а для нашего простого CRUD-приложения древовидная структура в Справочнике контрагентов нам не нужна.

Как только вы закроете диалог, где было задано имя справочника, в дереве бизнес-схемы появится папка с именем Справочник контрагентов, внутри которой видны папки Элемент, Группа, Формы. Для определения первого реквизита справочника следует щелкнуть правой кнопкой мыши по папке Элемент и выбрать пункт Новый появившегося меню. В открывшимся диалоге необходимо задать такие свойства реквизита, как Имя, Тип, Ширина (Рис. 4). Прочие свойства задавать не обязательно, их назначение описано в «Справочном руководстве по Дизайнеру». Закрыв диалог, следует повторить действия снова для определения второго, третьего и т.д. реквизитов справочника.

Диалог с пользователем

Задав реквизиты Справочника контрагентов, мы спроектировали структуру данных и подготовили место для их хранения. Теперь необходимо нарисовать экранный диалог для изменения сведений. Для этого следует щелкнуть правой клавишей мыши по подпапке Формы папки Справочник контрагентов и выбрать пункт Новый появившегося меню. В открывшемся диалоге важно определить ровно одно свойство (Режим формы), присвоив ему значение «Диалог элемента».

Именно это свойство отвечает за то, что форма будет использоваться в качестве редактора реквизитов элемента Справочника контрагентов всякий раз, когда пользователь будет добавлять нового контрагента или редактировать реквизиты уже имеющегося. Для собственного удобства целесообразно заполнить поле Имя каким-нибудь осмысленным текстом, например, Редактор реквизитов.

Теперь все готово для перехода к художественной, если можно так выразиться, части создания нашего приложения – «рисованию» экранного диалога. Запустите Редактор диалогов, нажав соответствующую кнопку на вкладке Дизайн – отобразится пустое окно. Слева от него будет расположена палитра доступных диалоговых элементов (виджетов) – окно Toolbox. Справа – редактор свойств элементов – окно Property Editor. Для нашего «натюрморта» будет достаточно использовать ровно три элемента палитры:

  • Text Label для подписей к полям ввода (Рис. 5).
  • DBField для полей ввода (Рис. 6)
  • ActionButton для кнопок Отмена и Принять (Рис. 6)

Для перетаскивания элементов требуется два клика: первый по элементу палитры, второй – по окну диалога. Перетащите пять раз TextLabel и DBField, разместив их по своему вкусу или как показано на Рис. 7, отредактируйте тексты надписей (двойной щелчок будет здесь незаменим) и задайте привязку для полей ввода, выбрав для каждого из них соответствующий реквизит Справочника контрагентов из списка. Список вызывается двойным щелчком по полю ввода, лежащему в окне диалога. Именно связывание данных (Data bindings), ставшее популярным благодаря таким средам разработки, как Borland Delphi и Visual Basic, и с успехом применяемое в среде разработки платформы Ананас, позволяет нам обойтись при создании CRUD-приложения без написания кода.

После проведения несложной процедуры связывания для всех пяти полей ввода,добавьте в окно диалога кнопки Отмена и Принять, использовав для этого элемент ActionButton палитры. Кнопка Отмена должна просто закрывать окно. Кнопка Принять должна дополнительно сохранять содержимое полей ввода в базе данных.

Поведение кнопки задается в диалоге, вызываемым двойным щелчком по ней. Для кнопки Отмена следует поставить галочки опциям Простое действие и Закрыть диалога. Для кнопки Принять следует поставить третью галочку – Обновить. Для смены текста надписи на кнопке в контекстном меню, вызываемом правой клавишей мыши следует выбрать пункт Edit Text....

Сделаем красиво

В принципе, мы уже закончили – наше приложение будет работать. Но, как всякий уважающий себя кулинар и садовник позаботится о внешнем оформлении своего творения, прежде чем показать его публике, так и программист должен позаботиться о привлекательности создаваемого им приложения. Для придания опрятности нашему диалогу воспользуемся возможностями динамического, автоматически масштабируемого размещения элементов. В этом деле нам помогут «пружинки» и типы размещения «Сетка», «Горизонтальные полоски» и «Вертикальные полоски».

Начнем с полей ввода и надписей к ним. Разместив вертикально две пружинки, как показано на Рис. 8, и выделив их все, последовательно щелкая мышкой и удерживая клавишу Shift на клавиатуре, применим тип размещения «Сетка». Получим первый блок сгруппированных элементов диалога. Проделайте то же самое с кнопками Отмена и Принять, только «пружинки» выберите горизонтальные, а тип размещения – «Вертикальные полоски». Последним шагом необходимо снять выделение, ткнув мышкой в пустую область окна диалога, а затем применить тип размещения «Горизонтальные полоски».

Не стоит печалиться, если требуемый результат не удастся получить с первого раза. Во-первых, всегда есть возможность отменить последнее действие при помощи клавиатурной комбинации Ctrl+Z, во-вторых, правила динамического масштабирования определяются, помимо прочего, свойством sizePolicy, индивидуально определяемым для каждого элемента диалога в редакторе свойств Property Editor.

Такая работа требует некоторой привычки и терпения первое время. Овладев методикой задания динамического масштабирования и расположения элементов, вы будете тратить на нее минимум времени.

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

Последний штрих

А теперь – сюрприз: немного кода все-таки потребуется. Дело в том, что среда исполнения приложений Ананаса не знает, какой экранный диалог нашей бизнес-схемы следует запускать сразу после старта, ведь в нашем приложении могло бы быть несколько экранных форм. Нужен какой-нибудь способ известить Ананас о том, что при старте он должен открыть наш Справочник контрагентов. Для этого предусмотрена предопределенная функция на Ананас-Скрипте с названием on_systemstart(). Если среда исполнения находит такую функцию в глобальном модуле бизнес-схемы при старте, она будет автоматически запущена на выполнение.

Доступ к глобальному модулю осуществляется через двойной щелчок по корню дерева бизнес-объектов в Дизайнере и выбор вкладки Глобальный модуль появившегося диалога.

Вот код, который нужно туда записать:

 function on_systemstart()
 {
    sys.Message(0,"Привет, Мир! :)");
    cat = new CatalogEditor("Справочник контрагентов");
    cat.edit();
 }

Да, да! Он все-таки напечатает «Привет, Мир!» :) в окне сообщений (Рис. 9).

Врезки

Элемент справочника

Элемент справочника – одна из двух составляющих любого справочника Ананаса. Второй составляющей является Группа. Группы служат для группировки элементов и организации вложенного хранения элементов справочников в виде древовидной структуры. Каждая группа может хранить в себе другие группы или элементы справочника. Элемент справочника предназначен исключительно для хранения реквизитов. Справочник, не содержащий группы, а состоящий лишь из одних элементов, принято называть плоским.

Диалог – это просто

Среда разработки Ананас оснащена великолепным WYSIWYG-редактором диалогов, позволяющим в наглядной форме разместить визуальные элементы, такие как надписи, кнопки и поля ввода в окне диалога.

Более того! Диалоги Ананаса являются динамически масштабируемыми, что, во-первых, совершенно необходимо для сохранения опрятного вида диалогов в гетерогенной среде, когда шрифты операционной системы Windows могут существенно отличаться в пропорциях от шрифтов среды X Window операционной системы Linux; во-вторых, создает дополнительные удобства в ситуации, когда пользователь желает растянуть окно диалога, чтобы использовать все разрешение своего экрана, улучшив тем самым отображение информации.

Персональные инструменты
купить
подписаться
Яндекс.Метрика