Базовая технология разработки сервисов на платформе IACPaaS

Дата последней модификации документа: 20 мая 2022.

Содержание

Введение

Технологические принципы разработки, сопровождения и использования облачных ИС на облачной платформе IACPaaS: Платформа IACPaaS поддерживает: Специализированные технологии (по сравнению с базовой) и инструментальные средства их поддержки с одной стороны, как правило, накладывают определенные ограничения (по области применения и/или классу решаемых задач) на разрабатываемые с их использованием сервисы, а с другой, за счет учета специфики проблемной области и/или класса решаемых задач, обеспечивают более высокоуровневую поддержку разработки последних.

Базовая технология разработки прикладных и специализированных инструментальных облачных мультиагентных сервисов и их компонентов в общем случае включает следующие процессы:
  1. сборка интеллектуального сервиса из компонентов;
  2. разработка информационных ресурсов (обрабатываемых интеллектуальным сервисом);
  3. разработка решателя задач интеллектуального сервиса и его связывание с формальными параметрами и интерфейсом интеллектуального сервиса;
  4. разработка агентов решателя задач;
  5. разработка шаблонов сообщений;
  6. разработка интерфейса интеллектуального сервиса.

Сборка интеллектуального сервиса из компонентов

Интеллектуальный сервис есть пара: service = <app, <<in1, …, ink>, <out1, …, outp>>>, k ≥ 0, p ≥ 0, где: Разделение информационных и программных компонентов сервиса преследует следующие цели:
  1. Независимая разработка решателей задач и информационных ресурсов соответствующими специалистами (базы знаний, например, формируются экспертами в соответствующих предметных областях).
  2. Компоненты обоих типов хранятся в Фонде и являются повторно используемыми (один решатель задач может быть связан с разными информационными ресурсами и наоборот).
В обоих случаях совместимость обеспечивается на уровне входных и выходных формальных параметров решателей задач. Таким образом, для того, чтобы разработать сервис, в Фонде, во-первых, должен присутствовать подходящий решатель задач – app*, а во-вторых, если <in1, …, ink> ∪ <out1, …, outp> ≠ ∅, то для каждого входного и выходного формального параметра этого решателя задач должен присутствовать хотя бы один информационный ресурс, принадлежащий области допустимых значений этого формального параметрафактический параметр.

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

Сборка интеллектуального сервиса service* выполняется следующим образом:
  1. В Фонде (общем или личном) выбирается подходящий для решения задачи интегрированный решатель задач – app*.
  2. Если <in1, …, ink> ∪ <out1, …, outp> ≠ ∅, то для каждого входного и выходного формального параметра решателя задач app* в Фонде выбирается подходящий для решения задачи фактический параметр, принадлежащий области допустимых значений этого формального параметра. Таким образом устанавливается соответствие между входными и выходными формальными и фактическими параметрами.
  3. Если <in1, …, ink> ∪ <out1, …, outp> ≠ ∅, то средствами Административной системы выполняется связывание интегрированного решателя задач app* с выбранными фактическими параметрами, поставленными в соответствие его входными и выходными формальным параметрам, и создание на их основе сервиса service*. Если же <in1, …, ink> ∪ <out1, …, outp> = ∅ (т.е. решение сервисом service* задачи не подразумевает обработку информационных ресурсов, за исключением, возможно, собственных информационных ресурсов app*), то средствами Административной системы выполняется создание сервиса service* только на основе интегрированного решателя задач app*.
Собранный таким образом сервис service* может быть запущен пользователем через Административную систему.

С целью получения отладочной информации о процессе работы сервиса service* виртуальная машина предоставляет возможность агентам, входящим в состав решателя задач app*, вносить записи, содержащие информацию о выполняемых ими действиях и состоянии обрабатываемых ими объектов, в журнал app*. Для просмотра, а также, при необходимости, удаления журналов используется сервис платформы Редактор решателей задач.

Разработка информационных ресурсов

Общие сведения

Все информационные ресурсы на платформе IACPaaS имеют единое унифицированное декларативное представление – в форме размеченного иерархического однородного бинарного орграфа с возможными петлями и циклами – посредством чего достигается универсальность их обработки.

В соответствии с общепринятым в настоящее время двухуровневым подходом к формированию информационных единиц, будем различать два типа информационных ресурсов по уровню абстракции представляемой ими информации: информационные ресурсы, представляющие метаинформацию (абстрактный уровень), и информационные ресурсы, представляющие информацию (конкретный уровень). Таким образом, орграф метаинформации описывает язык (структуру), в терминах которого формируется множество орграфов информации. Орграф метаинформации формируется на языке представления орграфов метаинформации, основанном на орграфовой связной двухуровневой модели информационных ресурсов, к которой может быть сведена наиболее распространенная в настоящее время объектно-ориентированная двухуровневая модель информационных единиц.

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

Разработка информационных ресурсов, представляющих информацию

При разработке некоторого информационного ресурса, представляющего информацию – ig*, информационный ресурс, представляющий его метаинформацию – mg* должен присутствовать в Фонде. В противном случае mg* необходимо разработать по технологии, описанной в разделе Разработка информационных ресурсов, представляющих метаинформацию.

Разработка информационного ресурса ig* состоит из двух этапов:
  1. Создание с использованием Административной системы в разделе некоторой предметной области Фонда нового информационного ресурса ig* с пустым содержимым (орграф представлен единственной корневой вершиной), с указанием в качестве метаинформации mg* – информационного ресурса, представляющего метаинформацию и описывающего область допустимых значений (множество информационных ресурсов) некоторых формальных параметров интегрированных решателей задач.
  2. Формирование пользователем содержимого информационного ресурса ig* с использованием Редактора орграфов информации[2], в котором процесс редактирования ig* управляется орграфом метаинформации mg*.
В процессе работы Редактор орграфов информации формирует и поддерживает соответствие между дугами орграфов ig* и mg*. Формирование орграфа ig* осуществляется пользователем “сверху-вниз”: от вершин, представляющих сложносоставные понятия – к атомарным, начиная с корневой вершины орграфа ig*. Преимущество данного подхода над подходом к формированию орграфовой структуры “снизу-вверх” состоит в том, что первый является более естественным для человека: орграф информации “разворачивается” пользователем строго в соответствии со структурой (шаблоном), заданной в орграфе метаинформации. Во втором случае, напротив, пользователю необходимо четко представлять и постоянно держать в уме всю структуру (связи между вершинами) формируемого орграфа (от чего в первом случае он полностью избавлен).

Web-интерфейс Редактора орграфов информации отображает уже сформированную часть подграфа ig* и набор интерфейсных элементов для выполнения возможных действий пользователя по редактированию значений полей активных вершин подграфа ig* и порождению исходящих из них дуг, который формируется Редактором орграфов информации на основе вершин орграфа mg*, соответствующих активным вершинам ig*, и множества выходящих из них дуг в орграфе mg* (если таковые имеются). Если порождаются дуги, исходящие из активной вершины ig*, то их концы становятся активными вершинами. Редактирование ig* возможно лишь в тех пределах, которые не нарушают соответствие между орграфами ig* и mg*.

Пользовательский интерфейс Редактора орграфов информации генерируется по соответствующему орграфу метаинформации. Это означает, что если последний описывает онтологию знаний или данных в некоторой предметной области, то эксперты предметной области могут создавать и сопровождать базы знаний или данных в привычной для них системе понятий (без посредников в лице системных аналитиков).

Разработка информационных ресурсов, представляющих метаинформацию

Разработка информационного ресурса mg* также состоит из двух этапов:
  1. Создание с использованием Административной системы в разделе некоторой предметной области Фонда нового информационного ресурса mg* с пустым содержимым (орграф представлен единственной корневой вершиной), с указанием в качестве метаинформации информационного ресурса, содержащего описание языка представления орграфов метаинформации (присутствующем в Фонде платформы IACPaaS априори).
  2. Формирование содержимого информационного ресурса mg* “сверху-вниз” (начиная с корневой вершины орграфа) с использованием Редактора орграфов метаинформации в терминах языка представления орграфов метаинформации.
Пользователями Редактора орграфов метаинформации являются носители разного вида метаинформации, обычно это инженеры знаний и системные аналитики в различных сферах профессиональной деятельности. Модель процесса редактирования, положенная в основу Редактора орграфов метаинформации, во многом совпадает с той, что положена в основу Редактора орграфов информации. Имеющиеся отличия обусловлены лишь формализмом представления соответствующих орграфов, а также тем, что орграф метаинформации может иметь произвольный вид (ограничения накладываются лишь выразительными средствами языка представления орграфов метаинформации), в то время как ограничения на структуру орграфа информации накладываются видом орграфа ее метаинформации.

Разработка решателя задач интеллектуального сервиса

Общие сведения

Решатель задач представляет собой множество агентов платформы IACPaaS, взаимодействующих друг с другом посредством обмена сообщениями. Среди них, в общем случае, у двух агентов – Корневого агента и Интерфейсного контроллера – особые роли: В процессе работы сервиса агенты, входящие в состав решателя задач, связываются друг с другом динамически, начиная с Корневого агента или Интерфейсного контроллера (при обработке событий, генерируемые в пользовательском интерфейсе). При этом агент отправитель (sender) может послать сообщения множеству агентов {receiver1, …, receivern}, где receiveri (i = 1, …, n) может быть одним из следующих агентов: Таким образом, если функциональность разрабатываемого решателя задач уже реализована в виде некоторого множества присутствующих в Фонде агентов, то необходимо разработать: Если присутствующие в Фонде агенты не обеспечивают программную поддержку требуемой функциональности или обеспечивают ее частично, то необходимо разработать соответствующих агентов по технологии, описанной во второй части данного цикла работ.

Связывание решателя задач с формальными параметрами и интерфейсом интеллектуального сервиса

Для того чтобы решатель задач можно было использовать на этапе сборки различных сервисов, в Фонде должен быть информационный ресурс особого вида, представляющий декларативную спецификацию решателя задач и его связей с другими компонентами, необходимыми для создания сервисов – спецификацию интегрированного решателя задач. В спецификации содержится информация о назначении и устройстве решателя задач, его корневом агенте, а также задается связь решателя задач с формальными параметрами (если сервисы должны обрабатывать информационные ресурсы, т.е. иметь фактические параметры) и пользовательским интерфейсом (в случае разработки сервисов с пользовательским интерфейсом).

Интегрированный с формальными параметрами и пользовательским интерфейсом решатель задач может быть представлен кортежем вида (необязательные компоненты здесь и далее заключены в скобки “[” и “]”): app = <name, descr, aroot, [aui], [web_page], <IN1, …, INk>, <OUT1, …, OUTp>, <own1, …, ownq>, <log1, …, logs>>, k ≥ 0, p ≥ 0, q ≥ 0, s ≥ 0, где: Помимо преимуществ, указанных в разделе Сборка интеллектуального сервиса из компонентов (сформулированных как цели разделения информационных и программных компонентов сервиса), такое устройство интегрированного решателя задач (подразумевающее выделение среди агентов решателя специализированного агента Интерфейсный контроллер) дает возможность отделить (и, соответственно, сделать эти процессы независимыми) разработку и сопровождение бизнес-логики решателя задач от разработки и сопровождения пользовательского интерфейса интеллектуального сервиса, а также привлечь к этим видам работ соответствующих независимых специалистов.

Для того чтобы сформировать декларативную спецификацию интегрированного решателя задач, необходимо чтобы:
  1. В Фонде присутствовал агент, являющийся Корневым агентом решателя задач – aroot.
  2. В случае разработки сервиса с пользовательским интерфейсом – на web-сайте платформы IACPaaS была создана стартовая web-страница для интегрируемого решателя задач, а в Фонде присутствовал агент, являющийся его Интерфейсным контроллеромaui (данный агент может быть повторно используемым и, таким образом, входить в состав различных решателей задач).
  3. Если <IN1, …, INk> ≠ ∅, то в Фонде присутствовали все информационные ресурсы INi (i = 1, …, k).
  4. Если <OUT1, …, OUTp> ≠ ∅, то в Фонде присутствовали все информационные ресурсы OUTj (j = 1, …, p).
  5. Если <own1, …, ownq> ≠ ∅, то в Фонде присутствовали все информационные ресурсы ownl (l = 1, …, q).
Если некоторый информационный ресурс INi (OUTj) отсутствует в Фонде, то его необходимо разработать по технологии, описанной в разделе Разработка информационных ресурсов, представляющих метаинформацию. Если некоторый информационный ресурс ownl отсутствует в Фонде, то его необходимо разработать по технологии, описанной в разделе Разработка информационных ресурсов, представляющих информацию. Если агенты aroot и/или aui отсутствуют в Фонде, то их необходимо разработать по технологии, описанной во второй части данного цикла работ. Декларативная спецификация интегрированного решателя задач формируется в два этапа:
  1. Создание с использованием Административной системы в Фонде платформы IACPaaS нового информационного ресурса (с названием, совпадающим с названием интегрированного решателя задач, и пустым содержимым) по хранящейся в Фонде метаинформации Структура решателя задач, описывающей онтологию декларативных спецификаций интегрированных решателей задач платформы.
  2. Формирование содержимого созданного информационного ресурса с использованием Редактора решателей задач, в котором процесс редактирования управляется метаинформацией Структура решателя задач.
Специфицирование решателя задач состоит в задании: Корневой агент и агент Интерфейсный контроллер задаются путем создания ссылок на информационные ресурсы в Фонде платформы IACPaaS, представляющие декларативные спецификации соответствующих агентов. Формальные параметры и собственные информационные ресурсы интегрируемого решателя задач также задаются путем создания ссылок на соответствующие информационные ресурсы в Фонде платформы IACPaaS.

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

Разработка агентов решателя задач

Общие сведения

Агент состоит из двух частей – декларативной и процедурной – и представлен кортежем вида: agent = <name, internal_name, descr, [local_structure], {production_block1, …, production_blockn}, src_code, code, {processed_irs}>, n ≥ 1, где: Каждый блок продукций production_blocki (i = 1, …, n) есть тройка вида: production_block = <descr, inMsgTemplate, {outMsgSending1, …, outMsgSendingm}>, m ≥ 0, т.е. каждый блок продукций декларативно представлен следующими компонентами: Декларативный компонент состоит, по существу, из двух частей – документации к агенту, которая представлена совокупностью содержательных описаний, как самого агента, так и всех его блоков продукций на естественном языке, и формальной спецификации множества блоков продукций, из которых агент состоит. На основе декларативного компонента средствами платформы IACPaaS поддерживается автоматизация процесса разработки и сопровождения документированного исходного кода агента. Орграфовая связная двухуровневая модель информационных ресурсов и ее соответствующая поддержка процессором информационных ресурсов платформы IACPaaS позволяют хранить декларативную спецификацию, исходный и исполняемый код агента (получаемый в результате компиляции "текущей версии" его исходного кода) в одной единице хранения Фонда, представляющей данный агент. Для создания и обработки таких единиц хранения платформа предоставляет инструментальный сервис Расширенный редактор агентов (автоматически запускается при открытии инфоресурса типа Агент).

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

Для разработки агента необходимо чтобы для каждого его блока продукций production_blocki (i = 1, …, n) в Фонде (общем или у некоторого пользователя) присутствовали inMsgTemplatei – шаблон входных сообщений и, если {outMsgSending1, …, outMsgSendingm} ≠ ∅, то все соответсвующие шаблоны выходных сообщений – outMsgTemplateij (j = 1, …, m).

Если некоторый шаблон сообщений inMsgTemplatei или outMsgTemplateij отсутствует в Фонде, то его необходимо разработать по технологии, описанной в разделе Разработка шаблонов сообщений.

