Квест в реальности с Oculus Rift

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

Для тех, кто пропустил предыдущую серию, эскейп-рум — это игра, в которой тебя и твоих друзей запирают в реальном помещении с реальными предметами. Вы ищите подсказки, ключи, решаете головоломки и пытаетесь выбраться за 60 минут. Все настоящее.

Наш квест называется «Киберпанк» и не использовать VR мы не могли. (Ниже спойлеров нет.)

image

Одним из отличных примеров «виртуального интерфейса» для нас был фильм Iron Man, где герой ловко управлял с помощью рук всякими голографическими штуками. Похожий на это интерфейс мы хотели реализовать, но в итоге все получилось немного иначе.

Главным вопросом изначально был способ взаимодействия с виртуальной реальностью. Шлем обеспечивает только отслеживание поворотов головы, нажать кнопку или переместиться в пространстве им нельзя. Единственный метод воздействия с помощью шлема — «долго посмотреть на предмет, и тогда что-то случится». Такой способ мы оставили на крайний случай и пошли исследовать более продвинутые варианты.

Ныне популярным способом управления в VR является девайс Razer Hydra. Он состоит из двух джойстиков и базы, полностью отслеживает положение рук в пространстве, плюс кнопки на джойстиках. С помощью Гидры можно двигать руками, брать и перемещать предметы в VR. Однако, мы отказались от нее по причине излишней сложности — на джойстиках очень много кнопок, не будешь же писать инструкцию, какая чем управляет. К тому же, сама конструкция содержит много тоненьких проводов и вообще довольно нежная, вандалоустойчивость минимальна.

image

Другой, более заманчивый вариант — использование сенсора Microsoft Kinect. Это камера, которая снимает не только изображение, но и «карту глубины», то есть позволяет реконструировать трехмерное пространство. Кинект также умеет восстанавливать движение скелета человека, анализируя 3д картинку, но это работает очень плохо, все дрожит и глючит. Нас интересовали именно сырые данные о глубине.

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

image

В итоге нам удалось интегрировать Кинект в игру. Игрок мог видеть свои руки и тело, нажимать виртуальные кнопки, а также скроллировать и зумить жестами, аналогичными тач интерфейсу, практически как Тони Старк. Однако открылась неприятная проблема — чтобы все работало должным образом, игрок должен сидеть строго в определенном месте. Иначе, если он сдвинется вперед, то как бы выйдет из своего виртуального тела, увидит свою спину и голову и не сможет ничем управлять. Чтобы решить эту проблему, нужно точно отслеживать положение головы игрока в пространстве. Эта фича будет реализована штатно во второй версии шлема Oculus RIft, а в первой отслеживания положения нет, только повороты. Мы могли бы сделать такой трекинг сами (например, наклеить на шлем светодиоды и анализировать их положение с камеры), но время уже поджимало, и в итоге — увы! — решили отказаться от использования Кинекта.

Мы обошлись только трекингом поворота головы. Времени оставалось уже совсем немного, оставалось реализовать интерфейс «посмотри на нечто долгое время, и оно активируется», так и сделали.

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

Тестеры говорят, что сносит башню порядочно, но разработчик уверен, что можно в 8 раз лучше. В следующих квестах будем использовать более продвинутые сенсоры. Уже есть идеи на этот счет. Кроме того, в мире уже разработаны костюмы для полного отслеживания тела в VR, и скоро начнут рассылать Oculus Rift 2, в общем перспективы самые радужные.

Ну и разумеется, будем вести дневник разработки на Хабре.

То, что получилось в текущей версии — можете оценить лично, если будете в Санкт-Петербурге.

image

ссылка на оригинал статьи http://habrahabr.ru/post/221517/

ActiveRecord: ORM и типы данных

ActiveRecord and data typesActiveRecord — удивительная библиотека, благодаря которой работа с СУБД становится необычайно лаконичной. Достигается это применением техники ORM (Object-Relational Mapping), шаблона проектирования Active record (Активная запись) и некоторыми другими архитектурными решениями.
Меня сразу заинтересовал вопрос, в чём различия между ORM и шаблоном Active record? Хотя подобные вопросы носят скорее философский характер и не мешают применять библиотеку ActiveRecord на практике, мне всегда хотелось иметь более ясное представление о концепциях и технологиях, которые используются в работе. Поэтому, немного побродив по сети, выяснил, что ORM обладает более широким смыслом. Шаблон Active record призван обеспечить взаимодействие с реляционными базами данных посредством ООП. Таблица представляется в виде класса, строка — в виде объекта, поле (атрибут) — в виде свойства объекта. Для реализации CRUD-операций объект содержит соответствующий набор методов. ORM содержит схожие идеи, но вы не обязательно должны привязываться к реляционной модели данных. Другими словами, ORM является объектным представлением источника данных, в качестве которого могут выступать как реляционные СУБД, так и NoSQL-хранилища данных.
Таким образом, можно сказать, что библиотека ActiveRecord — это ORM, реализующая шаблон Active record для взаимодействия с реляционными базами данных.

Если теперь мы зададимся целью перечислить существующие реляционные СУБД, их количество окажется весьма внушительным. И хотя в их сердце лежит стандарт SQL, каждая СУБД использует свой собственный SQL-диалект. Поскольку ActiveRecord не привязан к какой-то конкретной СУБД, он должен учитывать существующие различия. Это достигается с помощью специального класса — адаптера. Каждый раз, когда мы создаём подключение к базе данных с помощью вызова метода ActiveRecord::Base.establish_connection или указываем конфигурацию для rails-приложения в файле config/database.yml (путь относительно корневого каталога приложения), мы указываем имя адаптера, который будет отвечать за взаимодействие с СУБД. Например так:

ActiveRecord::Base.establish_connection adapter: «mysql2»,
host: «localhost»,
username: «emerald»,
password: «dawn»,
database: «music»
В данном случае адаптер называется mysql2. Это означает, что ActiveRecord будет искать вот такой файл: active_record/connection_apdapters/mysql2_adapter.rb в котором подразумевается определение класса Mysql2Adapter. На самом деле, для каждого имени адаптера необходим соответствующий файл и класс. Некоторые адаптеры по умолчанию уже поставляются вместе с ActiveRecord. Если мы из корневого каталога rails-приложения выполним команду bundle open activerecord (как настроить команду bundle open можно посмотреть здесь) и заглянем в lib/active_record/connection_adapters, то увидим файлы для адаптеров sqlite, sqlite3, postgresql, mysql и mysql2. Другие адаптеры для работы с соответствующими СУБД можно поискать среди gem-ов.

Каждый конкретный класс адаптера является наследником класса AbstractAdapter и находится в пространстве имён модуля ActiveRecord::ConnectionAdapters. Помимо этого, ActiveRecord предоставляет собственные типы данных для того, чтобы избежать зависимости от типов данных конкретной СУБД:

* binary
* boolean
* date
* datetime
* decimal
* float
* integer
* primary_key
* string
* text
* time
* timestamp

Обычно их отображение на типы данных СУБД задаётся в виде метода экземпляра адаптера #native_database_types, который возвращает хэш. Этот метод определяется в соответствующем классе адаптера. Например, для mysql2 нужно смотреть класс ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter в файле lib/active_record/connection_adapters/abstract_mysql_adapter.rb. Интересные нам фрагменты кода выглядят так:

[code language=«ruby» gutter=«false» title=«lib/active_record/connection_adapters/abstract_mysql_adapter.rb»]
# Line 113
NATIVE_DATABASE_TYPES = {
:primary_key => «int(11) DEFAULT NULL auto_increment PRIMARY KEY»,
:string => { :name => «varchar», :limit => 255 },
:text => { :name => «text» },
:integer => { :name => «int», :limit => 4 },
:float => { :name => «float» },
:decimal => { :name => «decimal» },
:datetime => { :name => «datetime» },
:timestamp => { :name => «datetime» },
:time => { :name => «time» },
:date => { :name => «date» },
:binary => { :name => «blob» },
:boolean => { :name => «tinyint», :limit => 1 }
}

