The Gedemin Platform

High standarts in economic software development

By the millennium we had more than five hundred clients and the whole family of miscellaneous programs for all of business emergencies. Every yet another application was created practically from the ground up, had its own independent database and an original user interface. File server the Paradox Engine was bursting at the seams due to the growth of tables and the number of connections. The source code couldn’t hold every user’s specifics.

The limit was at hand.

So we took a blank piece of paper and realized three plain requirements to the on-coming platform:

  1. Single common database. SQL and a reliable client-server
  2. Uniform object access to relational tables
  3. On-the-fly customizability of the database structure, interface, algorithms, user reports

In 2000 Borland Software Corporation opened InterBase server source codes. Thus Firebird, a recent project with rich history, was created which is the natural and only choice for Gedemin platform.

It is the natural one because being a product of the same company it became perfectly integrated on the seamless access to API functions’ level with Delphi made developments and didn’t demand ODBC middleware.

It is the only one because at that moment there was no another free server with open source code, transactional support, multi-version record structure, triggers and stored procedures.

The embedded server mode brought all the great strength and reliability of SQL even in single user installations of programs on Gedemin platform.

In a relational database an object is stored in several interlinked tables. For example, Directory of contacts looks like this:

Using a traditional approach a programmer processes every table with some strict sequence. The more multiple structure of the database we have, the more complex software code there will be.

A business-object being our invention is a post-relational object-relational mapping (ORM) technology which solves following problems:

  1. Joins several relational tables into one entity
  2. Generates SQL- queries for a given database structure
  3. Manages transactions and save points
  4. Organizes user interface
  5. Controls data and functions access permissions
  6. Logs modifications of data and user activity
  7. Serializes data for filing

A programmer gets rid of routine work. The code is getting more simplified.

Unification of user interface allows to reduce users’ training costs and implementation time. There are two default windows for every business-object in Gedemin. The browsing form serves to display a list of records, filtering, sorting and selection. The record dialog window is meant for creating/ reviewing/ modifying of one object.

The platform includes a set of screen controls for visualization and editing of data sets and single fields of business-objects.

Tabular representation of information:

Search, selection, creation and editing of an object by using a dropdown list:

Execution of computations directly in the numerical entry field:

User friendly date interval calendar:

Five methods of finding information are available for the user. Three of them are being executed on the client side and two - on the server side. Filtering, being the most powerful of the methods, allows the operator to form multiconditional requests without reference to SQL- syntax. You need to show a list of delivery notes per January only for those clients who acquired some ware this month a year ago? Easy bit!

A set of fundamental references and common forms are included into the platform’s core. All the rest is being developed in the process of solving an original problem. For a new business-class it is required to:

  1. Create data structures
  2. Set up display forms
  3. Write a software code

The development language of Gedemin platform — VBScript — is easy to learn even for those specialists who have nothing to do with the computer industry. You will be given the whole set of necessary tools for effective programming, debugging and profiling tools.

Almost every task of organization’s automation includes registration of inventory items and fund movement between and among accounts. Gedemin relieves the developer from the necessity to reinvent the wheel by providing a table system for storage of accounting entries and stock floating. It’s possible to use several charts of account simultaneously. A sum of an entry is stated in rubles, currency and specialized by natural measures. An amount of analytic attributes is restricted only to the setter’s imagination.

The set of standard reports includes a Ledger, an Account card, Account review, the General ledger.

Entries of the Business transactions journal are formed on the grounds of a document’s details in the chain order:

Document Standard business transaction (SBT) Standard entry (SE) Entries of the BTJ

SBT and SE algorithms recognize the organization’s specificity and are designed in a special window with the help of predefined units without manual coding.

The deeper level of automation we have, the more paper we need to print documents and reports. This is a joke but as far as we know there is a grain of truth in every joke. In the foreseeable future paper records will still serve the purpose in the organization’s document flow.

The print output subsystem of Gedemin platform is Fast Report-based. This is a band-oriented report generator suitable for forming-up multipage, multi-instance and consolidated (cross-tab) reports, both static and on-line.

A formed document may be displayed, printed out, saved, exported into popular office formats (DOC, XLS, PDF) or sent in email.

There is also a special markup language provided for high-speed printing of reports by using dot matrix printers.

Organization data security is provided mutually by means of Firebird 3 server and Gedemin platform. What DBMS does is database file and over-the-wire encryption as well as database objects access control according to SQL-standard. The platform provides additional tools:

  1. Record-level access control
  2. Business class-level access control
  3. System functions access control
  4. Logging and user activity audit
  5. Triggers-level data change logging

Transfer of data from one relational database to another is a sophisticated problem. It’s necessary to observe all relational links and stick to the order while file recording. For the avoidance of duplication in loading global identifiers and unique fields of objects should be checked. Serialization mechanisms of the platform are used for data exchange and namespace loading (software code and metadata). In the latter case there is a human readable YAML data format used.

