Краткий обзор применения perl для реализации пользовательского интерфейса в системе комплексной автоматизации (системе документооброта): работа с wxPerl и. Net компонентами




НазваниеКраткий обзор применения perl для реализации пользовательского интерфейса в системе комплексной автоматизации (системе документооброта): работа с wxPerl и. Net компонентами
Дата публикации26.03.2013
Размер54.6 Kb.
ТипДокументы
odtdocs.ru > История > Документы
Краткий обзор применения perl для реализации пользовательского интерфейса в системе комплексной автоматизации (системе документооброта): работа с wxPerl и .Net компонентами

Система “Globus Professional” (www.eis.ru) построена по классической трехзвенной архитектуре:


Рис. 1. Архитектура «Globus Professional»

Клиентская часть на данный момент реализована в виде desktop-приложения. Первым запускается программа (реализована на С++), которая производит чтение настроек, ввод данных (адрес сервера, логин, пароль), соединение с сервером, аутентификацию пользователя и при необходимости обновление клиентского приложения с сервера (при верных введенных данных).



Рис. 2. Вход в «Globus Professional»
Далее запускается perl-интерпретатор, который загружает код по работе с GUI и реализует часть бизнес-логики.





Рис. 3. Клиентское приложение.
Графический интерфейс реализован с помощью библиотеки wxWidgets