# Line 173
def native_database_types
NATIVE_DATABASE_TYPES
end
[/code]
В конечном итоге, получить тот же хэш можно непосредственным вызовом метода у объекта адаптера:

ActiveRecord::Base.connection.native_database_types

В общем, если вы вдруг забыли как на самом деле будет выглядеть тип данных boolean в MySQL, вы всегда сможете найти ответ в исходном коде или вызове метода. В Rails 4 — здесь без изменений.

ссылка на оригинал статьи http://habrahabr.ru/post/221499/

Сравнительный обзор BPM-систем

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

Нельзя запускать проект, опираясь на возможности наскоро выбранного продукта и обещания вендора, есть масса аспектов, которые нужно обдумать и взвесить. А последствия неправильного выбора и осознание своей ошибки уже во время работы, «на половине пути» может стоить дорого.

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

Обзор BPM-решений

Рассматриваемые BPM-решения: ELMA BPM Suite, Bizagi BPM Suite и Bonita Open Solution. Все они являются популярными и востребованными. Кроме того, данные решения во многом схожи функционально.

Рассмотрим их главные компоненты:

  1. дизайнер для моделирования бизнес-процессов;
  2. механизм исполнения;
  3. средства контроля и мониторинга выполнения бизнес-процессов;
  4. возможности быстрого изменения бизнес-процессов.

В статье мы рассмотрим реализацию этих возможностей, а также:

  1. пользовательский интерфейс;
  2. стоимость систем;
  3. наличие мобильной версии;
  4. другие критерии.

Моделирование бизнес-процессов

ELMA BPM

ELMA BPM – разработка российской компании ELMA, предназначенная для управления бизнес-процессами.

Моделирование бизнес-процессов в системе ELMA осуществляется в специальном графическом редакторе «Дизайнер ELMA» в нотации BPMN 2.0, которая, к слову, была целиком переведена на русский язык именно специалистами данной компании и доступна для свободного скачивания на сайте ELMA.

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

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

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

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

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

Добавлю, что в системе ELMA реализована отладка процессов и инструменты для их тестирования (верификации). При публикации модели процесса автоматически выполняется верификация синтаксиса – проверка правильности модели и проверка сценариев на наличие ошибок.

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


Рис. 1. Интерфейс графического редактора «Дизайнер ELMA»


Рис. 2. Форма заполнения заявки (в режиме отладки) в системе ELMA

Процессы в ELMA можно непрерывно улучшать, причем прямо «на ходу», без остановки исполнения. Так что есть возможность учитывать все особенности организации.

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

Возможно, плановое значение изначально задано неверно, и стоит его скорректировать, как и сам процесс.

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

Следующий участник обзора – Bizagi – тоже отличается своими механизмами исполнения процессов.

Bizagi BPM Suite

Система весьма известная и популярная. Bizagi BPM Suite состоит из компонентов, выполняющих отдельные функции:

  1. Bizagi Process Modeler – дизайнер процессов;
  2. Bizagi Studio — автоматизация процесса;
  3. Bizagi BPM Server — исполнение процесса.

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

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

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

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

В веб-интерфейсе выполняются пользовательские задачи и производится контроль исполнения процесса. Система создает подробные отчёты по процессу в целом и отдельно по каждой задаче. Отчёты доступны в веб-интерфейсе.

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

Bizagi дает возможность обмена моделями между приложениями, поддерживается импорт и экспорт в форматы XPDL и MS Visio.


Рис. 3. Моделирование процессов в Bizagi BPM Suite

Затрудняет работу необходимость постоянного переключения между окнами редакторов, при таком количестве окон требуется постоянная смена фокуса внимания. Это все очень сложно, особенно, для человека, впервые открывшего систему.

Важно учесть, что Bizagi BPM Suite испанская разработка, и в России у компании нет официального представительства. Это довольно серьезный недостаток, ведь когда вендор находится в другом государстве, тяжело внедрять его продукт.

Bonita Open Solution

