monitoring flights and sending sms with taskmatics ... flights and sending sms with taskmatics...

11
Monitoring Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development efforts, reduce complexity of your code, and orchestrate Internet services easily. A white paper produced by Blue Syntax Consulting (http://www.enzounified.com) and Taskmatics (http://www.taskmatics.com). Published on April 10, 2015

Upload: hoangmien

Post on 21-Mar-2018

218 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

Monitoring Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified

This while paper shows you how to accelerate your

development efforts, reduce complexity of your code, and

orchestrate Internet services easily.

A white paper produced by Blue Syntax Consulting (http://www.enzounified.com) and Taskmatics

(http://www.taskmatics.com).

Published on April 10, 2015

Page 2: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

Introduction 1

Table of Contents Introduction .................................................................................................................................................. 2

Scenario......................................................................................................................................................... 2

How To Call FlightAware and Twilio with Enzo Unified ................................................................................ 3

How To Schedule The Call With Taskmatics Scheduler ................................................................................ 5

Conclusion ..................................................................................................................................................... 9

About Blue Syntax Consulting ..................................................................................................................... 10

About Taskmatics ........................................................................................................................................ 10

Page 3: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

Introduction 2

Introduction Software developers need to build solutions quickly so that businesses remain competitive and agile.

This while paper shows you how Taskmatics Scheduler (http://www.taskmatics.com) and Enzo Unified

(http://www.enzounified.com) can help developers build and deploy solutions very quickly by removing

two significant pain points: the learning curve of new APIs, and orchestrating Internet services.

Scenario Let’s build a solution that checks incoming flights in Miami, Florida, and send a text message using SMS

when new flights arrive to one or more phone numbers. To track flight arrivals, we will be using

FlightAware’s (http://www.flightaware.com) service which provides a REST API to retrieve flight

information. To send SMS messages, we will be using Twilio’s (http://www.twilio.com) service which

provides an API as well for sending messages.

To remove the learning from these APIs, we used Enzo Unified, a Backend as a Service (BaaS) platform

that enables the consumption of services through native SQL statements. Enzo Unified abstracts

communication and simplifies development of a large number of internal systems and Internet services.

In this example, Enzo Unified is hosted on the Microsoft Azure platform for scalability and operational

efficiency.

To orchestrate and schedule the solution, we used the Taskmatics Scheduler platform. Taskmatics calls

into your custom code written in .NET on a schedule that you specify, which is configured to connect to

Enzo Unified in the cloud. The call to Enzo Unified is made using ADO.NET by sending native SQL

statements to pull information from FlightAware, and send an SMS message through Twilio. At a high

level, the solution looks like this:

Figure 1 – High Level call sequence between Taskmatics Scheduler and Enzo Unified

Page 4: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

How To Call FlightAware and Twilio with Enzo Unified 3

How To Call FlightAware and Twilio with Enzo Unified Developers can call Enzo Unified using a REST interface, or a native SQL interface. In this example, the

developer uses the SQL interface, leveraging ADO.NET. The following code connects to Enzo Unified as

a database endpoint using the SqlConnection class, and sends a command to fetch flights from a specific

airport code using an SqlCommand object. Fetching FlightAware data is as simple as calling the

“Arrived” stored procedure against the “flightaware” database schema.

var results = new List<ArrivedFlightInfo>(); // Connect to Enzo Unified using SqlConnection using (var connection = new SqlConnection(parameters.EnzoConnectionString)) // Prepare call to FlightAware’s Arrived procedure using (var command = new SqlCommand("flightaware.arrived", connection)) { connection.Open(); command.CommandType = System.Data.CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("airport", airportCode)); command.Parameters.Add(new SqlParameter("count", 10)); command.Parameters.Add(new SqlParameter("type", "airline")); // Call FlightAware’s Arrived procedure using (var reader = command.ExecuteReader()) while (reader.Read()) results.Add(new ArrivedFlightInfo { Ident = (String)reader["ident"], AircraftType = (String)reader["aircrafttype"], OriginICAO = (String)reader["origin"], OriginName = (String)reader["originName"], DestinationName = (String)reader["destinationName"], DestinationCity = (String)reader["destinationCity"] // ... additional code removed for clarity... }); }

Calling Twilio is just as easy. A simple ADO.NET call to the SendSMS stored procedure in the “Twilio”

schema is all that’s needed (the code is simplified to show the relevant part of the call).

// Establish a connection Enzo Unified using (var connection = new SqlConnection(parameters.EnzoConnectionString)) using (var command = new SqlCommand("twilio.sendsms", connection)) { connection.Open(); command.CommandType = System.Data.CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("phones", phoneNumbers)); command.Parameters.Add(new SqlParameter("message", smsMessage)); // Call Twilio’s SendSMS method command.ExecuteReader(); }

Page 5: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

How To Call FlightAware and Twilio with Enzo Unified 4

If you inspect the above code carefully, you will notice that it does not reference the APIs of FlightAware

or Twilio. Indeed, calling both FlightAware and Twilio was done using ADO.NET calls against Enzo

Unified; because Enzo Unified behaves like a native database server (without the need to install special

ODBC drivers), authenticating, making the actual API calls, and interpreting the REST results was entirely

abstracted away from the developer, and replaced by an SQL interface, which dramatically increases

developer productivity. Database developers can call Enzo Unified directly to test FlightAware and

Twilio using SQL Server Management Studio (SSMS). The following picture shows the results of calling

Enzo Unified from SSMS to retrieve arrived flights from FlightAware.

Figure 2 – Calling the FlightAware service using simple SQL syntax in SQL Server Management Studio

Sending a SMS text message using Twilio is just as simple using SSMS:

Figure 3 – Calling the Twilio service using simple SQL syntax in SQL Server Management Studio

Page 6: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

How To Schedule The Call With Taskmatics Scheduler 5

How To Schedule The Call With Taskmatics Scheduler In order to run and schedule this code, we are using Taskmatics Scheduler, which provides an enterprise

grade scheduling and monitoring platform. When a class written in .NET inherits from the

Taskmatics.Scheduler.Core.TaskBase class, it becomes automatically available as a custom task inside

the Taskmatics Scheduler user interface. This means that a .NET library can easily be scheduled without

writing additional code. Furthermore, marking the custom class with the InputParameters attribute

provides a simple way to specify input parameters (such as the airport code to monitor, and the phone

numbers to call) for your task through the Taskmatics user interface.

The following simplified code shows how a custom task class is created so that it can be hosted inside

the Taskmatics Scheduler platform. Calling Context.Logger.Log gives developers the ability to log

information directly to Taskmatics Scheduler for troubleshooting purposes.

namespace Taskmatics.EnzoUnified.FlightTracker { // Mark this class so it is visible in the Taskmatics interface [InputParameters(typeof(FlightNotificationParameters))] public class FlightNotificationTask : TaskBase { // Override the Execute method called by Taskmatics on a schedule protected override void Execute() { // Retrieve parameters as specified inside Taskmatics var parameters = (FlightNotificationParameters)Context.Parameters; // Invoke method that calls FlightAware through Enzo Unified var arrivedFlights = GetArrivedFlights(parameters); // do more work here… such as identify new arrivals var newFlights = FlightCache.FilterNewArrivals(arrivedFlights); // Do we have new arrivals since last call? if (newFlights.Count > 0) { // Invoke method that calls Twilio through Enzo Unified var results = SendArrivedFlightsViaSMS(newFlights, parameters); // Update cache so these flights won’t be sent through SMS again FlightCache.SaveFlightsToCache(newFlights); } else Context.Logger.Log("SMS phase skipped due to no new arrivals."); Context.Logger.Log("Job execution complete."); }

}

}

Page 7: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

How To Schedule The Call With Taskmatics Scheduler 6

Installing the task into the Taskmatics Scheduler platform is very straightforward. Log into the user

interface and create a definition for the flight tracker task. This step allows you to import your library

into the system to serve as a template for the new scheduled task that we will create next.

Figure 4 - Import your custom task as a definition

Once you have created your definition, go to the “Scheduled Tasks” section of the user interface, and

create the task by selecting the definition that you just created from the Task dropdown. This is also

where you will schedule the time and frequency that the task will run as well as configure the input

parameters for the task.

Page 8: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

How To Schedule The Call With Taskmatics Scheduler 7

Figure 5 - Schedule your custom task to run on the days and times you specify.

Page 9: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

How To Schedule The Call With Taskmatics Scheduler 8

Figure 6 - Configure the parameters for the scheduled task.

Finally, from the Dashboard screen, you can run your task manually and watch the output live, or look at

a past execution of the task to see the outcome and logs from that run. In the image below, you can see

the execution of the Flight Tracking task where we monitored recent arrivals into the Miami

International Airport (KMIA).

Page 10: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

Conclusion 9

Figure 7 - Review and analyze previous task executions or watch your tasks live as they run.

Conclusion This blog post shows how developers can easily build integrated solutions without having to learn

complex APIs using simple SQL statements, thanks to Enzo Unified’s BaaS platform. In addition,

developers can easily orchestrate and schedule their libraries using the Taskmatics Scheduler platform.

Combining the strengths of Enzo Unified and Taskmatics, organizations can reap the following benefits:

- Rapid application development by removing the learning curve associated with APIs

- Reduced testing and simple deployment by leveraging already tested services

- Service orchestration spanning Internet services and on-premises systems

- Enterprise grade scheduling and monitoring

Page 11: Monitoring Flights and Sending SMS with Taskmatics ... Flights and Sending SMS with Taskmatics Scheduler and Enzo Unified This while paper shows you how to accelerate your development

About Blue Syntax Consulting 10

You can download the full sample project on GitHub here: https://github.com/taskmatics-

45/EnzoUnified-FlightTracking

About Blue Syntax Consulting Our mission is to make your business successful through the technologies we build, create innovative

solutions that are relevant to the technical community, and help your company adopt cloud computing

where it makes sense. We are now making APIs irrelevant with Enzo® Unified. For more information

about Enzo Unified and how developers can access services easily using SQL statements or a simple

REST interface, visit http://www.enzounified.com or contact Blue Syntax Consulting at

[email protected].

About Taskmatics Taskmatics was founded by a group of developers looking to improve the productivity of their peers.

Their flagship application, Taskmatics Scheduler, aims to boost developer productivity and reduce the

effort involved in creating consistent and scalable tasks while providing a centralized user interface to

manage all aspects of your task automation. For more information and a free 90-day trial, visit

http://taskmatics.com or email us at [email protected].