Защищенный электронный документооборот для Федерального Казначейства РФ
Системная архитектура

Общее строение

Общее построение системной архитектуры описывается общепринятым для приложений уровня предприятий шаблоном многоуровневой организации. В составе архитектуры можно выделить следующие основные уровни:
  • Клиентский уровень – уровень, реализующий конечные интерфейсы для работы пользователей с системой двух типов:
    • WEB приложение или «тонкий» интерфейс
    • GUI приложение или «толстый» интерфейс
    Модули, входящие в состав данного уровня ответственны за представление информации пользователю и обработку последовательности его действий
  • Бизнес компоненты – на данном уровне локализованы все компоненты, в составе которых реализуется общая бизнес логика системы (прикладная логика).
  • Системные компоненты – данный уровень представляет инфраструктуру для построения, конфигурирования, управления и обеспечения взаимодействия бизнес компонент. На данный уровень вынесены общие системные средства, совместно используемые модулями всех остальных вышележащих уровней системы. Основная функция данного уровня – изоляция системы от специфики базовых программных средств.
  • Базовые программные средства – на данном уровне представлены все модули, представляющие системе сервисы в контексте основных базовых технологий. Примерами таких сервисов может служить J2EE, взаимодействие XML и RDBMS, Spring и так далее.
  • Работа с данными – данный уровень представлен моделью данных системы, хранение которых осуществляет в виде внешних ресурсов следующих типов
    • хранится в базе данных
    • в виде XML файлов
    • в виде бинарных и текстовых файлов различных форматов
    Данный уровень содержит как, собственно говоря, саму модель данных в виде, специфичном для каждого из типа ресурсов (схема для базы данных, DTD/Scheme для XML и так далее), так и подробности реализации этой модели для различных реализаций каждого типа ресурсов (для базы данных – реализации схема для Oracle и Interbase/FireBird)
На следующей диаграмме представлены основные архитектурные уровни системы, а также базовые взаимосвязи между ними:



Базовые программные средства

Слой базовых программных средств, в свою очередь, делится на следующие основные разделы, по числу основных используемых в реализации системы стандартных технологий:
  • Виртуальная Java машина (JVM) – служит для запуска приложения целиком непосредственно (двухзвенный вариант развертывания системы) или в составе сервера приложения на сервере и клиентского приложения на клиенте (трехзвенный вариант развертывания с толстым клиентом)
  • Сервер приложений – в варианте трехзвенного развертывания системы служит основным поставщиком реализаций перечисленных далее базовых программных средств. В настоящий момент в качестве сервера приложений выбран JBoss 4.0
  • J2EE – включает в себя в числе прочего поддержку следующих основных используемых технологий:
    • JDBC Extension 2.0
    • EJB 2.1
    • Servlets 2.4
    • JMS 1.0
    • Java Mail 1.2
    • JAAS 2.0
    • JAF 1.0
  • J2SE – включает в себя в числе прочего поддержку следующих основных используемых технологий:
    • JDBC Core API
    • Reflection API
    • RMI-IIOP API
    • JNDI API
  • Базовые программные средства Open Source и третьих производителей в следующем составе:
    • Acegi Security 1.0
    • Apache Ant
    • Apache HTTP Server
    • Apache Jakarta Utils
    • Apache Digester 1.7
    • Apache Xerces 1.4
    • BeanShell 2.0
    • Caucho Hessian XML/RPC implementation 3.0
    • Dom4j 1.6
    • Hibernate 3.2
    • Spring 2.0
    • AspectJ 1.5
  • Базовые программные средства реализации пользовательского интерфейса
    • Для «тонкого клиента» в основном используются технологии, реализованные в составе Microsoft Internet Explorer
      • HTML 4.0
      • CSS 2
      • JavaScript 1.5
      • DOM для Microsoft Internet Explorer 5.0 и выше
      • ActiveX Microsoft - CAPI Com, XEnroll, XmlHttp
    • Для «толстого клиента»
      • Swing API из состава J2SE
      • AWT API из состава J2SE
  • API доступа к базе данных для поддержки работы JDBC, соответственно для
    • Oracle
    • Interbase/FireBird