(http://www.wxwidgets.org/).

Эта написанная на С++ библиотека предоставляет средства для работы с GUI, базами данных, потоками, файловой системой, логгированием и т.д. Портирована на несколько операционных систем (Windows, Linux, OS X, Unix, WinMobile, iPhone SDK), существует несколько библиотек для работы с ней из других языков программирования ( Python, Ruby, Perl ). Для работы с библиотекой из perl используется используется расширение: wxPerl (http://wxperl.sourceforge.net/).

Работа с wxPerl достаточно проста. Ниже приведен код для создания графического окна с меню.


  1. создание класса приложения.



use Wx;
# every program must have a Wx::App-derive class

package MyApp;
use strict;

use warnings;
our @ISA=qw(Wx::App);
# this is called automatically on object creation

sub OnInit {

my( $this ) = @_;
# create new MyFrame

my $frame = MyFrame->new( "Minimal wxPerl app",

[ 50, 50 ], #position

[ 450, 350 ] #size

);
# set it as top window (so the app will automatically close when

# the last top window is closed)

$this->SetTopWindow( $frame );

# show the frame

$frame->Show( 1 );
1;

}


  1. класс окна.



      package MyFrame;



use strict;

use warnings;
our @ISA=qw(Wx::Frame);
use Wx::Event qw(EVT_MENU);

use Wx qw(wxBITMAP_TYPE_ICO wxMENU_TEAROFF);
# Parameters: title, position, size

sub new {

my $class = shift;

my $self = $class->SUPER::new( undef, -1, $_[0], $_[1], $_[2] );
# load an icon and set it as frame icon

$self->SetIcon( Wx::GetWxPerlIcon() );
# create the menus

my $mfile = Wx::Menu->new( undef, wxMENU_TEAROFF );

my $mhelp = Wx::Menu->new();
my( $ID_ABOUT, $ID_EXIT ) = ( 1, 2 );

$mhelp->Append( $ID_ABOUT, "&About...\tCtrl-A", "Show about dialog" );

$mfile->Append( $ID_EXIT, "E&xit\tAlt-X", "Quit this program" );
my $mbar = Wx::MenuBar->new();
$mbar->Append( $mfile, "&File" );

$mbar->Append( $mhelp, "&Help" );
$self->SetMenuBar( $mbar );
# declare that events coming from menu items with the given

# id will be handled by these routines

EVT_MENU( $self, $ID_EXIT, \&OnQuit );

EVT_MENU( $self, $ID_ABOUT, \&OnAbout );
# create a status bar (note that the status bar that gets created

# has three panes, see the OnCreateStatusBar callback below

$self->CreateStatusBar( 1 );

# and show a message

$self->SetStatusText( "Welcome to wxPerl!", 1 );
$self;

}


  1. обработчики элементов управления.



# this is an addition to demonstrate virtual callbacks...

# it ignores all parameters and creates a status bar with three fields

sub OnCreateStatusBar {

my $self = shift;

my $status = Wx::StatusBar->new( $self, -1 );
$status->SetFieldsCount( 2 );
$status;

}
# called when the user selects the 'Exit' menu item

sub OnQuit {

my( $self, $event ) = @_;
# closes the frame

$self->Close( 1 );

}
use Wx qw(wxOK wxICON_INFORMATION wxVERSION_STRING);
# called when the user selects the 'About' menu item

sub OnAbout {

my( $self, $event ) = @_;
# display a simple about box

Wx::MessageBox( "This is the about dialog of minimal sample.\n" .

"Welcome to wxPerl " . $Wx::VERSION . "\n" .

wxVERSION_STRING,

"About minimal", wxOK | wxICON_INFORMATION,

$ self );

}


  1. Запуск приложения


package main;
# create an instance of the Wx::App-derived class

my $app = MyApp->new();

# start processing events

$app->MainLoop();

С помощью библиотеки wxWidgets мы решаем почти все задачи по графическому интерфейсу. Эта opensource библиотека динамично развивается. Появившиеся в версии 2.7.0 классы Advanced User Interface (AUI) позволили за краткие сроки реализовать конструктор автоматизированных рабочих мест (АРМ): настройка состава и внешнего вида фиксированных наборов программных модулей, решающих заданный функционал (формирование заявок клиентов, поиск по базе данных и тд).



Рис. 4. Конструктор АРМ.





Рис. 5. АРМ регистратора заявок пользователей.
Для обхода ошибок и реализации некоторых нюансов wxPerl написали «костыли» (в виде *.pm), некоторые правки были отправлены в виде bug-reports команде wxWidgets.

На wxPerl был написан инструмент для отладки кода в работающем клиенте «Globus».



Рис. 6. Инструмент отладки перлового кода ( KIT ).
Разработчик может подключить этот модуль к работающему клиентскому ПО, и изменить выполняющийся код, посмотреть значения переменных, получить лог, и т.д. Выполнение perl кода выполняется через eval. Выполняющийся код модифицируется через таблицу символов. Данный инструмент позволяет настраивать свой набор сниппетов, поддерживает плагины, настройки внешнего вида, включая расцветку отдельных синтаксических элементов, просмотр содержимого таблиц символов, сохранение/восстановление сессий работы, профилирование работы кода.


Для расширения функционала в “Globus Professional” поддерживается работа с .Net компонентами. Это позволяет разрабатывать «продвинутые» элементы управления, или использовать сторонние продукты (к примеру, компоненты DevExpress).
Работа с .net элементами возможна несколькими способами:

    1. регистрация ActiveX-компонент

      perl -Mblib -MWx::ActiveX::Template -e"run_wxactivex_template();"





Рис. 7 Создание пакета для ActiveX компонента.
Работа с компонентом:


          use Win32::OLE;
          use Win32::OLE::Const;
          use Win32::OLE::Variant;
          use Wx::ActiveX::RolledCalendar;



$dlg->{'_Xcalendar'} = Wx::ActiveX::RolledCalendar->new( $dlg );

$main_sizer->Add( $dlg->{'_Xcalendar'}, 1, &Wx::wxGROW|&Wx::wxALL, 0 );

$dlg->{'_calendar'} = $dlg->{'_Xcalendar'}->GetOLE();

$dlg->{'_calendar'}->SetDate( $date );



$date = $dlg->{'_calendar'}->GetDate();

….

$dlg->{'_Xcalendar'}->Destroy();
2) работа с Common Language Runtime (CLR)
use Win32::CLR;
Win32::CLR->load_from( $path );
$fineReaderWrapper = Win32::CLR->create_instance( "EISFREWrapper.Wrapper" );
$fineReaderWrapper->setOutputFormat( $format );

Добавить документ в свой блог или на сайт

Похожие:

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

Выступление на семинаре учителей информатики и икт
Сегодня мы представим Вам краткий обзор существующих программ, установленных в операционной системе линукс (alt и ubuntu), и расскажем...

Счёт до двадцати в трёх различных системах
Деление можно осуществлять в столбик, как и в десятичной системе. Однако это, как и в десятичной системе, включает в себя сложение...

Лабораторная работа №7 по курсу «тфкп» на тему: «Java-апплеты»
Лабораторную работу выполнить можно выполнить в какой-либо среде разработки, но без использования визуального редактора пользовательского...

Обзор средств разработки и размещения проектов asp. Net
Для разработки данного пакета программ был выбран язык C#. Net. Язык очень схож с современными языками программирования, от которых...

Инструкция для директора по работе в комплексной автоматизированной...
Регулярно просматривать доску объявлений и сообщения почтовой системы каис «сго»

Построение динамической модели реального времени глкс
За этот период система прошла большой путь от проектирования и планомерной реализации до практического применения. На этом пути было...

Курсовая работа по дисциплине “Микропроцессорные системы”
Работа выполняется на системе “прототип” на основе микроконтроллера 51 семейства

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

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

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница