Artem Saveliev
ResumeWork About meDiary
Russian
Computers are useless. They can only give you answers.
Pablo Picasso

XFDL reflection

XFDL technology uses reflection that is provided by Microsoft .NET to read and write data. The following two C# methods getClassValue and setClassValue read and write values from a class and its property/field, the path to which is stored in o and c.DataField variables. The name of the field can be complex, for example address.City:

WebControl.cs . new window . source file

Database Adapter

To simplify the database communication and to make porting the application to a different database easy, most of my projects use database library. It provides abstraction from actual database API. Specifically .NET allows this by providing abstract classes like IDataReader, IConnection etc., and also universal objects like DataSet, DataTable etc. The following methods provide the foundation for database adapter. Usage of
System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]
allows me to store database connection string in a web.config file for a web application:

Adapter.cs . new window . source file

JavaScript data validation

For many web projects that deal with data entry, especially business applications, proper format of data entry is very important. This is why I developed JavaScript data validation library. It allows developers to add validation of input field by writing one line of code. Here are some sample methods from that library:

jsverification.js . new window . source file

Great Plains eConnect sender example

Microsoft Great Plains, being a classic client-server application, doesn’t have almost any middle tier. However, it provides an API to write such a middle tier, which partly implements what is available via GUI. That eConnect interface is based on XML, where all data exchange is done with XML documents. Integration of an application with Great Plains is done via reading and writing such documents. By using SELECT … FOR XML AUTO SQL SQL syntax in MS SQL Server to read data, all you have to do is write XSTL transformation. Below I provide an example of typical sales document (invoice) that I send to Great Plains:

XML document:
invoice.xml . new window

XSLT Transformation:
invoice-to-gp.xslt . new window . source file

The result:
invoice-gp.xml . new window

XSL-FO XSL translation example

XSL-FO is a document layout language based on XML. This is why the most convenient way to describe a document is to use XSLT that is based on application data schema. To print a document I used above, I wrote the following template

XML document:
invoice.xml . new window

XSLT transformation:
invoicestyle.xslt . new window . source file
that file is linked from
invoice-solid.xslt . new window . source file
or
invoice-tramsparent.xslt . new window . source file
for a pre-printed form

Result (after XSL-FO generator ran):

invoice.pdf . new window . îòêðûòü PDF ôàéë

DHTML+XSL+XML menu example

A user menu in applications is generally stored in resource files or on html page in case of web applications. However, the standard hierarchical representation of data in XML files makes it perfect storage. Below I give an example of menu data and menu generator:

XML file containing menu description
Menu1.xml . new window

XSLT menu transformation file
menu.XSLT . new window . source file

The result, combined with menu.js . new window . source file and menu.css . new window . source file is a DHTML page, which shows the following dynamic HTML menu:


menuResult.html . new window

ENI File catalog (CMS)

Many busyness systems and business web sites include file management system (news, reference documents etc). The following code written in VBScript is a file management form of that system:
form.asp . new window . source file

Visio billing design

For business systems that we provide via ASP model (subscription) I developed a billing system. It allows us to sell monthly (subscription) and one-time services, and to flexibly create new subscription services and products. It also does payment aging. Here I provide an example of Visio Enterprise Architect usage to create C# code skeleton using UML:

billing system.vsd . new window . Visio ôàéë

Quote process

One of the products we developed is car parts sales system. That process starts with a quote. Here I provide a client interaction diagram which shows the process of the quote:

quote process.vsd . new window . Visio ôàéë

Transfer process

Another business process in that product is transfer of products from one store or warehouse to another. That process was drawn to finalize the business logic design with the client:

quote process.vsd . new window . Visio ôàéë

CRM

Generic term CRM describes a system that allows sales force to communicate with clients or potential clients. It also allows a group of people to maintain history of contact with a client. The system maintains history of phone calls, e-mail and other types of contacts. It provides easy way to make decisions about particular client, search for hottest prospects and contact them, all within one product. For example, during the lifecycle of one of our products I developed similar management system. The following are pages that manage that system and statistics page:

createjob.asp . new window . source file

filterjob.asp . new window . source file

XSL-FO Java server

The XSL-FO module of our product uses Apache FOP library. Because of that I had do use Java language, with DOM and XPath libraries. This is real example of a class that is center part of the server – XSL-FO document analyses, PDF and PostScript transformation management and resulting PostScript modification:

Monitor.java . new window . source file