Описание проекта ERP-системы

 

Наша группа разработчиков спроектировала и разрабатывает ERP-систему. Проект подразумевает создание системы сравнимой по возможностям с такими системами как Axapta, 1С, Эталон. Мы исследовали возможности ведущих ERP систем, и попытались объединить в нашем проекте сильные стороны каждой из них.

 

Нашей целью является создание системы, максимально удобной для прикладных разработчиков, обладающей высокой производительностью и масштабируемостью.

 

Основной идеей нашего проекта является построение системы-конструктора как основы для построения широкого спектра корпоративных бизнес-приложений.

 

Ниже описана структура системы и основные технические решения, используемые в ее компонентах.

 

Структура системы

 

 

Центральный сервер – управляет метаданными бизнес-приложения, авторизацией пользователей, разграничением прав пользователей, распределяет нагрузку между серверами приложений. Также центральный сервер управляет кластерами серверов приложений. Один центральный сервер может обслуживать несколько независимых бизнес-приложений. Каждое из бизнес-приложений функционирует на своем кластере из серверов приложений.

 

Сервер приложений – служит рабочей средой для бизнес-приложения, исполняя код бизнес-приложения, кэшируя его метаданные и информацию о правах пользователей. Каждый сервер приложений имеет интертранзакционный кэш, в котором кэшируются данные объектов бизнес-приложения. Взаимодействуя в кластере, сервера приложений обеспечивают консистентность данных в своих кэшах.

 

Клиент – представляет собой графический интерфейс пользователя. Графический интерфейс состоит из таких элементов как формы, отчеты, главное меню и пр., и является частью метаданных бизнес-приложения. Клиент также выполняет функции кэширования данных бизнес-приложения, отображаемых в компонентах пользовательского интерфейса.

 

Физическая структура системы

 

Компоненты системы, описанные выше, представляют собой сервисы, которые можно запускать в любом количестве на любом из компьютеров локальной сети. Перечислим наиболее вероятные варианты физического расположения компонентов системы:

 

Основные решения архитектуры и реализации ядра системы

 

 

Структура бизнес-приложения и процесс его разработки

 

Экземпляр системы может содержать некоторое количество моделей и информационных баз данных.

Модель представляет собой исходный код бизнес-приложения в виде дерева метаобъектов бизнес-приложения (пространств имен, классов, форм, отчетов и др.). Сама модель не является бизнес-приложением и не может исполняться системой.

Для исполнения бизнес-приложения необходимо создать новую информационную базу данных на основе модели либо регенерировать уже существующую. Информационная база данных хранит данные и метаданные бизнес-приложения. Регенерированная информационная база данных далее не зависит от исходной модели.

 

Процесс разработки бизнес-приложения представляет собой редактирование модели в конфигураторе, который представляет собой среду быстрой разработки и содержит различные дизайнеры и редактор прикладного кода.

 

Вся модель целиком или ее отдельные метаобъекты может быть скомпилирована. В результате компиляции создаются зависимости между метаобъектами. Дальнейшее редактирование метаобъекта приводит к его инвалидации и инвалидации зависимых от него метаобъектов.

 

Существует специальный отладочный режим работы с моделью, в котором она инкрементально компилируется в процессе работы бизнес-приложения. Это позволяет сократить время запуска бизнес-приложения при отладке, и таким образом облегчить его разработку.

 

Средства разработки и текущее состояние проекта.

 

Проект разрабатывается на языке C++ и представляет собой набор dll библиотек. Для сетевого взаимодействия между компонентами системы используется технология CORBA, в реализации ACE TAO. В настоящий момент код компилируется компилятором C++ Builder 6, однако проект разрабатывается как кросс-платформенный и портирование на другие компиляторы не должно вызвать затруднений.

Приложения пользовательского интерфейса (клиент, среда разработки, административные утилиты) разрабатываются на Delphi Win32 с использованием клиентских библиотек ядра системы (C++).

 

Состояния компонентов ядра на текущий момент: