expressFlow

Service Mashup Data Flow Analysis


expressFlow implements an abstract Service Mashup model that enables the coequal integration of RESTful Web services (described in WADL ) and WSDL based Web services. To ease the design of Service Mashups, expressFlow hides the invocation details of the different Web services from the designer. As this is a very handy simplification from a business process design perspecitve, this is not always helpful from a technical perspective.

 

Service integrations inject Assignments in the Service mashup model. Figure 1 illustrates the integration of the Yahoo Traffic REST API. The Service is integrated into the Service Mashup by the use of the Service Wizard. This Service Mashup is also shared to the community as "Yahoo Traffic Example" so feel free to add it to your processes and try the concepts on your own!

Yahoo Traffic API Sample
Figure 1: Yahoo Traffic REST Service exemplified

 

From an abstract business process design perspective, this detail of Service integration might be adequate. The workflow designer ascertains a sequential invocation of the Yahoo Traffic Service and might be happy with that. But the Service returns useful data! So let's see, how this data can be used in the Service Mashup.

 

In this case, the Yahoo Traffic Service returns traffic alert information from a given location. Let's take a closer look at the Service Integration. Figure 2 illustrates the generated XML source of the Service Integration.

Yahoo Traffic API Sample 'Under the hood'
Figure 2: Yahoo Traffic REST Service integration XML source [Click to enlarge]

 

The green box refers to the introduced Variables. Ok, that's easy: The invoke in the blue box accepts Variable 1 as input and returns Variable 2 as output. But what is happening in the orange box indicating an Assignment?

 

Well, first of all: The expressFlow Designer is as verbose as necessary. If you take a closer look at the Invoke you will find a Resource element. This indicates that the Invoke integrates a RESTful Web service. The uri attribute refers to the uri describing the call to the RESTful Web service. Encoded in the uri are different parameters. And the Assignment injected with the Invoke just copies these parameters to local Service Mashup Variables. Figure 3 illustrates the details of a sample Yahoo REST Service uri.

Yahoo REST Service URI example
Figure 3: Yahoo REST Service URI example [Click to enlarge]

 

To be more precise: The Assignment copies the parameter values of the uri to Variable parts. The first Copy (refered as "Copy1") copies YdnDemo to $Variable1.appid. This introduces a new part of Variable1 named appid. The whole Assignment introduces four new parts: appid, street, city and state. All these parameters are refered in the RESTful Web service call uri.

 

Ok, so far we know the following facts: expressFlow integrates different Web service types (currently RESTful Web services and WSDL based Web services) and injects Assignments to copy the Service invocation details to the Service Mashup model. How about the Data Flow anaylsis?

 

 For that we need a more complex example to illustrate the data mappings and the different Web service integrations. Figure 4 depicts the example. This example is shared to the community as "Data Mapper Example". Feel free to add this process to your processes and apply the Data Analysis features on your own!

Service Mashup example integrating different Web services
Figure 4: Service Mashup example integrating different Web services
[Click to enlarge]

 

By selecting Tools > Process Analysis > Dataflow analysis you start the Service Mashup DataFlow Analysis. The analysis tool traverses the Service Mashup and tracks every Activity performing a Data operation. Figure 5 illustrates a WSDL based Web service invocation. Variable1 consists of four parts which are tracked. Click on the image to see the result of the whole Data Flow analysis.

Service Mashup Data Flow Analysis result
Figure 5: Service Mashup Data Flow Analysis result
[Click to enlarge]

 

The Data Flow Analysis collects for every Variable defined in the Service Mashup the usages in other Activities. This assembles for every Variable a DU (Definition-Use) chain and enables the Service Mashup designer to apply a Live variable analysis. Beside the data information, the creator of the activities is tracked:

The above example Service Mashup is collaboratively modeled by the users demo (role: Creator) and martin1 (role: Business Administrator). The Activity localCopy4 was added by the user martin1 and uses a Variable originally injected by user demo. This is illustrated in the DU chain of Variable processVar3. If the user demo does not have the same access rights as user martin1, this might rise a data access violation.

 

With this new feature you can analyze the data flow in your Service Mashup and track which variables are used by which Web services. We are working on more functionalities to refine the Data Flow Analysis capabilities for Service Mashups.

 

Enjoy analyzing your Service Mashup Data Flows!

 

The following video summarizes this tutorial:

Video 1: Data Flow Analysis applied
< Prev

About | Disclaimer | Contact Us | expressFlow 2010