Bonita Open Solution – французский вендор. Представительства в РФ, как и у предыдущего решения, нет. Не так давно, по некоторым данным, была переведена только пользовательская часть системы, в целом, российской локализации нет.

В opensource-версии системы отсутствуют средства мониторинга процессов. В свою очередь, в коммерческом варианте системы они есть. Решение состоит из трёх основных компонентов, разделенных по назначению:

  1. Studio — моделирование и автоматизация бизнес-процессов;
  2. Execution Engine — исполнение бизнес-процессов;
  3. User Experience — интерфейс для работы пользователя с его процессами.

Моделирование процессов Bonita Open Solution происходит в нотации BPMN. Поддержка нотации довольно полная. Решение поддерживает импорт диаграмм из формата XPDL, но без возможности экспорта в него. Также нет и поддержки BPEL.

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


Рис. 4. Моделирование бизнес-процессов в Bonita Studio

Интеграция с другими корпоративными приложениями

ELMA BPM

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

В системе ELMA есть средства интеграции с основными корпоративными приложениями (SOA, CRM, почтовые сервисы, оповещения на почту и по sms). Для российских пользователей плюс системы состоит в тесной интеграции с «1С: Предприятие». У системы богатая поддержка работы с веб-сервисами, что полностью задокументировано разработчиком. Поэтому интегрировать ELMA с любой внешней системой не составляет труда. Кроме того, есть поддержка работы с сервисной шиной (ESB) и интеграция с шинами передачи данных на уровне моделирования бизнес-процессов (JMS, MSMQ). Портлеты ELMA встраиваются в корпоративные Порталы: SharePoint, Bitrix.

Bizagi BPM Suite

Стоит отметить гибкие возможности BizAgi BPM Suite по интеграции с внешними системами и приложениями. Эти возможности позволяют связать процессы с любой другой системой. Такие возможности конфигурации включают в себя различные механизмы на уровне интеграции данных и на уровне процессов. Поддерживаются следующие виды интеграций:

  1. с внешними источниками данных;
  2. с сервером электронной почты (оповещения);
  3. с ECM (и системами электронного документооборота);
  4. с иными IT-системами;
  5. возможность ссылаться на внешние сети.

Bonita Open Solution

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

Интерфейс

ELMA BPM

Интерфейс системы в целом удобный, простой и понятный. Это касается всех ее компонентов. К ней легко адаптироваться, потому что интерфейс Внутреннего Портала одинаковый для работы со всеми приложениями системы. Его можно легко сделать очень простым и удобным для конечных пользователей. Любая информация может отображаться в красивом и понятном формате.


Рис. 5. Создание заявки в интерфейсе системы ELMA 3.5

Настраиваются и формы задач, и документов, и карточек произвольных объектов. Для разных групп пользователей система может выглядеть по-разному. Есть конструктор форм, который работает без дополнительной верстки html-страниц.

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

Bizagi BPM Suite

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

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


Рис. 6. Интерфейс системы Bizagi

Bonita Open Solution

Продукт имеет удобный графический интерфейс для моделирования бизнес-процессов. Можно моделировать бизнес-процессы и создавать собственный интерфейс. В Bonita Studio встроен графический конструктор экранных форм Bonita Form Builder, он позволяет создавать веб-интерфейсы для работы с бизнес-процессами.

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


Рис. 7. Интерфейс Bonita Studio

Недостатки систем

ELMA

Нотация BPMN 2.0 русифицирована, и русские названия элементов модели процесса значительно облегчают общение с бизнес-пользователями, но соответствие нотации у ELMA BPM менее полное, чем у Bizagi. Разработчики ELMA сконцентрировались только на тех элементах, которые реально можно автоматизировать, а поддержка неисполнимых элементов довольно слабая.

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

Bizagi BPM Suite

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

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

Bonita Open Solution

Нет средств статической верификации процессов (доступна их симуляция с различными параметрами и формированием отчётов по результатам).

Недостатком BOS также является отсутствие поддержки динамического изменения бизнес-процесса, затрудняющее оптимизацию процессов. Данное упущение является существенным для BPM-системы, поскольку после запуска системы в работу любое изменение намного сложнее реализовать. Возможность изменения процесса во время его исполнения входит в число ключевых концепций BPM.

