24
ОБЗОР ИНТЕГРАЦИОННЫХ РЕШЕНИЙ FILEMAKER. ОБМЕН ДАННЫМИ И РАСШИРЕНИЕ ФУНКЦИОНАЛЬНОСТИ ПЕРЛА АРКАДИЙ (КОМПАНИЯ ТРИАПРИНТ)

Перла А. Обзор интеграционных решений FileMaker

  • Upload
    fmteam

  • View
    139

  • Download
    18

Embed Size (px)

Citation preview

ОБЗОР ИНТЕГРАЦИОННЫХ РЕШЕНИЙ FILEMAKER.ОБМЕН ДАННЫМИ И РАСШИРЕНИЕ ФУНКЦИОНАЛЬНОСТИ

ПЕРЛА АРКАДИЙ (КОМПАНИЯ ТРИАПРИНТ)

FMSCWP

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…)

ОБМЕН ФАЙЛАМИ СОГЛАСОВАННОГО ФОРМАТАЭкспорт данных в файл(ы) с последующей загрузкой, по-прежнему остается актуальным способом обмена данными между базой FileMaker и сторонними системами или базами.

Несмотря на «примитивность» решения, использование такого способа может быть вполне эффективно:

• Быстрая реализация. Обычно используется стандартные форматы файлов и команды импорта/экспорта. Не требуется «глубокое погружение» в особенности сторонней системы

• Надежность. Ответственность за качество реализации распределена между разработчиками «своих» систем. Разработчик FileMaker делает свою часть, разработчик сторонней системы свою.

• Возможна реализация как на стороне пользователя, так и на стороне сервера (автоматический запуск по расписанию)

Частые примеры использования:

• Простой обмен данными с сайтом

• Обмен данными с 1С

ПРИМЕР: ЗАГРУЗКА БАНКОВСКОЙ ВЫПИСКИ В ПРИЛОЖЕНИЕ FILEMAKER

Почти все клиент-банк приложения умеют экспортировать выписку в формат 1С-документ.

Это текстовый формат. Где каждое свойство(поле) располагается на новой строке.

Начало и конец документа начинаются с «Секция документ=» и «Конец документа», соответственно.

• Кодировка документа Windows 1251. При работе на OS X, нужна предварительная перекодировка файла (например с помощью iconv)

• Импорт. Возможно импортировать весь файл в одно текстовое поле (Insert From Url) либо во временную таблицу (Import Records), где каждая строка документа превратится в отдельную запись.

• Обработка импорта. Скрипт-обработчик ищет ключевые слова начала и конца документа и создает записи платежей в системе.

ODBC ДОСТУПFileMaker Server позволяет сторонним приложениям подключаться к своим базам данным через ODBC

В принципе, это все что нужно знать разработчику FileMaker для ответа на вопрос стороннего разработчика о возможности прямого доступа к данным

Для организации доступа необходимо

• Включить ODBC-sharing (файле/сервере)

• Настроить права доступа

• Настроить подключение. Драйвер FileMaker ODBC входит в комплект FMS

Получивший доступ сторонний разработчик сможет читать и изменять записи (если есть права) используя SQL-запросы

ODBC

ODBC ИМПОРТ ДАННЫХПРИМЕР: КОНТРОЛЬ ПРИХОДА/УХОДА СОТРУДНИКОВ ПО ОТПЕЧАТКАМ ПАЛЬЦЕВ

Устройства считывания отпечатков пальцев подключены к сети организации и сохраняют время сканирования и ID сотрудника на удаленный центральный сервер в собственное приложение на базе MySQL

MySQL

Через настроенное ODBC подключение база FileMaker «видит» нужные таблицы

ODBC

Запускаемый каждые 5 мин скрипт на FileMaker Server, обрабатывает новые данные о сканировании отпечатков и по полученным ID формирует данные о приходе/уходе сотрудников, привязывая к офису.

Простое, адаптированное под формат iPhone приложение, позволяет руководителю контролировать сотрудников во всех офисах организации

