Статьи

Взгляд на валентина

Valentina — это набор инструментов, в том числе: Valentina DB (новый сервер баз данных SQL), Valentina Studio (инструмент управления базами данных), Valentina Report (графический интерфейс для создания отчетов, которые будут использоваться в приложениях, таких как PHP), и соответствующий инструментарий разработки ( называется ADK).

В этой статье мы рассмотрим:

  • Как использовать Valentina Studio для управления нашей базой данных MySQL;
  • Как использовать Valentina Report для создания презентабельного отчета.

Однако мы не будем обсуждать базу данных Valentina, так как невозможно охватить новый сервер базы данных и описать его основные механизмы в такой короткой статье.

Валентина Студия

Valentina Studio, инструмент управления базами данных, имеет две версии. Один бесплатный и может быть загружен здесь . Другая версия — Pro, с большим количеством функций, по цене 200 долларов за единицу. Обе версии поддерживают платформы Windows, Mac и Linux, что делает его кроссплатформенным инструментом.

В этой статье я буду использовать Valentina Studio Pro. Спасибо Валентине за предоставление мне ключа для моей установки и оценки.

Скорость запуска Valentina Studio быстра, быстрее, чем у другого инструмента, который я использую. Его основной интерфейс имеет 3 панели:

Рис. 1 Приветственное окно

  • Серверы: обеспечивает управление базой данных на основе CS. Он поддерживает четыре типа «серверов»: MySQL, PostgreSQL, Валентина и ODBC. Он поддерживает соединения как с локальным сервером, так и с удаленным сервером. В моем случае мы видим два удаленных MySQL-соединения и одно локальное. Красная точка перед соединением (или «Закладка» в терминах Валентины) означает, что сервер в данный момент не работает. Зеленая точка означает, что он работает.
  • База данных: поддерживает управление файлами на основе файлов. В настоящее время поддерживается Валентина DB и SQLite.
  • Проекты: это в основном используется при создании отчетов. «Отчет», сгенерированный Валентиной, может находиться локально и удаленно. Но он должен иметь поддержку Valentina Report Server (в комплекте с Valentina Server) для вызова из приложения. Проект отчета управляет источником, запросом и дизайном отчета. Мы рассмотрим это позже.

После выбора сервера базы данных на этом сервере будут отображаться в следующем представлении каскадных столбцов:

Это мой любимый вид в студии Valentina. В этом представлении различные уровни объектов (база данных, таблица, поля, ссылки, индексы и т. Д.) Отображаются в столбцах в каскадном стиле. Выбрав базу данных в первом столбце, мы можем выбрать отображение таблиц, ссылок, представлений во втором столбце; а для таблиц просмотрите его поля, индексы и т. д. в третьем столбце. И окончательный уровень детализации будет отображаться в самой правой панели. Мы также можем создать и изменить объект соответственно.

Другое представление, менее используемое в моем случае, является представлением дерева:

Когда таблица выбрана, она отображает данные таблицы в виде сетки; Когда выбрано поле, отображаются только данные столбца. В сетке мы можем щелкнуть правой кнопкой мыши на записи, чтобы экспортировать эту запись в CSV или SQL.

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

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

Вообще говоря, Valentina Studio предоставляет богатые, но все еще нуждающиеся в улучшении функции. Например, в нем отсутствуют фильтры и навигация, независимо от того, находитесь ли вы в виде сетки и / или в виде вывода SQL. Это делает нашу работу тяжелее. Кроме того, в отличие от PHPMyAdmin, после операции (например, вставки поля) он не предоставляет оператор SQL для этой операции. В большинстве случаев это не удобно.

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

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

Наконец, понятно, что в бесплатной версии функции отключены. Но разница в функциональности между Valentina Studio Free и Pro слишком велика и почему-то не совсем оправдана.

Я даю Valentina Studio (Free и Pro) 3,5 балла из 5. Они пригодны для использования, но нуждаются в работе — особенно, чтобы оправдать счет в 200 долларов. Новички найдут бесплатную версию достаточно хорошей и смогут наслаждаться ею по нулевой цене. Решение о переходе на Pro или нет может быть принято после некоторого времени оценки.

Далее мы рассмотрим модуль Report.

Валентина Отчет

Это, пожалуй, особенность, которую я считаю наиболее интересной в Valentina Studio. Отчеты всегда отсутствовали в моем текущем приложении для сбора книг, поэтому я с удовольствием продемонстрирую, как создать отчет о моих коллекциях книг в PHP.

С Valentina Studio (и Valentina Report, Valentina Server) задача будет довольно простой.

Valentina Report — автономный файл проекта с расширением vsp . В стартовом окне (как показано на рис. 1 выше) мы выбираем « New Project|Local », выбираем имя для нашего первого проекта отчета Valentina, а затем сохраняем файл в определенном месте. Окно управления отчетами выглядит так:

Проект отчета будет содержать как минимум 3 элемента:

  1. Источник данных ( rsywx_test ). Мы можем выбрать это в диалоговом окне, отображающем все доступные на данный момент соединения и базы данных.
  2. По крайней мере, один запрос ( q_book_by_location ). Запрос основан на источнике данных, и оператор SQL может быть любым произвольным допустимым оператором SQL. Он не поддерживает визуализированный способ перетаскивания для разработки запроса, но поддерживает выделение кода и завершение кода (для ключевых слов SQL и имен таблиц / полей).
  3. Макет отчета ( rpt_location ). В нем есть мастер, который поможет нам разработать макет (поля для отображения, заголовок, нижний колонтитул, группировка, сортировка и т. Д.). Это довольно интуитивный процесс.

Поскольку мы настроим группировку и сортировку в дизайне отчета, предлагается, чтобы при разработке запроса мы включали только базовый запрос (просто выбрав поля и пропустив все операторы ORDER BY , GROUP BY ).

Окно управления отчетами хорошо спроектировано и предоставляет средства дизайна и возможности предварительного просмотра:

Дизайнер Valentina Report достаточно мощный и способен изменять почти все в отчете: стили (семейство шрифтов, размер, цвет, оттенок, граница и т. Д.), Макет (положение, поле, размер, выравнивание и т. Д.), Агрегация ( количество, сумма и т. д.) особенности и т. д.

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

ПРИМЕЧАНИЕ. В бесплатной версии «сохранение» отключено, поэтому инструмент отчетов практически бесполезен. Я бы предложил команде Valentina рассмотреть возможность добавления функции сохранения в их бесплатную версию.

Примечание. Как обычно, для отображения китайских символов необходимо установить шрифт для семейства китайских шрифтов. В противном случае семейство шрифтов по умолчанию (Arial) будет просто отображать китайские символы в виде блока.

Примечание. Хотя в процессе работы мастера можно выбрать несколько тем, у него нет кнопки повторного выбора темы для применения новой темы. Это немного неудобно.

После того, как мы завершили дизайн отчета, мы можем сохранить его и покинуть интерфейс дизайна. Далее мы увидим, как вызывать этот отчет в нашем PHP-скрипте и выводить его в разных форматах (будут продемонстрированы HTML и PDF).

Вызов отчета Валентина в PHP

Чтобы использовать Valentina Report в PHP, нам нужно поместить два расширения Valentina в нашу среду PHP. В моей установке Windows эти две библиотеки DLL: php5?_pdo_valentina.dll и php5?_valentina . Немного странно заметить, что эти два файла находятся НЕ в каталоге установки Valentina Studio, а в <user>\Documents\Paradigma Software\VPHP_5 .

В настоящее время Valentina Studio официально поддерживает PHP 5.3 и 5.4, библиотека 5.5 (скомпилированная в VC9) доступна по запросу, но библиотека 5.5, скомпилированная в VC11, еще не доступна. Это вынудило меня отказаться от установки EasyPHP.

Также нам понадобится сервер отчетов Valentina (входит в комплект поставки сервера Valentina). Его можно скачать здесь для Windows, Linux и Mac.

Чтобы использовать отчет в PHP, нам нужно подготовиться:

  1. Установите сервер Valentina (и сервер отчетов). Установка сервера будет иметь пользователя по умолчанию ‘sa’ (пароль ‘sa’).
  2. Скопируйте файл проекта отчета vsp в каталог сервера в projects , например: c:\Program Files\Paradigma Software\VServer x64\projects\ .
  3. Снова запустите Valentina Studio и (если его еще нет) создайте закладку на только что установленный сервер Valentina.
  4. На этом локальном сервере Valentina будет узел «Проекты», в котором будет показан только что скопированный файл VSP. Нажмите «Зарегистрироваться», чтобы зарегистрировать его.

Теперь мы можем открыть этот отчет на «сервере» и просмотреть его, чтобы убедиться, что все работает.

Итак, теперь у нас есть сервер отчетов, сервер MySQL, и мы перейдем к программированию PHP на стороне клиента. Общая структура этой трехслойной системы примерно такова:

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