Пользователи отмечают сложности с использованием русского языка в системе. Если название процесса написать русскими символами, он не находится при запуске в отдельном окне. Нельзя прописать по-русски и элементы процесса, поскольку может возникнуть конфликт имен при совпадении количества символов в пределах процесса. Все имена в таком случае переводятся на английский язык и символы заменяются на «нижнее подчеркивание». Цветовая гамма – красный, черный, белый… И вообще, внешний вид системы какой-то агрессивный. Думаю, это очень сильно утомляет, к тому же нельзя быстро его перенастроить.

Стоимость систем

ELMA

Есть бесплатная версия на пять рабочих мест. Также вендор предлагает коммерческие версии: легковесную Экспресс-версию на бесплатном СУБД Firebird. В качестве базовой предлагается «Стандарт» версия на MS SQL. Версия Стандарт стоит примерно в полтора раза дороже «Экспресса».

Стоимость лицензии – менее 10 тысяч за 1 рабочее место. А в случае с версией «Экспресс» — значительно ниже.
Также ELMA предлагает корпоративную версию, которая поддерживает кластерную архитектуру для обеспечения высокой производительности в больших организациях. Данная версия работает как на корпоративной версии MS SQL, так и на Oracle. Цены на корпоративную версию на сайте разработчика найти не удалось.

Bizagi BPM Suite

Система доступна в двух вариантах:

Enterprise Edition. Корпоративные решения BizAgi BPMS разработаны для крупных предприятий. Они обеспечивают все функции, необходимые в большом количестве BPM проектов. В системе могут работать от сотен до тысяч пользователей.

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

Стоимость лицензий – около 100$ за одного пользователя.

Bizagi Process Modeler – дизайнер бизнес-процессов распространяется бесплатно.

Bonita Open Solution

Решения системы – Bonita Portal, Bonita Studio и Bonita Engine платные, на официальном сайте есть подробное описание всех модулей, но нет информации по их стоимости. Есть бесплатная Opensource-версия.

Выводы

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

За красотой интерфейса в ряде систем скрывается неудобная настройка. Усложняет внедрение BPM-решений и территориальная удаленность вендоров. Что же касается функциональных возможностей, здесь во многих вопросах, конечно, Bizagi держит уверенное первенство. Но, что особенно приятно, отечественная разработка – ELMA BPM уже не только может поравняться силами со своими западными коллегами, но и в чем-то их превзойти.

ссылка на оригинал статьи http://habrahabr.ru/post/221495/

AdMob, Qt 5.2 и Android или что бывает когда в интернете нет ответа

Здравствуйте, коллеги.

Qt 5 достаточно нов для того чтобы там не оказалось чего-то очень нужного. Вот так же выяснилось что там нет плагина для AdMob и других сервисов монетизации.
После того как вы разработали или портировали свое приложение на Qt под android, часто может встать вопрос монетизации. Кратко упомянуто о решении это проблемы в моем предыдущем посте. Здесь описано более подробно как встроить AdMob в Qt приложение под Android.

Поиск готового решения

V-play AdMob plugin

V-play платный фреймворк с плагином для встраивания разных сервисов в Qt приложения, в том числе и рекламные. Для кого-то это будет вполне приемлимое решение вопроса монетизации.

qadmob

Много ссылок в сети ведут именно на этот плагин, но он уже устарел.

Что помогло решить проблему

Помогли: документация для разработчика под Android, исходный код Qt и Necessities, а также немногочисленные стать, «отца» Qt под Android, Богдана Ватры.

Инструкция

Google Play Service

Вначале надо добавить Google Play Service (на данный момент именно там находится a AdMob java api) для совместной сборки с вашим проектом на Qt.

Шаг 1

Добавляем файл project.properties в папку где хранятся android файлы Qt проекта. В нем прописываем ссылку на библиотеку Google Play Service:
android.library.reference.1=./relative/path/to/google-play-services_lib
Важно указать именно относительный путь к директории библиотеки, с абсолютным путем будут ошибки при сборке. И естественно этот путь должен быть относительно build директори проекта, а не директории с исходным кодом.

