Разработка API в Компании ИнфоСтрой

О нашей Компании

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

На договорной основе мы разрабатываем интеграционные решения – отдельные приложения и дополнения, включенные в коробку, созданные силами наших разработчиков, например, модуль PMAgent – интеграция Комплекса А0 и ПО Oracle Primavera, модуль подготовки данных для определения начальной максимальной цены контракта (НМЦК), модуль «Исполнение» и др.

До некоторого момента мы интегрировали наши продукты с ПО, входящим в КИС предприятий, на основе нашего основного коробочного решения. Мы либо модифицировали коробку, если считали такую модификацию перспективной для дальнейшего использования нашими актуальными и потенциальными пользователями, либо применяли технологии, не затрагивающие коробку, например, метаданные, для учета специфических запросов отдельных заказчиков.

Почему API

Ситуация изменилась с появлением заказчиков, выразивших желание использовать централизованную базу проектов без приобретения нашего клиентского ПО – Сметно-аналитического комплекса А0: «Нам нравится ваша идея централизованного хранилища данных, но приложения для работы с данными мы хотим разработать сами: у нас есть особенности, которые не представлены в вашей коробке, нам интересен другой интерфейс, в частности, web».

Другой запрос был связан с заказом приложения, извлекающего сметы из базы данных, предоставляющего интерфейс для фильтрации, структуризации этих данных и их выгрузки в Excel для последующей внутрифирменной обработки. Но при этом предъявлялось условие: предоставить исходные коды. Это проблематично, учитывая, что код коробки шифруется через ключ. И это было только начало. Запросы аналогичного характера продолжали поступать.

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

Этими запросами была инициирована работа по созданию API – программного интерфейса приложений, т.к. именно с помощью API приведенные выше запросы можно естественным образом удовлетворить.

Что такое API

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

В нашем случае API – это множество функций для доступа к нашей централизованной базе проектов и интерфейсы к ним. API «отвязано» от коробочного решения: программисты заказчика могут разрабатывать собственные приложения, взаимодействующие с централизованной базой проектов, без необходимости задействовать многофункциональные механизмы, включенные в «коробку». Это, очевидно, является ответом на первый из приведенных выше запросов.

Что такое API

Что такое API

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

Таким образом, основная интенция, стоящая за идеей внедрения API, – дать возможность заказчикам, используя свои IT-мощности либо аутсорсинг, аутстаффинг и проч., разрабатывать свои собственные приложения, которые умеют взаимодействовать с централизованной БД проектов, и получать все преимущества от использования разностадийных сметных данных в различных аппликациях, составляющих содержание фирменных информационных систем.

Что нам дает API

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

2. Передача исходного кода
Для разработчика снимается проблема передачи прав на ПО при заключении договоров с организациями, обязательным условием сотрудничества с которыми является предоставление исходного кода. Мы передаем незашифрованное приложение, но шифруем API.

3. Гибкость в выборе среды разработки
Наш API выполнен с использованием технологий COM, это позволяет пользователям API при создании собственных приложений использовать любую среду разработки, которая умеет взаимодействовать с COM-серверами.

4. Многопоточность
Упомянутые COM-технологии позволяют организовать многопоточность без вмешательства в код. А многопоточность – это производительность.

5. Снижение требований к шифрованию кода
Реализация отдельных частей ПО через API позволяет четко отделить участки кода, требующие шифрования, от тех, шифровать которые не надо. Меньше шифрования - меньше объем кода, выше производительность.

Примеры использования API

1. Интеграция портала строительной организации с Комплексом А0
Это пример «из жизни». Сотни подрядчиков вводят, в том числе с мобильных устройств, через свои личные кабинеты фактически выполненные объемы за месяц. Утвержденные сметы, в которые должны попасть эти объемы, находятся в централизованной базе Комплекса А0. Введенные объемы проверяются, согласуются, на их основе рассчитываются итоговые стоимости выполненных работ и формируются документы по выполнению – акты по форме КС-2. Этим занимается модуль учета выполненных работ, входящий в состав портала и являющийся частью единой среды проектов для участников строительства.  Данные передаются в Комплекс А0, который рассчитывает остатки, при необходимости выполняет план-фактный анализ и передает результаты обратно на портал в модуль бизнес-анализа.

Интеграция портала строительной организации с Комплексом А0
Интеграция портала с комплексом А0

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

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

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

Подготовка данных для определения начальной максимальной цены контракта

Подготовка данных

3. Интеграция Комплекса А0 и системы управления проектами Oracle Primavera 
Такой интеграционный модуль разработан в Компании ИнфоСтрой и называется PMAgent. Задача модуля –обмен данными между Комплексом А0 и Oracle Primavera. Модуль был реализован до создания API A0, но идеальная схема, которую, возможно, предстоит реализовать, выглядит так:

Интеграция А0 и Oracle Primavera
Интеграция А0 и Oracle Primavera

Видно, что оба продукта имеют API для доступа к данным своих баз. Такое решение будет оптимальным и улучшит характеристики модуля.

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

Использование ССИ для анализа итогов в произвольных разрезах
Использование ССИ для анализа итогов

На эту тему имеется много публикаций, и организации этим реально пользуются. Тем актуальнее задача доработки API под ССИ. Заказчики, системные интеграторы заинтересованы в доступе к функциям ССИ через собственные приложения, например, для использования web-интерфейса, чтобы наилучшим образом адаптировать функциональность ССИ под свои нужды. Анализ рынка показывает, что риски такой инициативной разработки минимальны, и она включена в наши планы.

В итоге

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

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

Если вас заинтересовала эта информация и вы хотите приобрести API А0, сформулировать свои предложения по доработке API под нужды вашей организации или задать любые вопросы по этой теме, пожалуйста, обращайтесь в Компанию ИнфоСтрой по телефонам 8 (800) 222-90-94, 8 (812) 325-90-94 или по электронной почте [email protected]. Ждем вас!