Описание подмождеств "только чтение", "полный доступ", "временные" (входящих в processed_irs есть спецификация инфоресурсов-параметров, обрабатываемых агентом, то есть: Разработка агента состоит в: При необходимости возможно создание нескольких версий исходного кода агента (как на основе генерируемой заготовки исходного кода, так и на основе исходного кода уже существующей версии). При этом на платформе может быть использована в качестве рабочей только одна - она должна быть помечена как "текущая версия".

Формирование информационного ресурса агента

Формирование на платформе информационного ресурса, представляющего декларативную спецификацию агента, выполняется по следующей схеме:
  1. Создание с использованием Административной системы в Фонде пользователя платформы IACPaaS нового информационного ресурса (с названием, совпадающим с названием агента, и пустым содержимым), представляющего декларативную спецификацию разрабатываемого агента (указывается тип ЕХ - Агент).
  2. Формирование содержимого созданного информационного ресурса с использованием Редактора агентов, в котором процесс редактирования управляется метаинформацией Структура агента.
Специфицирование агента состоит в задании: Шаблоны входных и выходных сообщений задаются путем создания ссылок на информационные ресурсы (находящиеся в Фонде пользователя или доступные ему из общего Фонда платформы по ссылкам, помещённым в его Фонд), представляющие декларативные спецификации соответствующих шаблонов сообщений.
Адресуемый агент задаётся путем создания ссылки на информационный ресурс (находящийся в Фонде пользователя или доступный ему из общего Фонда платформы по ссылке, помещённой в его Фонд), представляющие декларативную спецификацию соответствующего агента.
Метаинформация в описании параметра (обрабатываемого инфоресурса) задаётся путем создания ссылки на информационный ресурс (находящийся в Фонде пользователя или доступный ему из общего Фонда платформы по ссылке, помещённой в его Фонд), типа метаинформация. При этом имена параметров у агента должны быть попарно различны.

Описывая блоки продукций, необходимо следовать положениям:

Создание версии исходного кода агента

После того, как декларативная часть разрабатываемого агента описана (или модифицирована), средствами Расширенного редактора агентов можно приступить к формированию версии его исходного кода (на языке Java) одним из 2 способов: При генерации заготовок исходного кода проверяется полнота декларативного описания агента (и используемых им шаблонов сообщений). Если декларативное описание какой-то из этих программных единиц не полно, то разработчику отображается сообщение, локализующее соответствующее место в описании.

Написание исходного кода агента

При наличии исходного кода агента в разрабатываемой версии разработчику необходимо в классе, представляющем собственный код, разработать тела (или модифицировать уже существующие) для всех методов void runProduction(…), соответствующих блокам продукций, описанным в декларативной спецификации агента. В данном классе можно, также, описать и реализовать множество вспомогательных методов, внутренних классов и т.п. для использования последних внутри методов void runProduction(…).

При написании исходного кода (и далее при создании исполняемого) можно выполнять проверку кода агента и используемых в нем внутренних классов (если они есть) на корректность[4] и безопасность [5] с точки зрения его выполнения на виртуальной машине платформы. Если код не корректен или не безопасен, то разработчик оповещается сообщением о найденной ошибке. Подготовка исходного кода агента может вестись не только онлайн в рамках Расширенного редактора агентов (на сайте платформы), но и на оборудовании разработчика с применением некоторой Java 11 IDE. Для этого в данной IDE создаётся проект, куда включается исходный собственный и системный код агента, API платформы и, возможно, байткод повторно используемый пользовательских шаблонов сообщений.

После того, как исходный код версии агента разработан (или модифицирован), и предполагается использовать именно его как рабочий - необходимо указать эту версию в качестве текущей.

Создание исполняемого кода агента

Средствами Редактора агентов необходимо выполнить компиляцию исходного кода текущей версии агента в байт-код (исполняемый код). (Для этого необходимо начать формирование вершины по метавершине "исполняемый код".) С момента успешного формирования исполняемого кода виртуальная машина платформы IACPaaS может активировать данный агент и выполнять код его блоков продукций.

Тестирование и отладка агента

Для функционального тестирования разработанного агента используется Тестировщик агентов, который обеспечивает многократный запуск и выполнение множества блоков продукций агента на заданном множестве тестов, а также формирование и сохранение отчетов о результатах испытаний. Множество тестов для агента формируется с помощью Редактора орграфов информации по метаинформации Структура тестов агента. Тест для агента, в общем случае, есть четверка: test = <inMsg, {testOutMsg1, …, testOutMsgk}, {modifIr1, …, modifIrn}, {testModifIr1, …, testModifIrn}>, k ≥ 0, n ≥ 0, где: Тест считается успешно пройденным, если: Для просмотра отчетов о результатах испытаний и журналов используется Редактор орграфов информации (в режиме просмотра). Журнал работы агента на конкретном тесте присоединяется к отчету и также доступен для просмотра. Журналирование применяется для получения информации о том, какие события и в какой последовательности происходят во время работы блоков продукций агента, а также для того, чтобы локализовать место возникновения ошибки. Сформированные наборы тестов могут использоваться для регрессионного тестирования в процессе сопровождения агента.

Ввод агента в эксплуатацию

После успешного завершения тестирования и отладки, с разрешения администратора предметной области, для которой разработан агент, последний (средствами Административной системы) может быть переведен в режим публичного доступа (опубликован в общий Фонд платформы). Находящийся в публичном доступе агент может быть включен в состав различных решателей задач на этапе их разработки и/или интеграции сторонними разработчиками, без контроля владельца агента (если при публикации не установлен приватный доступ).

Разработка шаблонов сообщений

Общие сведения

С точки зрения представления сообщения как некоторой информационной единицы, формируемой в Фонде платформы IACPaaS, оно является временным информационным ресурсом. Жизненный цикл сообщения начинается с его создания некоторым агентом, за которым следует посылка этого сообщения другому агенту, который, в свою очередь, его получает и обрабатывает (в рамках определённого блока продукций). После этого сообщение прекращает свое существование. (Вышесказанное не относится к процессу тестирования и отладки агента, где сообщения, используемые в запускаемых тестах (в качестве входных и ожидаемых от агента выходных), представляют собой постоянные информационные ресурсы.)

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

По аналогии с агентом, шаблон сообщений состоит из двух частей – декларативной и процедурной и представляет собой кортеж: msgTemplate = <name, internal_name, descr, [message_structure], src_code, code>, где: В существующих передовых стандартах построения мультиагентных систем, предлагаемых такими организациями как FIPA, KAoS и OMG, языки коммуникации агентов (ACL, KQML) обладают плоской (горизонтальной) структурой. Они позволяют описывать сообщения, посредством которых агенты взаимодействуют между собой, в виде множества пар имя параметра = значение параметра. Значением параметра при этом может быть объект со сколь угодно сложной структурой (описываемый на языке представления этого объекта). Расширение этих языков состоит в наращивании числа используемых параметров, многие из которых объявляются необязательными к использованию при описании сообщений. Таким образом, разработчики стандартов пошли по пути создания и совершенствования одного универсального языка, в котором предпринимаются попытки учесть всевозможные ситуации взаимодействия агентов. Однако такой подход ведет к повышению избыточности языка и вместе с тем – к снижению его выразительности ввиду того, что параметры, равно как и их значения, рассматриваются независимо друг от друга.

Вместе с тем практика разработки и развития формальных языков показывает, что: Поэтому альтернативным подходом к разработке средств взаимодействия агентов является многоязыковый подход. Именно он положен в основу взаимодействия агентов платформы IACPaaS. Каждый язык может иметь сколь угодно сложную синтаксическую структуру (представляемую орграфом метаинформации), в соответствии с которой формируется содержимое множества сообщений (представляемых орграфами информации). При этом как сам язык, так и все множество языков являются расширяемыми. Сочетание этих факторов в совокупности позволяет сводить к минимуму избыточность каждого конкретного языка, добиваясь, при этом, повышения его выразительности.

Процессы расширения как отдельно взятого языка, так и множества всех языков контролируются аппаратом управления платформы, в который входят администраторы предметных областей и администратор всей платформы IACPaaS. Основная цель, которая при этом преследуется аппаратом управления, состоит в контроле уровня повторной используемости разрабатываемых шаблонов сообщений (содержащих описание синтаксиса и семантики языка взаимодействия агентов) и выработке рекомендаций по его повышению с одной стороны, и контроле над тем, чтобы шаблон сообщений не претендовал на роль одного универсального языка – с другой. Последняя ситуация при многоязыковом подходе не запрещается, но при этом противоречит его идеологии.

Агенты взаимодействуют между собой на разных языках, количество которых расширяемо (за счет добавления в агенты новых блоков продукций) и ограничено лишь общим количеством шаблонов сообщений в Фонде платформы IACPaaS. Конкретные языки взаимодействия агентов (шаблоны сообщений) фиксируются на уровне отдельных блоков продукций. Таким образом, множество языков, на которых описаны сообщения, которые агент может принимать, определяется множеством шаблонов входных сообщений для всех его блоков продукций, а множество языков, на которых описаны сообщения, которые агент может отправлять – множеством, в которое включаются разные шаблоны выходных сообщений для всех его блоков продукций. Интеграция языков выполняется динамически – средствами виртуальной машины платформы IACPaaS в процессе взаимодействия агентов друг с другом.

Выделение в шаблонах сообщений декларативного и процедурного компонентов позволяет получить те же преимущества, что в случае с агентами (см. раздел Разработка агентов решателя задач).

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

Формирование информационного ресурса шаблона сообщений

Формирование в Фонде информационного ресурса, представляющего декларативную спецификацию шаблона сообщений, выполняется по следующей схеме.
  1. Создание с использованием Административной системы в фонде пользователя платформы IACPaaS нового информационного ресурса (с названием, совпадающим с названием шаблона сообщений, и пустым содержимым), представляющего декларативную спецификацию разрабатываемого шаблона сообщений (указывается тип ЕХ Шаблон сообщений).
  2. Формирование содержимого созданного информационного ресурса с использованием сервиса Редактор шаблонов сообщений, в котором процесс редактирования управляется метаинформацией Структура шаблона сообщений.
Специфицирование шаблона сообщений состоит в задании:

Создание версии исходного кода шаблона сообщений

После того, как декларативная часть разрабатываемого шаблона сообщений описана (или модифицирована), средствами Редактора шаблонов сообщений можно приступить к формированию версии его исходного кода (на языке Java) одним из 2 способов:
  1. генерация исходного кода версии на основе заготовки, формируемой по декларации ШС (формируется заготовка собственного кода);
  2. генерация исходного кода версии на основе кода иной версии ШС.
При генерации заготовок исходного кода проверяется полнота декларативного описания ШС. Если декларативное описание не полно, то разработчику отображается сообщение, локализующее соответствующее место в описании.

Написание исходного кода шаблона сообщений

Если в декларативной спецификации шаблона сообщений присутствует орграф, описывающий структуру содержимого сообщений разработчику необходимо дополнить сгенерированный класс-заготовку кода шаблона сообщений методами обработки содержимого сообщений: порождения, чтения и модификации орграфа информации, представляющего содержимое сообщения, в соответствии с орграфом метаинформации, представляющего структуру содержимого сообщений. В данном классе можно, также, описать и реализовать множество вспомогательных методов, внутренних классов и т.п. Таким образом, созданные по такому шаблону сообщения инкапсулируют в себе данные и методы их обработки, что существенно повышает степень повторной используемости разрабатываемого шаблона.

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

При написании исходного кода (и далее при создании исполняемого) можно выполнять проверку кода ШС и используемых в нем внутренних классов (если они есть) на корректность с точки зрения его выполнения на виртуальной машине платформы. Если код не корректен или не безопасен, то разработчик оповещается сообщением о найденной ошибке. Отметим, что код ШС может только образаться к содержимому инфоресурса сообщения, если в качестве параметра caller будет указано this - объект, представляющий сообщение.

Подготовка исходного кода ШС может вестись не только онлайн в рамках Расширенного редактора шаблонов сообщений (на сайте платформы), но и на оборудовании разработчика с применением некоторой Java IDE. Для этого в данной IDE создаётся проект (Java 11), куда включается исходный собственный код ШС (размещённый в подкаталогах согласно имени пакета) и API платформы.

После того, как исходный код версии ШС разработан (или модифицирован), и предполагается использовать именно его как рабочий - необходимо указать эту версию в качестве текущей.

Создание исполняемого кода шаблона сообщений в Фонд

Средствами Редактора шаблонов сообщений необходимо выполнить компиляцию исходного кода текущей версии ШС в байт-код (исполняемый код). (Для этого необходимо начать формирование вершины по метавершине "исполняемый код".) С этого момента виртуальная машина платформы IACPaaS может создавать сообщения по данному шаблону, осуществлять их диспетчеризацию и своевременное удаление.

Как и при проверки исходного кода в момент его написания - при создании исполняемого кода проверяется полнота декларативного описания ШС, а также, корректность и безопасность класса, представляющего собственный код шаблона сообщений и используемых в нем внутренних классов (если они есть).

Ввод шаблона сообщений в эксплуатацию

После загрузки успешного получения исполняемого кода, завершения тестирования и отладки ШС, с разрешения администратора предметной области, для которой разработан ШС, последний (средствами Административной системы) может быть переведен в режим публичного доступа (опубликован в общий Фонд платформы). Находящийся в публичном доступе ШС может быть включен в состав различных агентов как входноый или выходной на этапе их разработки сторонними разработчиками, без контроля владельца ШС (если при публикации не установлен приватный доступ).

Разработка интерфейса

Общие сведения о разработке интерфейса интеллектуального сервиса

Под разработкой интерфейса интеллектуального сервиса на облачной платформе IACPaaS подразумевается разработка отображаемого на сайте платформы web-интерфейса - в рамках решателя задач, элементы которого формируются, при необходимости агентами. Разработка выполняется с помощью высокоуровневых инструментов, которые позволяют разработчикам абстрагироваться от низкоуровневых деталей web-программирования.

web-страница интерфейса, служит для группового размещения различных визуальных объектов (текст с гиперссылками, изображения, таблицы, и т.п.), а также дополнительно подключаемых модулей (JavaScript файлов). Процессор пользовательского интерфейса (ППИ) платформы IACPaaS интегрирован в web-сайт платформы.

Пользовательский web-интерфейс сервиса может быть представлен тройкой вида: UI = <aui, {web_page1, …, web_pagen}, {resource1, …, resourcem}>, n ≥ 1, m ≥ 0, где: Каждая web-страница web_pagei (i = 1, …, n) есть тройка вида <content_descr, {ui_request1, …, ui_requestk}, [CSS]>, k ≥ 1, где: Схема взаимодействия агента Вид с установленным на web-сервере сайтом платформы и агентом Интерфейсный контроллер (входящего в состав некоторого решателя задач) представлена на рисунке. Процесс взаимодействия состоит в передаче запроса из браузера агентам сервиса и возвратом результата в браузер, между которыми выполняется обработка запроса. Нумерация стрелок на рисунке задаёт также порядок взаимодействий.

2 Схема взаимодействия агента Вид с web-сервером и агентом Интерфейсный контроллер


Устройство web-интерфейса сервиса согласуется с моделью представления пользовательского интерфейса сервисов платформы IACPaaS, в основу которой положена концепция “MVC” (Модель-Представление-Контроллер). Ее основополагающий принцип состоит в разделении данных, логики их обработки и способа их представления с целью обеспечения возможности независимого изменения каждого из компонентов. Проекция данной концепции на модель интерфейса сервисов платформы IACPaaS представлена следующим образом.
  1. Модель. Данный компонент включает в себя:
  2. Представление. Данный компонент представлен системным агентом платформы Вид, который является составной частью ППИ платформы IACPaaS. Данный агент (точнее, множество его экземпляров) является гибридным и служит посредником между частью ППИ, реализованной в виде модуля сайта платформы (установленного на web-сервере, который обрабатывает запросы от web-браузера пользователя), с которой взаимодействует Внешне-системная часть агента Вид, и множеством агентов платформы, являющихся Интерфейсными контроллерами в составе решателей задач (посредством посылки им сообщений по шаблону Запрос от агента Вид), с которыми взаимодействует Агентная часть агента Вид. Помимо функции сопряжения сайта платформы и остальной части виртуальной машины платформы IACPaaS в его задачи входит:
  3. Контроллер. Данный компонент представлен агентами, играющими роль Интерфейсного контроллера в составе различных решателей задач. Эти агенты взаимодействуют с агентом Вид посредством обмена сообщениями по определенным шаблонам и реализуют (взаимодействуя, возможно, с другими агентами решателя задач) логику обработки:
Результатом обработки является один из трёх возможных объектов: При разработке пользовательского интерфейса сервиса в Фонде должен присутствовать агент Интерфейсный контроллер, который реализует логику обработки следующего: Агент Интерфейсный контроллер может быть повторно используемым, например, в том случае, если у сервисов одинаковые с точки зрения структуры и поведения интерфейсы, но различный дизайн. Для этого на web-страницах решателя необходимо использовать разные таблицы стилей CSS (с одноименными CSS-классами).

Если подходящий агент Интерфейсный контроллер отсутствует в Фонде, то его необходимо разработать по технологии, описанной в разделе Разработка агентов решателя задач.

Порядок разработки интерфейса интеллектуального сервиса

Разработка пользовательского интерфейса состоит из следующих шагов.
  1. Создание с помощью редактора решателей задач в инфоресурсе, представляющем решатель, множества web-страниц {web_page1, …, web_pagen}, n ≥ 1 и формирование содержимого каждой web_pagei (i = 1, …, n) страницы следующим, в общем случае, образом:
  2. Разработка по технологии, описанной в разделе Разработка агентов решателя задач, агента Интерфейсный контроллер (если в Фонде отсутствует подходящий для этого агент), процедуржная часть которого содержит:

Исходный код Java-скрипта сохраняется в *.js файле. Такой файл, а также используемые им ресурсы (графические файлы и т.п.) в начале необходимо поместить в архив zip, а затем загрузить его в платформу (с помощью редактора агентов), где они размещается по заданному пути на web-сервере. При построении интерфейса агентом эти файлы будут закружены в браузер из этой локации.

Расширение набора интерфейсных элементов платформы

Набор интерфейсных элементов в модели интерфейса сервисов платформы IACPaaS является расширяемым. Добавление нового элемента состоит в добавлении: Выделение в структуре web-страниц содержательной и дизайнерской частей интерфейса позволяет:

Примечания

  1. содержимое выходных информационных ресурсов может быть пустым (см. раздел Разработка информационных ресурсов)
  2. Если содержимое информационного ресурса ig* должно формироваться (по метаинформации mg*) другим сервисом, у которого ig* должен быть указан в качестве выходного фактического параметра, то данный этап пропускается
  3. Агент, у которого присутствует локальная структура данных “рассматривается” процессором решателей задач как агент-экземпляр. Аналогами понятий “агент” и “агент-экземпляр” являются соответственно понятия “класс” и “объект” в объектно-ориентированной парадигме программирования
  4. Среди классов в jar- или zip-архиве присутствует единственный класс-наследник от главного класса заготовки с именем <внутреннее имя агента>, в этом единственном классе-наследнике переопределены все методы void runProduction(…), соответствующие блокам продукций агента и т.п.
  5. Среди импортируемых классов отсутствуют те, используя которые, можно получить доступ к внешним по отношению к платформе IACPaaS сущностям – ОС, файловой системе, СУБД, сокетам и т.п.
  6. Под запуском Java-скриптов понимается исполнение js-файлов, URL которых на web-сервере указываются в формируемом HTML-коде.