Good day!
In this series of articles we want to talk about Ultima Businessware - our platform for building ERP systems.
This is the first introductory article in which we will tell about the evolution (that is, the environment and interaction with it) of the platform and list the main and most interesting features of the platform.
In the next posts we plan to talk about the details of the device and the implementation of these same features. In addition, during the presentation, we will share with the features of the organization of the development process with us.
Evolution
Now it is fashionable to put a link to Wikipedia after such a title, but we, non-conformists, will not do this. Actually, here we will focus on the environment in which the platform originated and developed.
So about the environment - started in 2004 on a server with 4GB of memory and 4 cores. And around the crowd circled in 150 users who really had to sell the product. And buy. And store, and deliver, and much more. And, I must say, these users thrashed buttons, without being distracted by lunch. Smoked and generally in the workplace. Summing up, we had thousands of transactions per hour. And it was not as scary as blocking - these crowds of users and even customers chased the goods through the site.
')
But besides this, the company managed to grow rapidly, which was accompanied by an incredibly rapid change in business processes and, as a result, the application itself.
It was in such an environment that the first version of our platform emerged - many users, high transactional load, the pursuit of resources, business processes that do not allow annihilation of locks, constant changes and no mistake. And the only way is to increase productivity, reduce blocking time, optimize the user interface, simplify development to keep up with changes.
Historical truth for it must be said that the first version of the platform exists and is used in many companies so far and will most likely continue to be used, since the release of the platform that happened in 2013 is incompatible with the previous one. About the previous release will not tell, because he will live out his life with existing customers. For the sake of statistics just give a couple of numbers:
- it has about 4,000 users;
- about 200,000 clients visit the site daily.
Platform
A three-tier application, the application server is fully developed from scratch, using the
Zyan Project for communication. The leading developer of the platform is one of its contributors. The general scheme of the application is shown in the following diagram:

As you can see, Oracle Database is used as a DBMS. While we maintain support for 11gR2, however, with the release of the new version of ODA and ExaData we plan to give up and go to 12c. For light loaded solutions, the system can be run on
EnterpriseDB with Oracle Compatibility.
Such tight binding, uncharacteristic for other automation solutions due to the need to optimize performance. Using the capabilities of Oracle Database, we were able to implement the queues inside the database (we will talk a little about them in the article about the print server), and of optimizing many internal processes.
Application server and client application - fully managed applications written in C # 5.0, i.e. use LINQ and async / await (we will try to share our experience of using the latter in the following articles). Actually, all business logic is implemented as handlers of various events of various business objects. If you are familiar with 1C, then you will recognize them - these are reference books, documents, and some analogue of the register, which is called the total.
There can be a lot of client applications, but one includes the platform in which the development and administration environment is built in. This is a GUI for describing the structure and relationships of business objects and the code editor for scripts. Scripts in C #, analog IntelliSense is present in the editor.
The application server, respectively, is entrusted with the execution of business logic, the conversion of relational data into objects of the system and back, event management, and so on.
For illustration, it is worthwhile to give the following diagram

Finally, the print server, already mentioned three times, our pride in a sense, is responsible for sending the corresponding print forms to the printers. It allows you to “virtualize” access to printers, organize guaranteed delivery, remove waiting for access to the printer (and, as a rule, reduce the blocking time) and much more. More details will be discussed in a separate article about its device.
Well, then about what we are going to tell:
- Transaction management How it was and how it became. Transaction Management Issues in Multi-threaded Processing.
- Change management. How we have version control. Why is it needed, and what allows.
- REST / SOAP support. How we organized their support.
- Big Brother and data change history. Why Oracle Flashback Archive cannot be used yet.
Instead of conclusion
We tried to tell a little about our system and interest you. In the following articles we will delve a little into the details; to do this in the very first article is a direct path to overheating of the brain.
In addition, we will try to tell about all interesting problems that arise, which do not constitute know-how or a trade secret, to tell in our blog.