ODBC ИМПОРТ ИМПОРТ ДАННЫХПРИМЕР: ФОРМИРОВАНИЕ ОТЧЕТОВ О РАБОТЕ РЕСТОРАНОВ, НА ОСНОВЕ ДАННЫХ RKEEPER

Данные из ресторанов собираются на центральный MS SQL Server ежедневно по окончании смены

MS SQL

Запускаемый на FileMaker Server скрипт импортирует данные уже виде необходимых отчетов с помощью специальных SQL-запросов

Import Records ODBC Data

ODBC ИМПОРТ ИМПОРТ ДАННЫХПРИМЕР: ФОРМИРОВАНИЕ ОТЧЕТОВ О РАБОТЕ РЕСТОРАНОВ НА ОСНОВЕ ДАННЫХ RKEEPER

MS SQL

Import Records ODBC Data

Преимущества подхода:

• Нет дублирования данных. В FMS хранятся отчеты, а в MS SQL данные о самих продажах

• Формирование отчетов происходит на самом MS SQL сервере, импортируется только результат. Это в разы увеличивает быстродействие.

При работе с базой напрямую для формирования отчетов нам пришлось бы работать примерно с такой структурой…

Вместо этого мы формируем отчет на самом MS SQL Server и импортируем только результат запроса. В самом FileMaker для хранения результата используется только одна таблица

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

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=параметр_скрипта

XML-ЭКСПОРТПРИМЕР. ФОРМИРОВАНИЕ XML ДЛЯ ЗАГРУЗКИ ДАННЫХ НА САЙТ РИЭЛТЕРСКОГО АГЕНТСТВА

• Калькулируемое поле в таблице объектов недвижимости «собирает» в себя всю необходимую информацию и формирует xml-запись данного объекта.

• Аналогично формируются xml-блоки для других участвующих в XML таблицах

• Далее…

XML-ЭКСПОРТПРИМЕР. ФОРМИРОВАНИЕ XML ДЛЯ ЗАГРУЗКИ ДАННЫХ НА САЙТ РИЭЛТЕРСКОГО АГЕНТСТВА• Итоговый XML собирается в поле системной

таблицы с помощью функций List(). Настроенные свойства реляций позволяют собрать только нужные записи.

• Скрипт на сервере по расписанию выгружает значение поля (Export Records) как файл .xml

• Папка для выгрузки XML доступна через web

• Программа загрузчик сайта закачивает полученный XML раз сутки и обновляет данные данные на сайте.

• Аналогично формируются XML для сервисов поиска недвижимости. Для каждого сервиса, структура XML отличается.

• Для загрузчика на сайт и сервисов путь к выгруженным файлам – это валидная XML-ссылка с всегда актуальными данными

РАБОТА С ВЕБ-СЕРВИСАМИ

Большинство популярных сервисов предоставляют API для работы с ними. Работа с сервисами обычно осуществляется с помощью http-запросов.

Для отправки HTTP-запроса можно использовать команду Insert from Url. Результат запроса будет сохранен в текстовое поле.

Для отправки http-запросов можно использовать также функции плагинов, например, BaseElement (удобно для POST-запросов)

Ответ сервиса часто возвращается в формате JSON. Для его обработки также может быть удобно использовать BaseElement .

Некоторые сервисы предоставляют возможность отправки некоторых команд через e-mail.

ПРИМЕР. Сервис sms.ruПозволяет отправить смс отправкой e-mail на специальный адрес, образованный как уникальный ключ пользователя + номер мобильного телефона. Текст самого письма будет отправлен как смс

РАБОТА С ВЕБ-СЕРВИСАМИПРИМЕР. РЕАЛИЗАЦИЯ 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(), тем самым реализуя калькулятор выражений

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)

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-кода

PLUGINS. BASELEMENT ПРИМЕР. ИСПОЛЬЗОВАНИЕ JSON CUSTOM-ФУНКЦИЙ ДЛЯ РЕАЛИЗАЦИИ КНОПКИ «ОТМЕНА» И ВОССТАНОВАЛЕНИЯ ЗАПИСИ В момент открытия карточки записи к врачу, скрипт сохраняет текущие значения полей в формате JSON в глобальное поле, добавляя их к существующим данным в этом глобальном поле (если у нас открыто несколько карточек в разных окнах).