Шаг 2

Это шаг может не понадобится, но если появляются ошибки при сборке попробуйте его.
В директории библиотеки ( /path_to_android_sdk/extras/google/google_play_services/libproject/google-play-services_lib/) нужно запустить следующие команды:

android update lib-project --path . ant clean ant release 
Шаг 3

Далее редактируем AndroidManifest.xml

добавляем права для загрузки рекламы:

 <uses-permission android:name="android.permission.INTERNET"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   

добавляем версию Google Play Service в секцию application:

 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>   

добваляем activity в секцию application:

 <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.android.gms.ads.AdActivity"/>   
Добавлям AdMob баннер

После того как Google Play Service подключен к проекту, следует реализовать главное Activity, которое должно наследоваться от QtActivity, в нем уже надо добавить AdView. Вот как примерно это может выглядеть в коде:

Много кода

 package org.qtproject.example.admobqt;    import com.google.android.gms.ads.AdRequest;    import com.google.android.gms.ads.AdSize;    import com.google.android.gms.ads.AdView;    import com.google.android.gms.ads.AdListener;    import android.os.Bundle;    import android.view.View;    import android.view.ViewGroup;      public class AdMobQtActivity extends org.qtproject.qt5.android.bindings.QtActivity    {      private static ViewGroup viewGroup;      private AdView mAdView;      private boolean adAdded = false;      @Override      public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mAdView = new AdView(this);        mAdView.setAdUnitId("YOUR_ADMOB_ID_HERE");        mAdView.setAdSize(AdSize.BANNER);        View view = getWindow().getDecorView().getRootView();        if (view instanceof ViewGroup) {          viewGroup = (ViewGroup) view;          ViewGroup.LayoutParams ad_layout_params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 150);          mAdView.setLayoutParams(ad_layout_params);          mAdView.setAdListener( new AdListener() {            public void onAdLoaded(){              if( adAdded)                return;              adAdded = true;              viewGroup.addView( mAdView);            }          });          AdRequest adRequest = new AdRequest.Builder()            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)            .addTestDevice("INSERT_YOUR_HASHED_DEVICE_ID_HERE")            .build();          mAdView.loadAd( adRequest);        }      }      @Override      public void onPause() {        mAdView.pause();        super.onPause();      }      @Override      public void onResume() {        super.onResume();        mAdView.resume();      }      @Override      public void onDestroy() {        mAdView.destroy();        super.onDestroy();      }    }  

Здесь мы получаем корневое View из нашего Activity.

 View view = getWindow().getDecorView().getRootView();  

В Qt проекте это будет QtLayout, который наследуется от ViewGroup, что нам и позволяет включить в него AdView.
Далее надо добавить в ViewGroup AdView в тот момент когда реклама будет загружена. Если это сделать в функции onCreate то рекламный блог не отобразится пока не сменится ориентация экрана, либо пока приложение не будет свернуто и развернуто. Похоже это проблема в Qt java классах QtLayout.java и/или QtSurface.java.

       mAdView.setAdListener( new AdListener() {            public void onAdLoaded(){              if( adAdded)                return;              adAdded = true;              viewGroup.addView( mAdView);            }          });  

Вот что получилось в итоге:
github.com/AlexMarlo/AdMob-Qt5.2-Example

Полезные ссылки:
qt-project.org/doc/qt-5/qtandroidextras-notification-example.html
gitorious.org/qadmob
blog.qt.digia.com/blog/2013/12/12/implementing-in-app-purchase-on-android/
developer.android.com/tools/projects/index.html
developer.android.com/tools/projects/projects-cmdline.html

PS:
Следующим шагом должно быть создание полноценного кросплатформенного плагина для интеграции AdMob и других сервисов монетизации в Qt. Не уверен что смогу что-то такое сделать, но надеюсь что данная статья поможет кому-то справиться с этой задачей.

ссылка на оригинал статьи http://habrahabr.ru/post/220947/