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!
 |
|
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.
 |
|
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.
|
|
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!
|
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.
|
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: