Smart integration of
image post-processing applications: EasyFlow

EasyFlow is a software framework meant to simplify the integration of image post-processing applications ("apps") into systems meant for the management and storage of images ("hosts"). If you have developed such an app and would like to learn how to integrate it within EasyFlow, this page is for you!

The EasyFlow framework provides simple and robust mechanisms allowing the host to:

  • require an app to execute a certain task,
  • send input data to the app, and
  • get the results back.

An app and its host do not need to run on the same physical systems, but can be distributed over the net. The communication between an app and its host occurs over tcp/ip through a well-defined protocol, and is handled completely by EasyFlow. You as an app developer do not need to care about it: as long as the host and the app are on physical systems connected through tcp/ip, it just works.

The framework defines:

  • a host-application interaction layer, that handles the interaction between the Host and the Application through web service, and it is hidden to third-party developers;
  • a integration layer, that is used for the rapid development of hosted applications and the integration in hosting systems, and it is the layer exposed to third-party developers.

If you are an app developer, the latter is what matters for you. Read on, and you will learn how to use it.

Step 1 - Check your Requirements

First of all, check your requirements. The EasyFlow framework will work in both Unix-like and Windows operating systems.

It has been developed and tested across different combinations of systems, compilers and hardware platforms including Windows, Linux and Mac OSX on Intel-compatible hardware.

It is known to work for the following combination of operating systems and compilers:

  • Windows (XP 32bit, 7/8 32/64bit) with Visual Studio 2008/2010 (both Express and Professional edition)
  • Linux (kernel 2.6.3x/3.x 32/64bit) with GCC 4.6.x
  • Mac OSX (10.6-8 32/64bit) with Apple LLVM 5.x

In order to build your own EasyFlow application you will also need to install CMake, a cross-platform and open-source family of software tools designed for managing the build, test and package process of software using a compiler-independent method. CMake can be downloaded at no cost from:

For Windows developers is also available a pre-generated Solution for Visual Studio 2010 (so you do not need to install and use CMake), containing the EasyFlow App Example. This Solution can be used as template for developing further Apps.

EasyFlow also depends on the Boost ( and Apache Thrift ( libraries. However, you do not need to download them, as the parts of Boost and Thrift that are required for developing an EasyFlow App are already included in the EasyFlow distribution.

Step 2 - Get the EasyFlow Application Developer package

For now the developer package is available for Windows only:

If you need the developer package for another platform, let us know by dropping us an email. The packages for the Linux and MacOSX environments will be available anytime soon.

To install the Application Developer package simply unzip the downloaded archive in a folder of your choice and follow the steps inside the tutorial to use CMake and generate the project.

Alternatively you can extract the content of the archive containing the VS2010 Solution and use it directly. If you follow this second option, you can skip the parts of the tutorial that explains how to install the framework (section 1.2) and how to use CMake to generate the project (section 2.1, 2.2 and 2.3.1).

Please keep in mind that the EasyFlow library needs the Visual C++ 2010 SP1 runtime, distributed together with Microsoft Visual Studio 2010. In case you are using a different version of Visual Studio and the runtime is not already present on your system you can download it from Microsoft's site:

Now you are ready to build an EasyFlow app.

Step 3 - Getting started

Building an App is fairly easy: you derive a class from EasyFlow BaseApp and reimplement some of its methods. The most important are:

  • execTask, the core method of the class where you should implement the processing task;
  • initTask, a method called before the execution of the task and used to initialise any structure that does not depend on the input;
  • releaseTask, a method called after the execution of the task to release any resource allocated during the task execution.

The locations of the inputs and outputs of the processing task are passed as arguments of the execTask method, and EasyFlow takes care of transferring the actual files between the physical systems.

Of course there is much more to that, and the best way to learn how to develop an EasyFlow App is to download the Application Developer Guide and follow the instructions inside.

The guide deals with the Application Developer package and it will explain in detail how to use it and how to develop an EasyFlow App. It will be your main tool in the earlier phase of approching the EasyFlow framework.

Step 4 - Beyond the basics

Further information on the EasyFlow framework can be gained from the API reference HTML documentation. Here you can find all the information about the classes and the methods you need to use during the coding of an App. You can read the API directly from the web.

Open the API reference

If you need help or further info, or if you'd like to download our API reference, please feel free to contact us.