В G2 реализована распределенная обработка приложения на принципах архитектуры клиент-сервер. Клиентная система Telewindows обеспечивает множественный доступ к централизованной базе знаний и групповую работу с приложением. Взаимодействие между G2 и Telewindows может быть организовано одним из следующих способов: процесс Telewindows исполняется на той же машине, что и G2, а пользователь получает к ней доступ через X-терминал; Telewindows исполняется на рабочей станции или ПК пользователя. Кроме того, приложение можно построить как содружество автономных интеллектуальных агентов на базе интерфейса G2 <--> G2, исполняемых на одной и той же или на разных ЭВМ, связанных в сеть. При этом обмен данными осуществляется на уровне переменных через протокол ICP (Intelligent Communication Protocol). Интерфейс G2 <--> G2 позволяет разработчику создать в одном G2-приложении объекты, которые получают информацию от другого G2. Эти объекты создаются, подобно другим объектам в G2, а интерфейс G2 <--> G2 действует как сервер данных для этих объектов (подобно механизму вывода или G2-подсистеме моделирования). Для организации обмена необходимо в описании переменных объекта, получающих значение от другого G2-процесса, просто указать номер сетевого порта источника. Как результат, переменные объекта получат значения от второго G2. Подчеркнем, что G2-приложение может как получать, так и посылать информацию в одно и то же время по одному интерфейсу.
G2 разработана как открытая система. Связь с внешними источниками данных строится на основе библиотеки стандартных интерфейсов и сервера GSI (G2 Standart Interface). Подсистема GSI работает параллельно с прикладной системой как независимый обработчик событий и обеспечивает ее двустороннее взаимодействие с широким спектром программируемых контроллеров ведущих фирм (Allen Bradley, GE-Fanuc, AEG Modicon), систем сбора данных (ABB, Fisher, Siemens, Yokogawa, Foxboro, ORSI), концентраторов данных (DEC BASEstar, Allen Bradley Pyrammid Integrator, SETPOINT SETCIM) и развитых СУБД (Oracle, Sybase, DEC Rdb). Библиотека GSI и G2 Bridge products позволяют легко интегрировать G2-приложение в существующие системы управления. При отсутствии в библиотеке GSI интерфейса к некоторому уникальному контроллеру не составляет особого труда запрограммировать его по представляемому шаблону на языке С и подключить к системе.
С точки зрения современной концепции разработки открытых систем в системе G2 предлагается более гибкая и надежная трехзвенная схема организации взаимодействия клиентской и серверной частей приложения, используя GSI в качестве монитора транзакций.
Обычно, когда перед разработчиком встает проблема создания интерфейса данных, он вынужден принимать во внимание целый ряд разнородных требований: эффективность, реализуемость, надежность, переносимость, сопровождаемость, конфигурируемость, гибкость, возможность мультиплексирования сигналов и т. д. Для удовлетворения этих требований он должен реализовать множество функциональных блоков, таких, как: синхронизация обрабатываемых запросов, протоколы взаимодействия; сетевые интерфейсы, восстановление после сбоев в сети или узле; работа с множеством источников данных; группировка данных; обработка данных, пришедших без запроса; обмен сообщениями об ошибках; обмен данными о состоянии взаимодействующих систем; буферизация данных; преобразование форматов данных, работа с данными переменной длины; планирование обработки запросов; отработка запуска и остановки системы; отработка пауз и перезапуска; отработка прерываний; обработка переполнения буфера; распределение ресурсов; минимизация загрузки системы; диагностика сбоев; доступ к внешним данным и конфигурирование интерфейса. Все это применимо к любому интерфейсу данных независимо от назначения прикладной системы. Все перечисленные требования, кроме двух, удовлетворяются в подсистеме GSI автоматически независимо от платформы и типа сетевого обеспечения. Исключение составляют функции доступа к данным и конфигурирование интерфейса, но реализацию этих функций GSI делает настолько простой, насколько это возможно.
Подсистема GSI состоит из трех основных частей:
- ядро GSI;
- GSI- расширение;
- коммуникационный канал связи между ядром GSI и GSI расширением.
Хотя подсистема GSI отрабатывает все взаимодействия между G2 и каждым из внешних процессов, необходимо сконфигурировать ее для конкретного приложения. Для разработки системы, в полном объеме использующей возможности GSI, нужно создать два фрагмента, отражающих специфику прикладной программы, в дополнение к базе знаний G2: спецификацию конфигурирования, которая настроит базу знаний для связи с внешней программой, и так называемый переходный код (application bridge code), который используется GSI-расширением для интерактивного взаимодействия с внешней прикладной программой.
Спецификация конфигурирования включает объекты базы знаний, конфигурирующие ее для использования GSI. Средства для создания этих объектов встроены в G2. Для формирования спецификации конфигурирования создают объекты, принадлежащие к к GSI interface object. Эти объекты содержат информацию, необходимую GSI для связи с внешней прикладной программой. Далее создают переменные класса GSI variable, соответствующие переменным внешней прикладной программы. G2 передает и принимает данные эти переменные. Кроме этого создают переменные GSI variable для обмена текстовыми сообщениями с внешней прикладной программой.
Переходный код объединяет GSI-расширение с внешней при ной программой. Он состоит из набора функций на языке С, обеспечивающих передачу данных, текстовых сообщений, запуск, остановку и завершение внешней программы.
Кроме интерфейсов GSI и G2 <--> G2 доступны еще два интерфейса с внешними процессами и источниками данных: файловый интерфейс (G2 File Interface - GFI) и интерфейс с внешними функциями (Foreing Function Interface).
Файловый интерфейс GFI представляет собой гибкое средство, позволяющее G2 писать и читать информацию из внешних файлов. GFI является отдельным от G2 продуктом. Разработчик может использовать GFI для того, чтобы делать следующее:
- архивировать и запоминать данные;
- инициализировать тесты проверки БЗ;
- собирать данные для внешнего анализа;
- создавать снимки (snapshots) данных;
- считывать данные из внешних файлов во время исполнения.
Интерфейс с внешними функциями. Разработчик С2-приложения может вызвать внешние (foreign) для G2 функции, написанные на С и Фортране. Этот интерфейс включен в G2. Для того чтобы использовать в G2 внешнюю функцию, разработчик описывает ее и затем использует таким же способом, как и функции, определенные пользователем.
Открытость системы G2 и продуктов на ее основе обеспечивается ориентацией фирмы Gensym на промышленные стандарты. Являясь членом OMG (Object Management Group), фирма Gensym сотрудничает в этой области со многими независимыми организациями и комитетами по стандартам. В части технических средств - это поддержка широкого спектра платформ DEC, HP, Sun, IBM и ПЭВМ на базе процессоров Х86 и Pentium. Развитый графический интерфейс, включающий элементы анимации, базируется на средствах Motif и MS Windows. Сетевые протоколы - TCP/IP и DECnet. Архитектура клиент/сервер на уровне обмена данными поддерживается монитором транзакций GSI и DDE, на уровне объектов - CORBA, на уровне приложения - клиентной подсистемой Telewindows. Распределенная обработка обеспечивается интерфейсами G2 <--> G2, G2 <--> Telewindows и поддержкой вызова удаленных процедур. Существует множество готовых решений "под ключ" для прямого взаимодействия G2 с распространенными программными и техническими системами контроля и развитыми СУБД.
Возможность простого манипулирования графическим представлением объектов в G2 и составления схем, являющихся отображением технологических цепочек или абстрактных алгоритмов обработки данных, обеспечивает базовые средства для построения проблемно-ориентированных языков визуального программирования. В этом случае объекты приобретают свойства операторов и в совокупности с различными классами связей формируют грамматику нового языка. Основным преимуществом такого подхода является то, что сформированная диаграмма потоков информации по сути и есть исполняемая программа, промежуточные фазы генерации кода и компиляции для ее использования не требуются. Впервые эта концепция была реализована фирмой Gensym в GDFL- языке графического представления информационных потоков для построения систем диагностики реального времени в системе GDA (G2 Diagnostic Assistant). Подход оказался настолько удачным, что в той или иной мере используется теперь во всех проблемно/предметно-ориентированных расширениях G2.
Кроме базового продукта - оболочки ЭС реального времени G2 на ее основе фирмой Gensym разработаны дополнительные проблемно-ориентированные средства разработки; основные из них: G2 Diagnostic Assistant (GDA) – среда визуального программирования на базе G2 для создания приложений активной диагностики производственніх и информационніх процессов; NeurOn-Line (NOL)- среда, интегрирующая технологию нейронных сетей и экспертных систем; ReThink- среда моделирования и реинжиниринга деятельности компаний.