There is the web-client and web-server functionality built-in directly in Gedemin platform that allows connecting to web-servers, setting up web-interfaces and exchanging data through HTTP connections. Gedemin serves as a server for such mobile applications as GDMN Finance and Control and GDMN Payslip.

Imperative programming implies that the developer, using sequence of instructions, carries out algorithms that were assigned at a task description phase. The whole code is divided into some logically related modules and functions. While modify one of them may lead to some far-reaching consequences in the most unevident positions. When legal system and business processes of an organization vary continuously, the cost of software development and maintenance goes sky-high.

Declarative logic programming provides an opportunity to concentrate on task analysis and rules formulation instead of coding an algorithm. If the rule changes it guarantees its compliance to current logic or its inconsistency immediately becomes apparent.

Gedemin is the first technological platform where the programmer on the same basis as standard code applies Prolog language-based logic programming. Special mechanisms of the platform imply exchange between database and knowledge base which means generating of predicates, based on relational data, and uploading of solutions obtained.

Gedemin Platform offers an extensive set of tools for integration with external systems, industrial and retail equipment:

  1. Data exchange via text files by means of the framework feature and a specific language of markup
  2. Data exchange via XML or YAML files
  3. Data exchange via DBF files
  4. Work in a COM Server and Client mode
  5. Direct access to API functions of drivers and external libraries
  6. Work in a HTTP Server and Client mode
  7. Work in a FTP Client mode
  8. Connection to external databases by means of ODBC

Open-source software has a number of advantages. We’ll name some of them. First of all, it is a guarantee of the safety of investment, as long as industrial system’s survival of an organization can range from 20 years and longer. Not every software vendor can be in business for so long. Secondly, IT-departmental staff of the organization can have a hand in rework and progression of software. Thirdly, developers of external systems have a possibility to explore operation of the platform and create drivers for integration of their programs by themselves. Fourthly, it is a considerable reduction of the information system's total cost.

Gedemin Platform has open source code* and comes on condition of Gedemin Public License. To describe the core of the license briefly: if necessary, source code may be used for commercial purposes under the condition that all the modifications will be disposed in the public domain.

Such dominant technologies of the platform as DBMS Firebird and SWI-Prolog are also used as free software with open source code.

Let us remark that application solutions, supplied by Golden Software, Ltd, are not free and should be acquired separately.

*the only library which is not free of charge is a report generator Fast Report. An external developer has to take up a separate license for using it on official website.

Robustness of constructive decisions which are rooted in Gedemin platform was more than once checked-up in severe service conditions of the country’s largest enterprises. The following data was borrowed from databases being in service day-by-day.

Size of database file - 100 Gb
Concurrent database server connections - 170
Number of user accounts - 300
Number of employees - 5000
Number of databases in a sub-allocated holding entity - 16
Number of workstations in a sub-allocated holding entity - 400
Documents and their positions - 30 mn
Entries - 30 mn
Attributes of analytic account - 70
Business accounts and sub-accounts - 500
Inventory cards – 35 mn
Script-functions, macros, algorithms, event objects - 12 000
Lines of VBScript code - 700 000
Triggers - 5 800
Procedures - 423
Tables - 1 020
Components - 10 400
Indexes - 4 700

How to take a look at the platform’s functionality?

  1. Download and set up Enterprise all-in-one automation, which includes a single-user version of Gedemin platform and database with default functional methods.
  2. Read the manual and watch movie tutorials at our wiki.
  3. Ask more on message boards.
  4. At any time convenient for you we are ready to hold a presentation and answer your questions. Apply to the office of our company.

How to get Gedemin platform-based solutions?

  1. Choose a solution from the list.
  2. Decide on whether you need any staff-learning activity, rework, software implementation and maintenance.
  3. Specify a price of software and work in the currently important price-list.
  4. Apply to the company office for a contract and sales invoice to pay..

How to start Gedemin platform-based development?

  1. Download and set up distribution Programmer, which contains a single-user version of Gedemin platform and a clean database with minimal set of basic script-functions.
  2. If your solutions are based on modules of Golden Software, Ltd, you should set up git and clone gedemin-apps project. Upload necessary namespaces in the database.
  3. Read the manual and watch movie tutorials at our wiki.
  4. Ask more on message boards.

How to get source code of Gedemin platform?

  1. Check out and accept the terms of Gedemin Public License.
  2. Follow the installation instructions for necessary software and Gedemin platform or make use of a pre-configured virtual machine.
  3. Read the manual and watch movie tutorials at our wiki.
  4. Ask more on message boards.
  5. Remember to send your modifications to the shared repository.