FME Server Key Capabilities
Automation
Self-Serve
Real-Time
Poll
Are you familiar with these terms and what they mean (check all that apply?):AJAX
● CORS
● REST
● Webhooks
● WebSockets
Client-Server
Architecture
A whole web app
Architecture - Server-Side
FME Server provides server side processing
transform messages
interact with server resources
maintain state in a database
Architecture - Server-SideQueuing & FME
Engines
Data transformation requests are queued.
Each FME Engine can process a single request.
More FME Engines = more concurrent requests.
Architecture - Server-SideFME Server
Interfaces
FME Server’s functionality is offered over the
web via:
● Data Streaming service
● REST API
● HTML5 WebSockets
Architecture - Client-Side
Clients can be any programming language or
component that can make a REST call
C++
.Net
Java
Ruby
JavaScript
etc.
Poll
What programing language are you going to use with FME Server (select all that apply)?
● .NET
● Java
● JavaScript
● Python
● Ruby on Rails
Architecture - Client-SideJavaScript &
JSON
Most common client is a web application
communicating with REST via JavaScript
Most common data format is JavaScript Object
Notation (JSON)
Requesting data from FME Server
Data Streaming Service
Request URL → Data returned
Requesting data from FME Server
Data Visualization
Choose web mapping library
FME Server → data in required format
Gotcha
CORS:
Cross-Origin Resource
Sharing
Data Processing
Query string → published parameters
AJAX call
Requesting data from FME Server
Data Delivery
Demo
Data DeliveryPublished Parameters
Workspace
REST API
JavaScript Library
Performance Tip
Scheduled caching job:
● request popular data
● upload – S3, FTP
Reduces:
● engine use
● load time
Sending data to FME Server
● Data Upload Web Service
● Notification Service
● Data Streaming service
Data Upload Applications
Session-based, via Data Upload service
Moving data at real-time on the web
Real-Time GIS Editing demo
HTML5 WebSockets
Modes in FME Server:
● Message Streaming
● Hybrid
Message streaming mode
Hybrid Mode
Poll
Are you currently developing or considering developing any of the following apps (select all that apply)?
● Data Delivery
● Data Editing
● Data Processing
● Data Upload
● Data Visualization
Development Tips
Things to make life a bit easier
Development Tips
Source Control - GitHub
Development Tips
HTML/CSS Framework - Twitter Bootstrap
Development Tips
JavaScript Libraries
o HTML Templating - mustache.js, handlebars.js
o Common tasks - jQuery
Templating
<div id="target">Loading...</div><script id="template" type="x-tmpl-
mustache">
Hello {{ name }}!</script>
---------------------------------------------------------------------
function loadUser() {
var template = $('#template').html();
var rendered = Mustache.render(template, {name: "Luke"});
$('#target').html(rendered);
}
Server-Server
Architecture
Server-Server Architecture
Push when data is ready or event occurs:
o HTML5 WebSockets
o JMS
o SNS
Overhead:
Specific API and server must be used
Server-Server Architecture
Push when data is ready or event occurs:
● Webhooks
Overhead:
ability to send and receive HTTP POST
Webhooks
Provide a URL to an application.
The application sends a message to that URL
when an event occurs.
FME Server can both send and receive using
Webhooks.
Webhooks Demo
I need to create new tasks in Google Tasks
whenever there is a new file added to Google
Drive.
The source files contains polygons and the
tasks need to indicate the area of each
polygon.
FME will calculate the area.
Zapier and FME Server Webhooks
Webhook 1: New file in Google Drive - Zapier >
message is sent to FME Server
Webhook 2: FME Server downloads and
processes the file > message is sent to Zapier
How to Develop for Data Transformation with FME Server
How to Develop for Data Transformation with FME Server
How to Develop for Data Transformation with FME Server
How to Develop for Data Transformation with FME Server

How to Develop for Data Transformation with FME Server

Editor's Notes

  • #28 Keep this brief! Around 3-4 minutes.