sergejus zabinskis projects overview: 1985 - 2005
Post on 01-Jan-2016
15 Views
Preview:
DESCRIPTION
TRANSCRIPT
SERGEJUS ZABINSKISProjects overview: 1985 - 2005
INTRODUCTION
I graduated Mathematics Faculty of Vilnius State University in 1985. As almost all students at that time I gained fundamental mathematics background from algebra and calculus to functional analysis and topology. Also I gained a good background in numerical computational methods that helped me much in my work.All my work experience is very close to computer programming. I hope that this slide show that contains some of the projects where I have been participating as a memberof team or alone will give you additional information about me.
IMAGE PROCESSING
Years: 1990-1992
Image processing algorithms and techniques
In the beginning of 1990s I was a member of an image processing initiative group, the objective of which was to acquire information on image processing methods and its applications. Here I got to know the main image processing techniques such as:
Fast linear box filtering Fast median filtering based on T.Huang algorithm Histogram equalization Local histogram equalization Image binarization methods Binary image skeletonization Contour extraction Contour tracing Component labeling Hough transformationThis experience helped me much in other projects.
Example of image preprocessing techniques
Original halftone image
Extracted and thinned contours of original image.
Example of image preprocessing techniques
Original halftone image Preprocessed image (histogram equalization procedure applied)
DRIVING THEORY TEST PROGRAM
Company: ALS
Years: 1994
Geometric modeling language
In 1994 I was hired by company “ALS” to develop driving theory test program. The main problem was to prepare program questionnaire that reached 500 questions, most of them contained graphics. To do that I invented a simple programming language to deal with 2D graphics objects such as lines, rectangles, polygons, circles, ellipses, etcLanguage also has the set of transformations - reflections, rotations, translations, scaling transformation. With the help of this language it is possible to encode complex enough graphic object such as road signs and symbolic situations on the road. I implemented language parser that converted source code to byte-code and engine to execute byte-code. Important to note that this approach let me do very compact questionnaire – it was very significant in the 1994.
Geometric primitives
Since project was implemented with Turbo C compiler, all graphic object directly correspond to graphics objects that were supported by BGI graphics:
arccircleellipsefillellipsefillpolylineouttextouttextxypiesliceputpixelrectanglesectorsetcolorsetfillpatternsetfillstylesetlinestyle
Geometric primitives
Geometric primitive Comment
PIXEL(X1,Y1) Point
SEGMENT(X1,Y1,X2,Y2) Segment
POLYLINE(X1,Y1,…,Xn,Yn) Sequence of connected segments
POLYGON(X1,Y1,…,Xn,Yn) Closed sequence of connected segments
RECTANGLE(X1,Y1,X2,Y2) Rectangle
FRECT(X1,Y1,X2,Y2) Filled rectangle
TRIANGLE(X1,Y1,X2,Y2,
X3,Y3)
Triangle
Geometric primitives (continued)
Geometric primitive Comment
CIRCLE(Xc,Yc, R) Circle
FILLCIRCLE(Xc,Yc, R) Filled circle
ELLIPSE(Xc,Yc, Rx, Ry) Ellipse
FILLELLIPSE (Xc,Yc, Rx, Ry) Filled ellipse
ARC(Xc,Yc, Fi1, Fi2, R) Arc
PIESLICE(Xc,Yc, Fi1, Fi2, R) Pie slice
SECTOR(Xc,Yc,Fi1,Fi2,Rx,Ry) Sector
Geometric primitive Comment
OUTTEXTXY(X,Y,Txt) Display text line
OUTTEXTFILE(X,Y,Filname) Display text from file
TEXTRECT(X1,Y1,X2,Y2,Txt) Display text in rectangle
TEXTCENTER(Y,Text) Display horizontally centered text line.
Geometric primitives (continued)
Graphical settings
Setting Comment
COLOR(color) Set current pen color
FILLSTYLE(style,color) Set fill pattern and color
LINESTYLE(style,width) Set style of lines and width
FONT(fontname) Set current font
Geometric transformations
Transformation Comment
TRANSLATE(DX,DY) Translation operation: (X,Y) (X+DX,Y+DY)
SCALE(COEFF) Scaling. Is performed in 4 steps:1. Computation of geometric object
centre of mass (Xc,Yc)2. Translation of object to (0,0). In other
words we do TRANSLATE(-Xc,-Yc). So after that object’s center of mass is moved to (0,0).
3. For each point of object (X,Y) perform multiplication:
(X,Y) (X*COEFF,Y*COEFF)4. Move object to the old place:
TRANSLATE(Xc,Yc)
STRETCHX(COEFF) Scaling that affects only X-coordinate
STRETCHY(COEFF) Scaling that affects only Y-coordinate
Geometric transformations
Transformation Comment
REFLECTX() (X,Y) (X, -Y)
REFLECTY() (X,Y) (-X, Y)
ROTATE(ANGLE) Rotation:FI=(ANGLE/180)*PI(X,Y) (X*COS(FI)-Y*SIN(FI), X*SIN(FI)+Y*COS(FI))
TRANSPON() (X,Y) (Y, X)
Examples of language constructions
COLOR(WHITE)TRANSLATE (45,30) { REFLECTY() { ROTATE (45) POLYGON (7,-15,70,-15,-70,-40,-70,0,-140,40,-70,15,-70,15,70) }}
This code snippet means that color of pen is set to white. After that we: rotate polygon to 45 degrees; apply reflection transformation for rotated polygon; finally translate it.
Example of real graphic object implemented using geometric modeling language
Source code (1)
#include "TRIS.PIC"COLOR (BLACK)FILLSTYLE (SOLID_FILL,BLACK)//// BUDKA//TRANSLATE (45,2) { FRECT (-20,-30,20,30) // WINDOW COLOR (WHITE) FILLSTYLE (SOLID_FILL,WHITE) TRANSLATE (0,-10) FRECT (-10,-10,10,10) COLOR (BLACK) FILLSTYLE (SOLID_FILL,BLACK) // KRYSHA TRANSLATE (2,-25) FRECT (-22,-5,22,5)}// KOTELTRANSLATE (-30,13) { POLYGON (7,-50,0,50,0,50,-20,-40,-20,-45,-15,-48,-10,-49,-5) REFLECTX () POLYGON (7,-50,0,50,0,50,-20,-40,-20,-45,-15,-48,-10,-49,-5)}
// ChimneyTRANSLATE (-55,-17) FRECT (-7,-10,7,10)// FUNDAMENTTRANSLATE (-5,45) FRECT (-72,-10,72,10)// BUMPERTRANSLATE (-75,50) FRECT (-10,-10,10,10)// WheelsTRANSLATE (-50,55) { COLOR (BLACK) FILLSTYLE (SOLID_FILL,BLACK) FILLCIRCLE (0,0,15) COLOR(WHITE) FILLSTYLE (SOLID_FILL,WHITE) FILLCIRCLE (0,0,12)}TRANSLATE (-10,55) { COLOR (BLACK) FILLSTYLE (SOLID_FILL,BLACK) FILLCIRCLE (0,0,15) COLOR(WHITE) FILLSTYLE (SOLID_FILL,WHITE) FILLCIRCLE (0,0,12)}
Source code (2)
Source code (3)TRANSLATE (30,55) { COLOR (BLACK) FILLSTYLE (SOLID_FILL,BLACK) FILLCIRCLE (0,0,15) COLOR(WHITE) FILLSTYLE (SOLID_FILL,WHITE) FILLCIRCLE (0,0,12)}
// DISKSTRANSLATE (-50,55) { COLOR (BLACK) FILLSTYLE (SOLID_FILL,BLACK) FILLCIRCLE (0,0,5) COLOR (WHITE) FILLSTYLE (SOLID_FILL,WHITE) FILLCIRCLE (0,0,2)}
TRANSLATE (-10,55) { COLOR (BLACK) FILLSTYLE (SOLID_FILL,BLACK) FILLCIRCLE (0,0,5) COLOR (WHITE) FILLSTYLE (SOLID_FILL,WHITE) FILLCIRCLE (0,0,2)}
//// SMOKE//COLOR (BLACK)FILLSTYLE (SOLID_FILL,BLACK)TRANSLATE (0,-115) FILLCIRCLE (0,0,12)TRANSLATE (0,-90) FILLCIRCLE (0,0,20)TRANSLATE (-20,-70) FILLCIRCLE (0,0,16)TRANSLATE (-55,-30) PIESLICE (0,0,0,180,6)TRANSLATE (-50,-40) FILLCIRCLE (0,0,6)TRANSLATE (-40,-45 ) FILLCIRCLE (0,0,8)TRANSLATE (-30,-50 ) FILLCIRCLE (0,0,10)TRANSLATE (-25,-55) FILLCIRCLE (0,0,10)TRANSLATE (-30,-60 ) FILLCIRCLE (0,0,10)
Source code (4)
Example of graphic object implemented using geometric modeling language
SIGNAL MEASUREMENT SYSTEM BASED ON RK2-01
Company: INMATSIS
Years: 1997
Acquired signal marker measurement
Acquired signal may be measured by markers, saved to database and printed.
Main parameters summary for acquired signal
Also program can estimate main parameters: peak-to-peak amplitude, amplitude, period, rise/fall times, impulse duration.
Signal database browser
Each signal may be retrieved from database to continue its investigation, exported to text file, printed and removed from database.
COMPENSATION OF WIDE-ANGLE OBJECTIVE OPTICAL DISTORTIONS
Company: INMATSIS
Years: 1998
Calibration transformation for wide-angle objective
This work was performed as part of signal registration research project. We used camera to get image directly from the screen of analogue measurement device. Here I used measurement grid images (graticule) to create calibration transformation to compensate wide-angle objective optical distortions.
Original image
Illustration of calibration transformation
Transformed image with compensated fish-eye objective distortions
Original imageTransformed image with compensated objective distortions.
Illustration of calibration transformation
NUMERICAL ALGORITHMS APPLICATIONS
Company: INMATSIS
Years: 1996-2000
Illustration of Savitzky-Golay smoothing filter
Illustration of locally weighted regression filter
HIGH SPEED NONREPETITIVE SIGNALS REGISTRATION SYSTEM K2-74
Company: INMATSIS
Years: 2001-2002
K2-74 view
K2-74 is the measurement system for registration of nonrepetitive and periodic signals in nanosecond and picosecond range. The main parts of system:
Analogue measurement device;Camera;Framegrabber;PC (interfaces: IEEE-488 or RS-232).
Screenshot of the device control page of K2-74
Extracted signal parameters and marker measurement page.
Signal extraction schemeHALFTONE IMAGEACQUIRED FROMOSCILLOSCOPE
SCREEN
IMAGE PREPROCESSING
SIGNAL EXTRACTION FROMPREPROCESSED IMAGE
CALIBRATIONTRANSFORMATION
RESULT:ELECTRICAL
SIGNAL
Image preprocessing (why needed)
We get noisy images while catching high speed signals. You can see many speckles on the image.
Image preprocessing (median filter)
To eliminate speckles we use median filter. In this program we implemented fast median filter. It processes images in real time.
Image preprocessing (speckles suppression)
Sometimes speckles always present on the screen. It may be caused by tube defect. In this case we simply put “black” circle over the speckle.
Image preprocessing (Region Of Interest)
Sometimes it is useful to process only part of the screen. We call it region of interest. It can fasten image processing and as we see here it can leave speckles outside.
Image preprocessing (image averaging for repetitive signals)
Single image Averaging along the sequence of 10 images
How we extract signal from image
Accurate signal extraction
We used two ways to extract signal points from raster image:- mass center method- pixel distribution approximation using Gaussian function.
The first way is very fast but not accurate. And the second way is very accurate but needs more CPU time (nonlinear optimization problem is solved for each point of signal trace section).
Here is the illustration of pixel distribution peak estimation using the second way.
Comparison of two ways of signal extraction
Blue signal is extracted using mass center methodGreen signal is extracted using Gaussian approximation method
Calibration grid
Example of calibration grid that is used to build calibration transformation for time/div= 10 ns.
Example of signal trace
Extracted signal
Example of signal trace
Extracted signal
Specialized programming language for waveform generation.
Company: INMATSIS
Years: 2000-2001
In 2000 our company produced measurement device with arbitrary waveform generation function. Waveform generation was performed on computer and after that waveform samples were downloaded to device.In order to simplify waveform generation I designed simple waveform generation language, its parser and interpreter.
Waveform generation language history
Waveform model structure
model model_name(comma-separated parameter list)[parametersParameters descriptions][exceptionsExceptions descriptions][varLocal variables declarations]programFunction body
Simple harmonic signal model
model SIMPLE_HARMONIC(DC, AMPL, FREQ, PHASE)parametersDC caption “DC” unit “V” of real domain [-5,5] default 0;AMPL caption “Amplitude” unit “V” of real domain [0,5] default 1;FREQ caption “Frequency” unit “Hz” of real domain [1, 19999999] default 1;PHASE caption “Phase” of real domain [0,360] default 0;exceptionswhen abs(DC+AMPL) > 5 message “Signal value is out of range!”programreturn DC+AMPL*sin(2*pi*FREQ*t+(PHASE*pi)/180);
model TELEVISION1(T0, AMPL, TAU, FREQ)parametersT0 caption “WIDTH” unit “V” of real domain [1,20] default 10;AMPL caption “Amplitude” unit “V” of real domain [0,10] default 2;FREQ caption “Frequency” unit “Hz” of real domain [1,10] default 0.8;TAU caption “Tau” of real domain [1,20] default 10var result, y of real;programif abs(t-T0) <= TAU/2 then y=AMPL*sqr(cos(pi*(t-T0)/TAU)) result=y*(1+sin(2*pi*FREQ*t))else result= 0endifreturn result
More complex waveform example
High Frequency Oscilloscope K2-76 software
Company: INMATSIS
Years: 2001
K2-76 view
In 2001 I came back to INMATSIS company and became small software developers team leader (4 programmers including me). This year was very fruitful for our company and me. In summer 2001 we started development of stroboscopic oscilloscope K2-76 software. Here I would like to accent that K2-76 had no manual controls – only power button.Before K2-76 appeared, every device designed and manufactured in INMATSIS was fitted for manual measurements and additionally had interface with PC. In contrary – K2-76 was fully controlled from PC.
Some history
Virtual measurement device features
K2-76 was system that we (in INMATSIS) call "virtual measurement device". “Virtual measurement device" means electronic measurement device and personal computer equipped with GUI application that lets user to control electronic measurement device, perform marker and automatic measurements of acquired signals, store signals in database, store device settings in database, etc.
I would like to say little bit more about device setting saving in database. For example, engineer prepares device for complex measurement. To do that engineer sets many parameters on device what takes some time. Doing the same action many times becomes really boring. So, if these actions will be repeated many times engineer may simply record all parameter settings he does now in order to reproduce the whole sequence of settings later from device settings database. Saving the sequence to database engineer may assign some name to this sequence that will immediately say him what kind of action it contains.
Device settings database
Screenshot
Multithreading allows user to do few jobs in one time: observe the samesignal in time and frequency domains.
Screenshot
Here you can see live rectangular signal of positive polarity and idealrectangular signal that approximateit. Also here we have the window with parameters of live signal and window with histogram of live signal.
RESTAURANT SERVICE SOFTWARE
Company: CONTRACT
Years: 1998-2000
For almost two years I worked as an independent Consultant in the restaurant sector. I worked for “Pizza-Jazz” company that run several restaurants and bars in Kaunas. A computer system for the automation of the waiter service. The system integrates PCs, ECRs (electronic cash registers) and kitchen printers and comprises three modules: the Waiter Console, the ECR-Server (program that provides ECR sharing between several Waiter Consoles) and the Print-Server (program that provides kitchen printers sharing between Waiter Consoles).
System overview
General scheme of restaurant system
The Waiter Console program, developed in CA-Clipper, facilitated the uploading/downloading of menus file to/from ECRs (Electronic Cash Register), created new orders, maintained existing orders, appended/edited/deleted items to/from orders, sent information to corresponding kitchen printers and closed orders via automatic sale registration on ECRs. Closed orders with the history of their updates were stored in an archive database.
Waiter console
The list of dishes uploaded to ECR
System to store/retrieve and generate company customers payment and information documents
Company: OMNITEL
Years: 2002-2003
Our company customers may receive about ten various payment or information document. The first project that I made in OMNITEL was design and implementation of information system to store/retrieve all documents that customers receive.
System contains three main parts:- document import program (used to import payment and other documents that are generated by our billing system to Oracle database). Documents (XML) are compressed and stored as blob fields;- program to design document templates that are used to generate documents in PDF format;- high performance stand-alone multithreaded web-service to retrieve documents and generate document representations (in PDF, XML or TXT formats);- various service programs;
The main part of system is stand-alone multithreaded web-service that run on IA64 Server under HP-UX (earlier on AlphaServer under HP Tru64Unix).
System overview
Who are the users?
Omnitel Portal – www.omni.lt
Customers get access to all payment documents for 24 hours each day.
Customer service offices
Customers may get their payment documents in customer service centers.
Automatic invoice delivery system
Customers may receive their payment documents via e-mail
Company staff Company staff has access to payment documents to solve customers problems.
Workflow
subscriber
www.omni.lt
SERVER (HP-UX 11)
subscriber
subscriber
query
Customer service offices(Vilnius,Kaunas,….)
Company staff
Subscribers
The main parts of system is stand-alone multithreaded web-service that run on machine equipped with 2 IA64 under HP-UX (earlier on AlphaServer under HP Tru64Unix). It was developed using C++ compiler (the first version for HP Tru64 – DEC C++ compiler and the second for HP-UX – using aCC), Other libraries and tools used are as follows:
Implementation details
pthreads POSIX threads library
gSOAP Free web-service development tool (developed by R.van Engelen)
Xerces-C Free XML processing library for C++
Zlib Free compression library for C
OTL(Oracle tempate library)
Free C++ wrapper around Oracle Call Interface (developed by S.Kuchin)
Web-service methods
Client Method Server
Client sends an XML
NewQuery Returns ID
Polling loop GetInfo Returns current status of query
Client downloads the set of generated documents
GetResult Sends file or part of file.
Client closes query
CloseQuery Removes query context
Typical scenario
NewQuery(“<billquery>…. </billquery>”)
Client
ID
Server
GetInfo(ID)
STATUS=Executing
………………………………….
GetInfo(ID)
STATUS=Completed
GetResult(ID)
PDF or TXT or XML
CloseQuery(ID)
STATUS=OK
PO
LLING
LOO
PD
OW
NLO
AD
ING
RE
SU
LT
Internal structure of web-service
Document generation web-service is multithreaded application.There are several types of threads performing document generation job:Dispatcher – the most important thread of application. It coordinates the work of several pools of threads;Listener – single thread that listens on socket for incoming connections;SOAP serving thread – performs all work concerning SOAP message decoding, method execution and SOAP response sending to caller.Logging thread – provides query logging in Oracle table. Query parser – thread that parses query and creates query context;Data extractor – thread that retrieves documents from Oracle tablesand prepares XML files for document generation in PDF or TXT;PDF generator – thread that runs PDF generation executable;TXT generator – thread that runs TXT generation executable;XML generator – thread that performs generation of XML document;Only dispatcher and listener threads are single because of their nature, other threads are grouped to pools of threads doing the same job.
<!-- DOCUMENT GENERATION SERVER CONFIGURATION FILE --><configuration> <common> <params> <param id="port" type="N">12173</param> <param id="backlog" type="N">200</param> <param id="output_directory" type="C">/usr/users/dgwebsvc1/output</param> <param id="temp_directory" type="C">/usr/users/dgwebsvc1/tmp</param> <param id="log_threads" type="N">3</param> <param id="qry_threads" type="N">2</param> <param id="db_threads" type="N">3</param> <param id="pdf_threads" type="N">4</param> <param id="txt_threads" type="N">2</param> <param id=“xml_threads" type="N">2</param> <param id="queue_capacity" type="N">1000</param> <param id="forminfo_refresh_interval" type="N">21600</param> <param id="formloader_refresh_interval" type="N">21600</param> <param id="txtman_refresh_interval" type="N">21600</param> <param id="watchdog_interval" type="N">100</param> <param id="query_expire_timeout" type="N">600</param> </params> </common> <generators> <generator filetype="pdf"> <params> <param id="pathname" type="C">/usr/local/bin/omnigen</param> <param id="form_directory" type="C">/usr/users/dgwebsvc1/forms</param> </params> </generator> <generator filetype="txt"> <params> <param id="pathname" type="C">/usr/txtgen/txtgen</param> </params> </generator> <generator filetype=“xml"> <params> <param id="pathname" type="C">/usrxmlgen/xmlgen</param> </params> </generator> </generators></configuration>
Configuration file
Server internals (new query)
DISPATCHERAcceptor [1] Socket number fd
[2] Socket number fd
[3] char[] query
Client
NewQuery(“<billquery> …")
[4] char[] query
[5] Query context
[7] Query context
[8] Extracteddocument(s)
in XML
[10] PDF documentis generated
[9] XML document
Pool of SOAP servingthreads Query parsing threads
Pool of PDF generators
Pool of data extractors
Web-service
ID
IDn
...ID
3ID
2ID
1 List
of q
uerie
s be
ing
proc
esse
d
[6] put query to the list
[11] query is completed
Client sends new query to server and receivesit’s ID. At the same time query processing loopis initiated on server side.
Server internals (get info)
DISPATCHERAcceptor [1] Socket number fd
[2] Socket number fd
[3] query ID
Client
GetInfo(ID)
Pool of SOAP servingthreads Query parsing threads
Pool of PDF generators
Pool of data extractors
Web-service
IDn
...ID
3ID
2ID
1 List
of q
uerie
s be
ing
proc
esse
d
[7] query is completed
[6] query is completed
[4] Is query completed?
[5] Yes
Queries
Server accepts two types of queries:
INFORMATIONAL
to know what documents were generated
DOCUMENT GENERATION
to retrieve documents’ content from database and generate PDF, TEXT or XML file
Queries are presented to server as XML strings.
<?xml version="1.0" encoding="ISO-8859-1"?><infoquery><customer date="20050216" id=“400920"> <params> <param name="format" value="XML"/> <param name="succeeded" value="ANY"/> <param name="docname" value="IQC4EB203A8C2256EC2003F026A"/> </params> <info selection="ALL"/></customer></infoquery>
Example of informational query
The result of this query will give the set of documents for customerNr. 400920 issued at 2005-February-16.
Example of document generation query
This query will generate PDF with customer payment receipt, consolidated invoice and detailed call list for two subscribers.
<billquery requestor="Sergejus Zabinskis"><customer date="20060216" id="400920">
<params><param name="format" value="PDF"/><param name="docname" value=“my doc"/><param name="succeeded" value="ALL"/>
</params><forms>
<form type="RECEIPT"/><form type="CONSOLIDATED"/><form type="DETAILS">
<subscriber id="69804222"/> <subscriber id="69838609"/>
</form></forms>
</customer></billquery>
Example of documents generated by web-service - receipt
Example of documents generated by web-service – consolidated invoice
Example of documents generated by web-service – detail call list
Billing system gateway server
Company: OMNITEL
Years: 2004-2005
Some History
OMNITEL uses it’s own made billing system. It was developed with GEMBASE 4GL and runs in OpenVMS environment. Billing system contains thousands of tables that store information used by many software systems and tens thousand lines of GEMBASE code. Many of applications that are used in company intensively use billing system information. So we need a reliable way of communication between system and their clients.Earlier clients communicated with billing system using archaic file-oriented interface using Lotus Notes as document flow carrier. Technically it was implemented very simple - each request for billing system was stored in separate file. Separate processes are created and GEMBASE image are loaded for each request file what causes great system resources waste. Also, since file processing is started from scheduler – response times are unacceptable.
Simplified scheme of such communication is illustrated by next slide figure.
“Old style” billing system interface
Query1
Query2
Query3
Query4
Result1
Result2
Result3
Result4
GEMBASE process Nr.1
GEMBASE process Nr.2
GEMBASE process Nr.3
GEMBASE process Nr.4
GEMBASE process is created for each
query
Output directoryInput directory
New way of billing system integration
Considerable step in the way of billing system integration into company information system was done introducing middleware server standing on the top on billing system.
BILLING SYSTEM
BILLING SYSTEM GATEWAY SERVER
CLIENT CLIENT CLIENT
Server overviewBilling system gateway server has two major parts:
• Standalone multithreaded web-service as front-end;• Pool of GEMBASE processes directly working with billing system as back-end;
GEMBASE processes talk with server through shared memory using special communication library implemented in C. GEMBASE processes once created stay resident in memory and are awakened by server only when new query appears. Since there is no need to create new process for each query system resources are used in very efficient way.
GEMBASE PROCESS
SERVER PROCESS
COMMUNICATION ROUTINE
Server and pool of GEMBASE processes
Query1
Query2
Query3
Query4
GEMBASE process Nr.1
GEMBASE process Nr.2
GEMBASE process Nr.3
GEMBASE process Nr.4
SERVER (DISPATCHER)
Anatomy of server and billing system interaction
SERVER PROCESS
1
2
3
4
5
6
1
2
3
4
5
6
C Communication
function
Service A
Service C
Service Z
Service Y
Shared memory area
Service B
Query result(s)
3rd GEMBASE PROCESS
Que
ry d
ata
for 3
rd pro
cess Query data for 3 rd process
Service A
Service B
Service C
Service Z
C Communication function
Input queue for 3rd GEMBASE process. Process is waiting for
data in queue
Output queue for 3rd GEMBASE process. Server is notified about data delivery using event. (AST
handler is called)
Communication function gets data
from input work queue and delivers it to
GEMBASE process
Communication function places query
result (record or recordset) to output
queue
Do service stuff
……
..
Query result(s)
Service Y
Switch(Service)
Select oval andtype. Control handles change width & height
of oval.
Each GEMBASE process ha it’s own memory region for
input data
Each GEMBASE process ha it’s own
memory region to put results.
Service dispatcher reads query data from input queue, retrieves service name from query and calls appropriate
service
Service Dispatcher procedure
Server states diagram
In order to make server more flexible in various situations it supports states.
STARTINGSHUTTING
DOWN
NOACCESS
READONLY FULL ACCESS
State that server keeps between application start and NOACCESS state
All databases are closed. All queries are rejected with
appropriate status code
State that server acquires immediately after receiving
“Shut Down” command
Databases are opened. Only queries that require read-only access are served. “Update”
queries are rejected with appropriate status code
No limitations - all queries are served
ServicesThe main function of billing gateway server is to dispatch query to right GEMBASE procedure. It means that server must call right procedure, supply it with parameters embedded in query body, “wait” until procedure is doing its job and after that acquire result. GEMBASE procedure that performs query specific job is called service. But service is not only piece of GEMBASE code. Server needs more information about procedure it will communicate with. For that purpose service specification file is provided. Service specification must contain information about GEMBASE procedure to call (name of procedure) and information about input and output parameters (how to extract parameters from query and how to present result understandable to caller). Service specification file is XML file that has :
Root element that contains service name and it’s mode (Read-only or Update) Parameters specification. Contains input and output parameter declarations.
Parameters specification part is the most important part of service specification, because it must be able to describe complex data structure that may be used in input and output parameters.
Service specification file
<service action="MultiTopUpAccount" mode="Update"> <input> <param> <array name="Subscribers"> <elem name="Subscriber" type="structure"> <elem name="ID" type="integer"/> <elem name="Amount" type="integer"/> </elem> </array> </param> </input> <output> <param> <array name="Results"> <elem name="Result" type="structure"> <elem name="ID" type="integer"/> <elem name="errorCode" type="integer"/> <elem name="errorMessage" type="string"/> </elem> </array> </param> </output></service>
In billing system gateway server each service is described by specification file – kind of XML that contains descriptions of service input and output parameters. Kind of description used is very flexible and lets model very sophisticated data structures: record, arrays of records, recursive arrays and so on.
Example of hypothetical service named “MultiTopUpAccount”, query and sample output.
<MultiTopUpAccount> <Subscribers> <Subscriber> <ID>123456</ID> <Amount>100</Amount> </Subscriber> <Subscriber> <ID>234567</ID> <Amount>200</Amount> </Subscriber> <Subscriber> <ID>345678</ID> <Amount>300</Amount> </Subscriber> </Subscribers></MultiTopUpAccount>
<MultiTopUpAccount> <Results> <Result> <ID>123456</ID> <errorCode>0</errorCode> <errorMessage>OK</errorMessage> </Result> <Result> <ID>234567</ID> <errorCode>2</errorCode> <errorMessage>Record not found</errorMessage> </Result> <Result> <ID>345678</ID> <errorCode>0</errorCode> <errorMessage>OK</errorMessage> </Result> </Results></MultiTopUpAccount>
Server integration into company information system
SOAP
SOAP
SOAP
OpenVMS Cluster
SOAP
Billing systemgateway server
GEMBASE GEMBASE GEMBASE
Pool of GEMBASE processes
OpenVMS node: OMNITE
.…..
Shared memory
http://omnite.omnitel.lan:12300
Round robin balancing Round robin balancing
OpenVMS node: OMNITM OpenVMS node: OMNITL
http://omnitm.omnitel.lan:12300 http://omnitl.omnitel.lan:12300
SOAP
SOAP
IVR LOTUSOMNITELDEALERS
PORTAL
SOAP
Load balancer
Load balancer
WebSphereAS
SOAP
COM+AS
DCOM
Implementation details Server was developed using mainly DEC C++ compiler with few modules written in pure C (shared library for GEMBASE) and GEMBASE. Other libraries, OpenVMS facilities and tools used are as follows:
gSOAP Free web-service development tool (developed by R.van Engelen)
Xerces-C Free XML processing library for C++
PPL OpenVMS Parallel Programming Library
pthreads POSIX threads library
AST OpenVMS Asynchronous system traps
ICC OpenVMS intra-cluster communication
GEMBASE 4GL programming language
THANK YOU!THANK YOU!
top related