Microsoft Flow the Concept - Industrial Project Summary

 

Introduction

Microsoft Flow is a newly developed software service by Microsoft. It acts as a platform that enables automated workflows to be setup across different services and applications. Flow helps users automate essential but repetitive tasks so that they can utilise their time more efficiently.

Earlier this year I set a project to a number of Imperial Engineering students, the primary requirement of this project was to explore the Flow platform and its capabilities. A team of EEE students agreed to meet this requirement by focusing on enhancing users’ online shopping experience through the creation of new workflows on Flow.​ The team has worked hard to provide users with a streamlined and more convenient online shopping experience through the integration of many services like cloud storage, image recognition, text analysis and social media. This report contains a detailed illustration of the initial research and brainstorming, design development, testing and considerations, as well as suggested future work for this project.

Project Organisation

After the initial research and brainstorming process, tasks are delegated to each member with some focus on technical aspects such as research on API (Application Programming Interface) , coding and implementation of workflows on Flow while others focus on non-technical aspects such as team management, problem definition, market research, competitor analysis, deliverables, and documentation. Members have a mix of technical and non-technical responsibilities, a detailed assignment of responsibilities for each team member can be seen  below.

Member

Main Responsibilities

Jie Wu ● Communication with Client and Supervisors● Coding + Flow Implementation● Product Demonstration● Writer - Main Report & Summary Report
Minghe Wen ● Coding + Flow Implementation● Brainstorming● Presentation Slides● Writer - Blog for Microsoft● Writer - Summary Report
Virgram Mohan ● Image Recognition Service Research and Selection● CloudSight API Technical Research● Presenter - Presentation and Demonstration● Writer - Main Report
Bicheng Huang ● Brainstorming● Outline technical problem, design specifications and client requirements● Facebook API Technical Research● Writer - Main Report
Mengyang Le ● Brainstorming● Developing Brainstormed Ideas● Criteria and Idea Selection● Facebook API Technical Research● Writer - Main Report
Yumeng Sun ● Brainstorming● Team Management and Organisation + Taking Minutes (See Appendix[A])● Product Operation and Examples● Structure Outline - Report and Presentation● Writer - Main Report & Summary Report
Mubarak Alimi ● Brainstorming● Market Research and Competitor Analysis● Technical Documentation● Presenter - Presentation and Demonstration● Writer - Main Report & Summary Report
Ivan Savelev ● Brainstorming● Developing Brainstormed Ideas● Presenter - Presentation and Demonstration● Writer - Main Report

The team worked with a detailed timeline that can be seen in. The following Gantt Chart. Tasks were frequently modified and added as the team progressed. The team had a flexible and organised schedule with each member completing corresponding tasks either on time or beforehand.

image

Here is a quick summary of the project and its outcomes by the team leader Jie Wu and Minghe Wen.

The Internet, since the very first day, has never been so packed with applications. Emails, messages, pictures, videos … nowadays, there are so much information online that we can create, view, utilise or share. But at the meantime, as most of us have experienced, we have to keep jumping from one app to another all the time in order to complete just one single task. Things get even worse if the task is repetitive which means we have to do it over and over again. Those unconnected web apps have been making us flustered and anxious. What if there is a way to link up all the applications so that the dull and repetitive tasks can be completed automatically on their own?

clip_image002

Figure 1 – connect web apps

There we have Microsoft Flow, a platform to connect the web apps and create automated workflows (or Flow templates) to help you “work less and do more”. Our mission of the project is to use the Flow platform to create automated workflows to enhance the online shopping experiences for the users.

The two Designs

clip_image004

Figure 2 – workflow design 1

clip_image006

Figure 3 – workflow design 2

After brainstorming with the team members, we came up with the two workflow designs.

The first design allows the user to upload a photo. The photo will then get analysed and keywords of the items in it will be extracted. The keywords then will be searched on eBay and Flow will send the searching results back to the user by email.

The second design monitors the user’s Facebook events. When the user accepts an invitation for an event, the description of the event will be analysed and extract the keywords. Then the keywords will be searched on Etsy (another online shopping store) and then Flow will return the searching results back to the user by email.

The Techniques

As some of you may have already known, creating workflows on Flow is incredibly easy. The real technical part is to implement the third-party services onto Flow as custom connectors so that you can utilise their functionalities and build the workflows you desire.

The third-party services we used for the designs are Dropbox, CloudSight, eBay, Facebook and Etsy. These services are either not integrated on Flow yet or the functionalities of the existing ones are limited and hence do not meet our requirements. So we need to implement them on our own. Implementing third-party services onto Flow is assumed to be simple if nothing strange happen. Simply look up the API documentation of the web service and write an OpenAPI file and upload it to Flow, and your job is done.

clip_image008 clip_image010

Figure 4 – Logos of OpenAPI and Azure Functions

But weird things do happen, since there always are compatibility problems between apps. We decided to use Azure Functions Service to solve the problems. Azure Functions is another powerful tool hosted on Azure. It provides serverless computing service which means you can write functions directly on Azure and get them run whenever you call them (using the functions’ addresses) from anywhere else.

We wrote some Python code on Azure Functions and use the functions as intermediary between the Flow platform and the apps. The functions would process the data sent from Flow and the apps and when finished, send HTTP requests to deliver the processed data to the destination. In this way, the compatibility problems are handled easily.

clip_image012

Figure 5 – implementation of the third-party web services

Final Thoughts

We found the project was both challenging and fun and we really appreciate the chance for us to work with Microsoft. It offered us an invaluable hands-on experience of web development and we have been pushed to learn new skills along the way. It was a great project!