Следующая диаграмма иллюстрирует вышеперечисленные пакеты и их основные взаимные зависимости:



Системные компоненты

На уровне системных компонент представлены следующие модули системы, предоставляющие основные сервисы клиентским приложениям и бизнес компонентам:

Поддержка приложения (Application Support)

Данный модуль выполняется в двух вариантах соответственно основным вариантам развертывания системы – в трехзвенном варианте (Application Server Support) и двухзвенном варианте (Application Support) и отвечает за выполнение следующих системных задач:
  • Запуск и остановка приложения
  • Инициализация системных и бизнес сервисов, реализуемая как последовательность следующих операций:
    • Создание экземпляра сервиса
    • В случае сервера приложения запуск EJB бина, выполняющего роль переходника при удаленном доступе к компоненте
    • Регистрация в общем контексте, реализуемом Spring API уровня базовых программных средств. В зависимости от варианта развертывания за счет контекста маскируется тип доступа к сервисы – локальный или удаленный
    • Выполнение инициализации
  • Загрузка модели данных (в виде Hibernate или H-модели) в следующих разделах:
    • Статическая модель, представленная HBM файлами отображения схемы базы данных на структуру POJO бинов
    • Динамическая модель, представленная в виде внутренней структуры документов и словарей
Общая работа с данными (Data Access Objects, Hibernate DAO),

Данный модуль функционирует на основе загруженной H-модели данных и Hibernate API уровня базовых программных средств и отвечает за выполнение следующих задач:
  • Определение множества POJO бинов, реализующих H-модель данных
  • Выполнение запросов к базе на основе механизма критериев
  • Сохранение изменений, вносимых в данные, представленные как POJO бины
Работа с данными со стороны пользовательского интерфейса (Value Objects Access)

Основная функция данного модуля – предоставление инструментов для пользовательского интерфейса по работе с данными, составляющими предмет обработки остальных модулей системы. Модуль отвечает за выполнение следующих системных задач:
  • Определение множества POJO бинов, используемых для пересылки данных между обобщенными сервисами работы с данными и пользовательским интерфейсом (Value Objects)
  • Определение процесса переноса данных между бинами H-модели и VA-объектами
  • Реализация обобщенных сервисов работы с данными:
    • SelectionService – сервис запроса данных
    • EditObjectService – сервис редактирования данных
Мониторинг (Monitoring)

Служит для предоставления внешним средствам информации о текущем состоянии процессов в системе. Функционирование данного модуля основывается в числе прочего на AspectJ API уровня базовых программных средств, посредством которого осуществляется проксирование вызовов методов компонент со стороны других компонент и пользовательского интерфейса.

Журналирование (Logging)

Служит для обеспечения возможности накопительного сбора информации о различных событиях в системе. Функционирование данного модуля основывается в числе прочего на AspectJ API уровня базовых программных средств, посредством которого осуществляется проксирование вызовов методов компонент со стороны других компонент и пользовательского интерфейса.

Конфигурирование (Configuration)

Служит для работы с информацией, представляющей конфигурацию приложения в целом, конфигураций отдельных модулей, составляющих приложение, настроек пользователя и т.п. Функционирование данного модуля основывается в числе прочего на JDBC API, а также на средствах работы c XML файлами уровня базовых программных средств

Контроль прав доступа (Access Control)

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

Поддержки криптографических операций (Crypto Access)

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

Автопроцедуры (Auto Procedures)

Предоставляет обобщенный механизм исполнения зарегистрированных внешними модулями операций при выполнении определенного набора условий

Следующая диаграмма иллюстрирует вышеперечисленные системные компоненты и их основные взаимные зависимости. Также на диаграмме представлены ключевые зависимости от уровня базовых программных средств.