Доклад Перла Аркадия (Компания "ТриАПринт") на 3-й Конференции разработчиков на платформе FileMaker, FileMaker DevCon Rus 2016 "Обзор интеграционных решений FileMaker. Обмен данными и расширение функциональности"
Системный интегратор Москва. Step integrator. Презентация компании
Перла А. Обзор интеграционных решений FileMaker.
1. ОБЗОР ИНТЕГРАЦИОННЫХ РЕШЕНИЙ FILEMAKER.
ОБМЕН ДАННЫМИ И РАСШИРЕНИЕ ФУНКЦИОНАЛЬНОСТИ
ПЕРЛА АРКАДИЙ (КОМПАНИЯ ТРИАПРИНТ)
2. FMS
CWP
FM
(пользовательская
часть)
Приложение FileMaker
Обмен данными Расширение функциональности
Web-сервисы
Сторонние приложения
и базы данных
• Обмен файлами
(xls, csv, 1С, xml)
• ODBC-подключение
• ODBC-импорт
• XML/XSLT-импорт/экспорт
• XML-запросы
• PHP-вызовы
• http-запросы (работа со
сторонними API)
• Плагины
• дополнительные функции
• использование сторонних
языков и библиотек: JAVA,
JS, RUBY
• Web Viewer
• HTML, JS, CSS
• Сторонние JS-библиотеки
• fmp-вызовы
• Создание файлов
пользовательских форматов
(OFFICE, RTF, PDF…)
3. ОБМЕН ФАЙЛАМИ СОГЛАСОВАННОГО ФОРМАТА
Экспорт данных в файл(ы) с последующей загрузкой, по-прежнему остается актуальным способом обмена данными между
базой FileMaker и сторонними системами или базами.
Несмотря на «примитивность» решения,
использование такого способа может быть
вполне эффективно:
• Быстрая реализация. Обычно используется
стандартные форматы файлов и команды
импорта/экспорта. Не требуется «глубокое
погружение» в особенности сторонней
системы
• Надежность. Ответственность за качество
реализации распределена между
разработчиками «своих» систем. Разработчик
FileMaker делает свою часть, разработчик
сторонней системы свою.
• Возможна реализация как на стороне
пользователя, так и на стороне сервера
(автоматический запуск по расписанию)
Частые примеры использования:
• Простой обмен данными с сайтом
• Обмен данными с 1С
4. ПРИМЕР: ЗАГРУЗКА БАНКОВСКОЙ ВЫПИСКИ В ПРИЛОЖЕНИЕ FILEMAKER
Почти все клиент-банк
приложения умеют
экспортировать
выписку в формат 1С-
документ.
Это текстовый формат. Где
каждое свойство(поле)
располагается на новой
строке.
Начало и конец документа
начинаются с «Секция
документ=» и «Конец
документа», соответственно.
• Кодировка документа
Windows 1251. При
работе на OS X, нужна
предварительная
перекодировка файла
(например с помощью
iconv)
• Импорт. Возможно
импортировать весь
файл в одно текстовое
поле (Insert From Url)
либо во временную
таблицу (Import Records),
где каждая строка
документа превратится в
отдельную запись.
• Обработка импорта.
Скрипт-обработчик ищет
ключевые слова начала
и конца документа и
создает записи платежей
в системе.
5. ODBC ДОСТУП
FileMaker Server позволяет сторонним
приложениям подключаться к своим базам
данным через ODBC
В принципе, это все что нужно знать
разработчику FileMaker для ответа на
вопрос стороннего разработчика о
возможности прямого доступа к данным
Для организации доступа необходимо
• Включить ODBC-sharing (файле/сервере)
• Настроить права доступа
• Настроить подключение. Драйвер FileMaker
ODBC входит в комплект FMS
Получивший доступ сторонний разработчик
сможет читать и изменять записи (если есть
права) используя SQL-запросы
ODBC
6. ODBC ИМПОРТ ДАННЫХ
ПРИМЕР: КОНТРОЛЬ ПРИХОДА/УХОДА СОТРУДНИКОВ ПО ОТПЕЧАТКАМ ПАЛЬЦЕВ
Устройства считывания отпечатков
пальцев подключены к сети организации
и сохраняют время сканирования и ID
сотрудника на удаленный центральный
сервер в собственное приложение на базе
MySQL
MySQL
Через настроенное ODBC
подключение база FileMaker
«видит» нужные таблицы
ODBC
Запускаемый каждые 5 мин
скрипт на FileMaker Server,
обрабатывает новые данные
о сканировании отпечатков и
по полученным ID формирует
данные о приходе/уходе
сотрудников, привязывая к
офису.
Простое,
адаптированное под
формат iPhone
приложение,
позволяет
руководителю
контролировать
сотрудников во всех
офисах организации
7. ODBC ИМПОРТ ИМПОРТ ДАННЫХ
ПРИМЕР: ФОРМИРОВАНИЕ ОТЧЕТОВ О РАБОТЕ РЕСТОРАНОВ, НА ОСНОВЕ ДАННЫХ RKEEPER
Данные из
ресторанов
собираются на
центральный MS
SQL Server
ежедневно по
окончании смены
MS SQL
Запускаемый на FileMaker Server скрипт импортирует
данные уже виде необходимых отчетов с помощью
специальных SQL-запросов
Import Records ODBC Data
8. ODBC ИМПОРТ ИМПОРТ ДАННЫХ
ПРИМЕР: ФОРМИРОВАНИЕ ОТЧЕТОВ О РАБОТЕ РЕСТОРАНОВ НА ОСНОВЕ ДАННЫХ RKEEPER
MS SQL
Import Records ODBC Data
Преимущества подхода:
• Нет дублирования данных. В FMS хранятся отчеты, а в MS SQL данные о самих продажах
• Формирование отчетов происходит на самом MS SQL сервере, импортируется только
результат. Это в разы увеличивает быстродействие.
При работе с базой напрямую для
формирования отчетов нам пришлось бы
работать примерно с такой структурой…
Вместо этого мы формируем отчет на самом
MS SQL Server и импортируем только
результат запроса. В самом FileMaker для
хранения результата используется только
одна таблица
9. XML-ИМПОРТ
Импортировать XML-данные в
базу FilleMaker можно
несколькими способами:
• Import Records with XML Data
Source. Стандартная команда
FM. Требуется XLST-файл
описания структуры данных.
• Импорт XML как текста в
текстовое поле, с
последующим разбором,
скриптом или калькуляцией.
Можно использовать функции
работы с текстом или
специализированные функции
плагинов. Подходит для
небольших и простых по
структуре объемов данных.
• Обработка XML средствами
php. Требуется FMS c
включенным CWP.
Необходимо знание, как
минимум, основ php
ПРИМЕР. Загрузка курса валют с сайта ЦБ
"http://www.cbr.ru/scripts/XML_daily_eng.asp?date_req=
" & $date
http://www.cbr.ru/scripts/XML_daily_eng.asp?date_req=31.10.2016
10. XML-ЭКСПОРТ
XML- один из самых популярных форматов для загрузки данных в
сторонние сервисы и базы данных. Структура XML часто диктуется
сторонним сервисом. От FileMaker обычно требуется предоставить
интернет-ссылку или путь к валидному XML-файлу.
Получить XML из FileMaker:
• «Обычный» экспорт из FileMaker в XML-файл. Формирует структуру
данных «понятную» только FM. Чаще нам необходимо сформировать
XML в заданной структуре, для загрузки данных на сайт либо сервис.
• Использование специального XSLT-файла для формирования заданной
структуры при экспорте.
• Получить XML как возвращаемый результат xml-запроса к серверу, вида:
• Сформировать заданный XML «внутри» FM с помощью калькуляций и
скриптов в текстовое поле с последующим экспортом в файл.
http://адрес_сервера/fmi/xml/FMPXMLRESULT.xml?-db=имя_базы&-lay=имя_лайоута&-findall&-script=имя_скрипта&-script.param=параметр_скрипта
11. XML-ЭКСПОРТ
ПРИМЕР. ФОРМИРОВАНИЕ XML ДЛЯ ЗАГРУЗКИ ДАННЫХ НА САЙТ РИЭЛТЕРСКОГО АГЕНТСТВА
• Калькулируемое поле в таблице объектов
недвижимости «собирает» в себя всю
необходимую информацию и формирует xml-
запись данного объекта.
• Аналогично формируются xml-блоки для
других участвующих в XML таблицах
• Далее…
12. XML-ЭКСПОРТ
ПРИМЕР. ФОРМИРОВАНИЕ XML ДЛЯ ЗАГРУЗКИ ДАННЫХ НА САЙТ РИЭЛТЕРСКОГО АГЕНТСТВА
• Итоговый XML собирается в поле системной
таблицы с помощью функций List().
Настроенные свойства реляций позволяют
собрать только нужные записи.
• Скрипт на сервере по расписанию выгружает
значение поля (Export Records) как файл .xml
• Папка для выгрузки XML доступна через web
• Программа загрузчик сайта
закачивает полученный XML
раз сутки и обновляет данные
данные на сайте.
• Аналогично формируются
XML для сервисов поиска
недвижимости. Для каждого
сервиса, структура XML
отличается.
• Для загрузчика на сайт и
сервисов путь к
выгруженным файлам – это
валидная XML-ссылка с
всегда актуальными данными
13. РАБОТА С ВЕБ-СЕРВИСАМИ
Большинство популярных сервисов предоставляют API
для работы с ними. Работа с сервисами обычно
осуществляется с помощью http-запросов.
Для отправки HTTP-запроса можно использовать
команду Insert from Url. Результат запроса будет
сохранен в текстовое поле.
Для отправки http-запросов можно использовать также
функции плагинов, например, BaseElement (удобно для
POST-запросов)
Ответ сервиса часто возвращается в формате JSON. Для
его обработки также может быть удобно использовать
BaseElement .
Некоторые сервисы предоставляют возможность
отправки некоторых команд через e-mail.
ПРИМЕР. Сервис sms.ru
Позволяет отправить смс отправкой e-mail на
специальный адрес, образованный как уникальный
ключ пользователя + номер мобильного телефона.
Текст самого письма будет отправлен как смс
14. РАБОТА С ВЕБ-СЕРВИСАМИ
ПРИМЕР. РЕАЛИЗАЦИЯ TELEGRAM-БОТА НА FILLEMAKER SERVER
• Регистрация бота делается средствами самого
Telegram и подробно описана в документации
https://tlgrm.ru/docs#robots
• В результате мы получаем значение токена для
аутентификации и ID бота, которые сохраним в
системной таблице нашего приложения.
• Для отправки сообщения нужно знать ID-
собеседника. Его можно получить из сообщения, если
наш бот «отвечает» на сообщение пользователя.
Либо мы можем занести эти данные в карточку
пользователя заранее, если реализуем рассылку
пользователям FileMaker приложения.
• Отправка сообщения происходит через http-запрос,
который формируется в момент исполнения скрипта
как калькуляция.
https://api.telegram.org/bot196160321:AAGNPckJl3УAGdnkb7UouPPeEmmj83vp3cSDpKw/sendMessage?chat_id=3245352&text=Текст%20сообщения
Бот Mathenardo
исполняется на FileMaker
Server и обрабатывает
входящие сообщения
функцией Evaluate(), тем
самым реализуя
калькулятор выражений
15. PLUGINS.
ЕСЛИ МЫ ЧТО-ТО НЕ ЗНАЕМ КАК СДЕЛАТЬ, МЫ МОЖЕМ ЭТО СДЕЛАТЬ ЧЕРЕЗ КАКОЙ-НИБУДЬ ПЛАГИН
http://solutions.filemaker.com/made-for-filemaker/search.jsp?category=5&task=%&industry=%&sort=a
Выдает 70 плагинов, учитывая количество функций в каждом из них, это много.
Наиболее известные разработчики:
• Monkey Bread Software (MBS FileMaker Plugin). Наверное, самый мощный из всех
существующих плагинов по количеству функций и охвату тем. 4191 функция, на все
случаи жизни!
• 360 Works (ScriptMaster, SuperContainer, Scribe, Email Plugin и др.). Один из самых
известных разработчиков, с наиболее востребованными функциями.
• Goya Pty (BaseElement). Популярный бесплатный плагин с очень востребованными
функциями.
• Troi (Troi File Plug-in, Troi Dialog Plug-in и др.)
• Beezwax (bBOX)
16. PLUGINS. BASELEMENT
Основные категории функций
• DIALOGS
• CONTAINERS
• CLIPBOARD
• FILE AND FOLDER
• ENCODING AND
ENCRYPTION
• HTTP and URLS
• XML, XSLT AND JSON
• SMTP Email
• VALUE LISTS
• TIME
• ZIP AND GZIP
• и др (EvaluateJavaScript,
ExecuteScript,
RegularExpression…)
Набор функций для отправки почты в бесплатном плагине BaseElement закрывает для
разработчиков FileMaker вопрос отправки почты в формате HTML с несколькими
вложениями:
BE_SMTP_Server ( server { ; port ; username ; password } )
Устанавливаем связь с сервером
BE_SMTP_AddAttachment ( container )
Добавляет вложение к письму. Вызов функции в цикле позволяет добавить несколько
вложений.
BE_SMTP_Send ( from ; to ; subject ; text { ; cc ; bcc ; replyTo ; html ; attachments } )
Отправляет письмо через почтовый сервер, с которым ранее была установлена связь
через BE_SMTP_Server
ПРИМЕР:
Отчета о работе ресторана (см. слайд ODBC-
импорт) формируется как HTML письмо,
которое отправляется руководителям в конце
смены FileMaker-сервером, сразу после
формирования самого отчета.
HTML формируется на основе шаблона, где ключевые слова заменяются на данные
или отдельно сформированные «куски» html-кода
17. PLUGINS. BASELEMENT
ПРИМЕР. ИСПОЛЬЗОВАНИЕ JSON CUSTOM-ФУНКЦИЙ ДЛЯ РЕАЛИЗАЦИИ КНОПКИ «ОТМЕНА»
И ВОССТАНОВАЛЕНИЯ ЗАПИСИ
В момент открытия карточки записи к врачу, скрипт сохраняет текущие значения
полей в формате JSON в глобальное поле, добавляя их к существующим данным
в этом глобальном поле (если у нас открыто несколько карточек в разных окнах).
При нажатии
«Cancel» скрипт
закрытия
«вытаскивает»
из JSON
структуры по ID
карточки
значения полей
и
восстанавливает
карточку
Преимущества:
• Более быстрое и
«изящное»
решение по
сравнению с
«ручной»
обработкой текста
• Удобно работать с
несколькими
записями
18. 360 WORKS SCRIPTMASTER
ВСЕ ВОЗМОЖНОСТИ JAVA В FILEMAKER
• Бесплатный
• Позволяет запускать java-код из
под FileMaker
• Написанные на java функции
регистрируются как функции
FileMaker
• Возможность подключать
дополнительные java-
библиотеки, что дает
разработчику практически
неограниченные возможности
• Можно запускать как из
FileMaker, так и из FileMaker
Server
• В комплект входит fmp12-файл с
большим количеством примеров
RegisterGroovy( signature; script{; key1=value1; key2=value2; ...} )
• В функцию RegisterGroovy передается наименование функции с
параметрами, как текстовая стока, например:
”IB_Crop (ImageContainerName; Width; Height; StartPoint)”
и java-код самой функции.
• После вызова RegisterGroovy, новая функция доступна для вызова в
FileMaker
• RegisterGroovy удобно вызывать при открытии FileMaker-файла в стартовом
срипте
19. 360 WORKS SCRIPTMASTER
ПРИМЕР. ДОБАВЛЕНИЕ ЛОГОТИПА АГЕНТСТВА НА ФОТО ПРИ ДОБАВЛЕНИИ ФАЙЛА В БАЗУ
• Запускаемый с заданной
периодичностью скрипт на
FileMaker Server находит
новые файлы (без
watermark)
• Добавляет логотип
агентства и сохраняет в
отдельное поле-контейнер
с настроенным External
Storage
• Таким образом на сайте
показываются изображения
с логотипом, а в базе
FileMaker для сотрудников
без.
• В качестве параметров
функции передается путь к
самому изображению
(файлы в контейнере
хранятся как External
Storage) и путь к файлу-
логотипа
20. 360 WORKS SCRIPTMASTER
ПРИМЕР. СОЗДАНИЕ PDF НА СТОРОНЕ FILEMAKER SERVER
Задача. FileMaker умеет запускать скрипты на
сервере по расписанию, cохранять лайауты как pdf,
отправлять e-mail…Но не все это одновременно.
Также сохранение в PDF не работает в WebDirect
Для создания pdf используется java-библиотека itextpdf 5.5
https://github.com/itext/itextpdf/releases/tag/5.5.10
Функция SMLoadJar( externalJar ) подключает внешнюю библиотеку (файл библиотеки
хранится в контейнере системной таблицы)
В созданную функцию формирования PDF передаются все необходимые поля.
Изображения передаются в кодировке Base 64
Полученный pdf функция сохраняет в tmp-папку по заданному пути. Откуда он в уже
вставляется в поле-контейнер. Так как в FileMaker Server не работает Insert File, то для
импорта файла также используется небольшая java-функция
21. WEB VIEWER.
ЕСЛИ МЫ НЕ ЗНАЕМ КАК ЧТО-ТО СДЕЛАТЬ В ИНТЕРФЕЙСЕ, МЫ МОЖЕМ ЭТО СДЕЛАТЬ В WEB VIEWER
Web Viewer – это не способ добавить карту на лайаут…
- это возможность расширить интерфейс
пользователя, используя гигантское количество
уже разработанных примеров и решений для веб
практически до бесконечности.
HTML , CSS, JS и много, много, готовых библиотек…
22. WEB VIEWER.
ПРОСТОЙ РЕДАКТОР ДЛЯ БЫСТРОГО РИСОВАНИЯ ГЕНОГРАММЫ НА ПРИЕМЕ У ВРАЧА
Web Viewer строится на
калькулируемом поле, которое
формирует HTML-код из
шаблона, заменяя ключевые
слова на параметры и данные.
Ранее сохраненное
изображение передается из
контейнера как BASE 64
кодировка
Ширина и высота
рассчитываются исходя из
размера Veb Viewer, используя
GetLayoutObjectAttribute()
В шаблоне не используется никаких библиотек, только
«чистый» HTML, CSS и JS (работа с объектом canvas)
Для «обратного» вызова FM используется вызов типа:
Для OS X готовое изображение передается через
параметр, для Windows - через клипбоард.
fmp://$/имя_fm_бызы?script=имя_скрипта¶m=параметр
23. WEB VIEWER.
ПРИМЕР. РАСПИСАНИЕ ВРАЧЕЙ В КЛИНИКЕ И СОБСТВЕННОЕ РАСПИСАНИЕ ВРАЧА
Используется JS-библиотека DHTMLX
Sсheduler
Для формирования html-кода
используются html-шаблоны
Ключевые слова заменяются на данные
из базы
Данные о встрече формируются в
формате JSON, как калькулируемое поле.
JSON-массив формируется как List() и
заменяет в шаблоне ключевое слово.
Реакция на действия
пользователя вызывает
соответствующий скрипт
FileMaker, передавая ему
параметры.
Названия скриптов
прописаны в шаблоне