About me
Name: Nikolay Voronkov
Place: Tver, Russia
Email: voronkov@engineer.com
Skype: nik-voronkov
Job: Freelancer
My portfolio (by category)
MS SQL / Oracle / mySQL
ASP.NET / Silverlight
C# / PHP
Adobe InDesign (client/server)
Multilanguage support for Wordpress

Project OMS.

Customer: Company “NADOM”, member of OTTO Group Russia
Project type: The internal enterprise project for marketing Department
My position in project:
  • The database architect
  • Head of development
  • The architect of software solutions
  • Operation systems: Windows, Mac OS
    Databases: mySQL, Oracle
    Languages: C#, PHP, SQL, Adobe JavaScript, XML
    Technologies: Silverlight, Adobe InDesign (client, server), SOAP, PHP image libraries, Microsoft Reporting Services
    Interface language: English

    OMS (Offer Management System) is a system for creating catalogs of products in a format for print (Adobe InDesign).


  • A graphical editor allowing you to create presentations consisting of images, text blocks, internal variables and other presentations.
  • Database (mySQL) for storage of proposals (offers) and the goods within them, which is updated from the database of a CRM system (Oracle). Also the database stores information about the catalogs and presentations.
  • The system for building of catalogue templates and the catalogues that can be replicated to the Adobe InDesign server using SOAP (PHP, Adobe JavaScript).
  • The set of scripts for client programs Adobe InDesign (Adobe JavaScript) that allow you to connect to a database of products and update prices and descriptions using internal variables.

    Ladies and gentlemen, all screenshots that you see on this page relate to a test version of the project.

    The project consists of two logical parts: batch and interactive.

    The batch part is responsible for automatic processing of data and objects of the project:

  • Maintenance of store catalogues and templates (snippets Adobe InDesign) for them
  • Data exchange with the CRM system of the company for updating information about product offerings
  • Update the database catalogs with the aim of obtaining their previews to display in the interfaces of the client part
  • Replication of images of goods from public folders in the folder directory and register them in the database

    The main component of a batch part is a set of PHP programs that run under the operating system on schedule. They perform all the operations described above. In the process, they establish a connection with the project database (mySQL) and database of CRM systems (Oracle).

    The second component of the batch side is Adobe InDesign Server, which is controlled via SOAP from a batch with PHP programs. On the server side the language Adobe JavaScript is used. Most of the tasks performed on schedule. The server is able to perform almost all operations for documents in InDesign format that exist in desktop application. Adobe InDesign handles the documents using advanced object model that includes the representation in an XML format. For batch part the InDesign Server is used to convert files in format InDesign (IDMS, INDD) to format JPEG, which are used in the graphical editor of the project to create presentations.

    The interactive part of the project consists of two parts:

  • Interface of project for browser (Silverlight)
  • Set of scripts (JavaScript) for desktop publishing system Adobe InDesign
    Both of these parts use the project database (mySQL), access to which provide PHP modules on the web server Apache. The database is designed using mySQL Workbench tool. The project operates with terabytes of images of products and images in formats Adobe InDesign, the database stores only the links to them. In addition, the database stores previews of product images (small copies) and presentations – sets of images, text blocks and other presentations.
    The project modules for browser

    One component of the project is the graphical editor. It allows you to create presentations, which are then saved in the database, and parallel files are created in formats Adobe InDesign. The presentation is always tied to some product in the catalog. It may consist of images, text blocks and other presentations. The editor has a wide range of functions. You can choose the page size, page orientation, documents resolution, canvas padding, for images there are many options for location and orientation, for text blocks possible insertion of internal variables which after record is converted to XML tags in InDesign documents.
    At the time of recording of the document, the copy is placed in the database, if the requested creation of the InDesign document, the PHP program accesses the server, InDesign, passed the assembly instructions document via the SOAP Protocol. The server creates the document and makes the copy in the JPEG format, the PHP module creates a smaller copy of this image (thumbnail) and put it into the database, associating with the created presentation.
    The project has a strong system for presentations management. Catalogs may have individual goods and products (sets of goods). Each element can have multiple presentations, the presentation can have any number of levels of nesting. Provides a large number of filters and analytical frameworks.
    For more efficient catalogue management the project has templates. You can collect a catalogue from the presentations and to generate the finished document in Adobe InDesign format (INDD), it can be called a draft. The designer can use these files only for the correction of the document appearance, bypassing the stage of markup.

    The project has hundreds of settings that apply to different parts of it and which can be divided into three types:

  • Settings that can be applied to different objects and stored in the database. These settings can have different formats: strings (text, numbers, dates), menu selection and list.
  • Selecting a menu item or several items.
  • Constants used for calculations, for database access, directories places, passwords and more.
  • The project has on the client part the system of protection implemented using roles. Most interface elements (menus, windows, buttons, input fields have IDs, they are saved in the database. There is a set of roles, each role is assigned a set of elements. Each user can be assigned any number of roles. When the user is authorized for his available roles builds an array of references to the allowed interface elements. After that, the interface displays only permitted elements for this user.
    The project modules for desktop application Adobe InDesign

    Leave a reply:

    Укажите 3 цифры