Вызов отчета, который мы разработали ранее в PHP, прост. Сначала мы увидим, как сделать HTML-отчет:

 $host =   'localhost' ; $username =   'sa' ; $password =   'sa' ; $conn_id =  prepare ( $host ,  $username ,  $password ); $report_file =   "V-rsywx.vsp" ; 

 // Create VProject, get report dumped with data $project =  vproject_create ( $conn_id ,  $report_file ); $report_id = vproject_make_new_report_with_datasource ( $project ,   'rpt_location' ,   "mysql://host='localhost', dbname='rsywx_test' user='root' password='xxxxxx' " ,   "select * from book_book" ); 

 // Get the output and render to HTML $html_data = vreport_print_to_buffer ( $report_id ,  VALENTINA_REPORT_PRINT_TYPE_TO_HTML ,   1 ); 
 print ( $html_data ); 

 // Clean up vreport_close ( $report_id ); vproject_close ( $project ); valentina_close ( $conn_id ); 

 // The helper function 
 function  prepare ( $host ,  $login ,  $pass )   { 
     // For Standalone VPHP only $conn_id =  valentina_connect ( $host ,  $login ,  $pass ); 

     if   (! $conn_id ) 
         die ( "error connecting to VServer!" ); 

     return  $conn_id ; 
 } 

Валентина имеет полное справочное руководство по APIсправочное руководство по PHP ), поэтому, пожалуйста, ознакомьтесь с функциями и соответствующими параметрами.

Общий процесс:

  1. Подключайтесь к серверу Valentina, а не к серверу MySQL.
  2. Получить ссылку на проект и создать отчет с необходимыми данными.
  3. Визуализируйте отчет и распечатайте HTML.
  4. Убирайся

Все приведенные выше утверждения говорят сами за себя, кроме одного:

 $report_id = vproject_make_new_report_with_datasource ( $project ,   'rpt_location' ,   "mysql://host='localhost', dbname='rsywx_test' user='root' password='xxxxxx' " ,   "select * from book_book" ); 

Эта функция не имеет справочной записи в руководстве (она имеет аналогичную функцию vproject_make_new_report ), поэтому мне приходится полагаться на пример кода, который предоставляет Валентина.

Первые 2 параметра проще. Один для идентификатора ресурса проекта ( $project ) и один для имени отчета ( rpt_location ), который также может быть целочисленным индексом (начиная с 1).

Третий параметр — это строка подключения к серверу MySQL, где на самом деле хранятся данные. Почему мы должны предоставить новый источник данных? Источник данных используется для разработки отчета, поэтому, когда мы указываем отчет, источник данных уже должен быть исправлен, верно?

Что ж, ответ Валентины на это таков: на этапе проектирования мы можем использовать тестовый сервер, и конфигурация будет отличаться от той, которую мы используем на рабочем сервере. Таким образом, предоставляя / переопределяя соединение, мы можем переключиться на рабочий сервер без повторного выполнения файла отчета.

4-й параметр — это строка запроса для получения данных. Подождите! Мы создали запрос в дизайне отчета. Почему мы должны предоставить новую строку запроса?

Из моей переписки с Валентиной я получил тот же ответ, что и выше.

Но это не имеет смысла. Дизайн и макет отчета основаны исключительно на базовых данных. В моем случае я выбираю информацию о своих книгах и группирую их по местоположению, автору и сортировке по названию. Все эти «дополнительные» функции указаны в макете отчета (не в запросе). Поэтому, если мы предоставляем совершенно другой запрос, скажем, вместо выбора из таблицы book_book , мы выбираем из таблицы book_review , мы теряем контроль над тем, какими будут выбранные данные, так как мы будем использовать совершенно другой набор результатов!

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

Вывод в браузере хороший. Он имеет точный вывод, как показано в предварительном просмотре.

Чтобы вывести отчет в формате PDF, нужны только два небольших изменения:

 $html_data = vreport_print_to_buffer ( $report_id ,  VALENTINA_REPORT_PRINT_TYPE_TO_PDF ,   1 ); header ( 'Content-Type: application/pdf' );      

header функция header , иначе вывод будет искажен. Вывод будет показан в браузере, и мы можем сохранить его для дальнейшего использования.

Форматы вывода также включают SVG, LaTex, PostScript и т. Д. Он также имеет аналогичную функцию вывода для сохранения вывода в файл на диске: vreport_print_to_disk .

Вывод

В этой статье мы представили «нового ребенка на блоке»: Валентина. Мы показали, как использовать инструмент управления базами данных GUI (Valentina Studio) и его сервер отчетов (в комплекте с Valentina Server).

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

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

Тем не менее, на мой взгляд, его API (ADK) имеет большие возможности для совершенствования и требует доработки. Я привел пример выше ( vproject_make_new_report_with_datasource ), чтобы показать одно направление.

Его установочные каталоги в Windows также должны быть более согласованными:

  • Валентина Студия 32 бит: Program Files (x86)
  • Валентина сервер 64 бит: Program Files
  • PHP lib и файлы примеров: <User>\Documents\

В любом случае, я могу рекомендовать Valentina Studio и Valentina Server для личного и делового использования.

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