При нажатии «Cancel» скрипт закрытия «вытаскивает» из JSON структуры по ID карточки значения полей и восстанавливает карточку

Преимущества:• Более быстрое и

«изящное» решение по сравнению с «ручной» обработкой текста

• Удобно работать с несколькими записями

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-файла в стартовом срипте

360 WORKS SCRIPTMASTER ПРИМЕР. ДОБАВЛЕНИЕ ЛОГОТИПА АГЕНТСТВА НА ФОТО ПРИ ДОБАВЛЕНИИ ФАЙЛА В БАЗУ• Запускаемый с заданной

периодичностью скрипт на FileMaker Server находит новые файлы (без watermark)

• Добавляет логотип агентства и сохраняет в отдельное поле-контейнер с настроенным External Storage

• Таким образом на сайте показываются изображения с логотипом, а в базе FileMaker для сотрудников без.

• В качестве параметров функции передается путь к самому изображению (файлы в контейнере хранятся как External Storage) и путь к файлу-логотипа

360 WORKS SCRIPTMASTER ПРИМЕР. СОЗДАНИЕ PDF НА СТОРОНЕ FILEMAKER SERVER

Задача. FileMaker умеет запускать скрипты на сервере по расписанию, cохранять лайауты как pdf, отправлять e-mail…Но не все это одновременно.Также сохранение в PDF не работает в WebDirect

Для создания pdf используется java-библиотека itextpdf 5.5https://github.com/itext/itextpdf/releases/tag/5.5.10

Функция SMLoadJar( externalJar ) подключает внешнюю библиотеку (файл библиотеки хранится в контейнере системной таблицы)

В созданную функцию формирования PDF передаются все необходимые поля. Изображения передаются в кодировке Base 64

Полученный pdf функция сохраняет в tmp-папку по заданному пути. Откуда он в уже вставляется в поле-контейнер. Так как в FileMaker Server не работает Insert File, то для импорта файла также используется небольшая java-функция

WEB VIEWER. ЕСЛИ МЫ НЕ ЗНАЕМ КАК ЧТО-ТО СДЕЛАТЬ В ИНТЕРФЕЙСЕ, МЫ МОЖЕМ ЭТО СДЕЛАТЬ В WEB VIEWER

Web Viewer – это не способ добавить карту на лайаут…

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

HTML , CSS, JS и много, много, готовых библиотек…

WEB VIEWER. ПРОСТОЙ РЕДАКТОР ДЛЯ БЫСТРОГО РИСОВАНИЯ ГЕНОГРАММЫ НА ПРИЕМЕ У ВРАЧА

Web Viewer строится на калькулируемом поле, которое формирует HTML-код из шаблона, заменяя ключевые слова на параметры и данные.

Ранее сохраненное изображение передается из контейнера как BASE 64 кодировка

Ширина и высота рассчитываются исходя из размера Veb Viewer, используя GetLayoutObjectAttribute()

В шаблоне не используется никаких библиотек, только «чистый» HTML, CSS и JS (работа с объектом canvas)

Для «обратного» вызова FM используется вызов типа:

Для OS X готовое изображение передается через параметр, для Windows - через клипбоард.

fmp://$/имя_fm_бызы?script=имя_скрипта&param=параметр

WEB VIEWER. ПРИМЕР. РАСПИСАНИЕ ВРАЧЕЙ В КЛИНИКЕ И СОБСТВЕННОЕ РАСПИСАНИЕ ВРАЧА

Используется JS-библиотека DHTMLX Sсheduler

Для формирования html-кода используются html-шаблоны

Ключевые слова заменяются на данные из базы

Данные о встрече формируются в формате JSON, как калькулируемое поле.

JSON-массив формируется как List() и заменяет в шаблоне ключевое слово.

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

Названия скриптов прописаны в шаблоне

Спасибо за внимание!

Вопросы?