Services-oriented
architectures aggregate a collection of web services in order to
provide more sophisticated web services and to support web
applications. The figure on the right shows a simple instance of such
an architecture, where two sources support a computer shopping portal,
such as CNET.com. The scenario assumes that Dell and Cisco export a
set of web services on their computer and router catalogs,
respectively. Since the user wants to be able to issue (distributed)
queries, we associate schemas with Dell and Cisco and model the web
services as parameterized views over those schemas. Part of their
respective schema and the signatures of four Web services they export
are listed below.
The Dell schema describes computers that are characterized by
their cid, CPU model (e.g., P4), RAM installed and price, and have a
set of network cards installed. Each network card has the cid of the
computer it is installed in, accommodates a specific data rate (e.g.,
54Mbps), implements one or more standards (e.g. IEEE 802.11g) and
communicates with a computer via a particular interface (e.g., USB).
The Web service ComByCpu returns the computers of a given cpu.
The service ComNetByCpuRate provides computers of a given cpu
that have installed network cards of a given data rate.
The Cisco source describes routers that also accommodate a
specific data rate, implement standards, have their own price and are
of a particular type. The rouByTypeW and rouByTypeWL
services return routers that are of either wired or wireless type
respectively.
The user builds the computer shopping portal by formulating
queries against the source schemas, and deploys a mediator in order to
execute queries against the exported web services during run-time. The
mediator can answer the query ``return all P4 computers with a 54Mbps
network card and the compatible wireless routers" by combining the
answers of web service calls CompNetByCpuRate and rouByTypeWL.
However, it cannot answer the query ``return all computers with 1GB of
ram".
Dell Schema & Web Services
Computers(cid, cpu, ram, price)
NetCards(cid, rate, standard, interface)
V1: ComByCpu(cpu) -> (Computer)*
SELECT DISTINCT Com1.*
FROM Computers Com1
WHERE Com1.cpu=cpu
V2: ComNetByCpuRate(cpu, rate) -> (Computer,
NetCard)*
SELECT DISTINCT Com1.*, Net1.*
FROM Computers Com1, Network Net1
WHERE Com1.cid=Net1.cid AND Com1.cpu=cpu
AND Net1.rate=rate
Cisco Schema & Web Services
Routers(rate, standard, price, type)
V3: rouByTypeW() -> (Router)*
SELECT DISTINCT Rou1.*
FROM Routers Rou1
WHERE Rou1.type='Wired'
V4: rouByTypeWL() -> (Routers)*
SELECT DISTINCT Rou1.*
FROM Routers Rou1
WHERE Rou1.type='Wireless'
Assume the user wants to formulate a query that returns
computers that meet various conditions, including conditions about
networked cards and routers - as long as those conditions are
supported. The following snapshots are taken from of the user's
interaction session with CLIDE, where CLIDE's color scheme suggests,
at each interaction step, which actions lead to a feasible query. The
first two snapshots explain the intuition behind the coloring scheme,
while the last four present complex cases where the interface's color
scheme informs the user about non-obvious series of actions leading to
feasible queries.
In Snapshot 1, the user has dragged the Computers
table name from the table list and dropped it into the main pane,
subsequently performing two projection actions by checking the
corresponding projection boxes of ram and price .
These actions result in the Com1 table box, where the cpu
selection box is yellow. The yellow signals that the
corresponding selection action is required in order to
formulate any feasible query that extends the current one. The rest of
the selection boxes and projection boxes are white suggesting
that these actions are optional, i.e., feasible queries can be
formulated with or without these actions being performed. The
feasibility flag on the upper right corner indicates that the
currently formulated query is infeasible.
The user performs the yellow selection action on cpu
by typing the constant `P4' in the selection box, which leads to
Snapshot 2.
The flag now indicates that the current query is
feasible. This query is feasible since the mediator can run view V1
with the parameter instantiated to 'P4' and then project out the cid
and cpu columns.
At this point, the user either terminates the
interaction session and incorporates the formulated query in her
application or continues to extend the query. To accommodate the
latter case, the front-end suggests that at least one of the Computers
Com2 , NetCards Net1 or Routers Rou1 table
actions has to be performed by coloring the corresponding names in the
table list blue. Intuitively, the blue table names indicate
that in the FROM clause of feasible queries that extend
the current one there has to be at least one of the NetCards
Net1 , Routers Rou1 , or a second Computers
Com2 table atom. However, a given blue atom, say NetCards
Net1 , does not appear in all feasible queries that extend the current
query. If it did appear in all, then it would be yellow (i.e.,
required).
In Snapshot 3, the user has performed the NetCards
Net1 table action. The front-end suggests either a join action on the
cid of the two table boxes (it leads to the formulation
of view V2) by drawing a join line connecting the two column names and
coloring it blue. The join line is not colored yellow, because the
user has another option. She can perform the blue Computers
Com2 table action, which will lead toward a feasible query that joins
Net1 with Com2 and takes a Cartesian product
with Com1 .
In Snapshot 4, the user has performed the suggested
join action and Computers in the table list is now
optional. If she performs the blue rate selection action
next, then she will formulate a feasible query, since the mediator can
run view V2 with the parameters cpu and rate
instantiated to the constants provided in the selection boxes.
Alternatively, she may perform the blue Routers Rou1
table action and join the rate columns of Net1
and Rou1 , i.e., find network cards whose rates are
compatible with the routers. Taking the latter option leads to
Snapshot 5.
The front-end suggests the join action on the rate
columns of Net1 and Rou1 table boxes. The Net1.rate
selection box remains blue since the user still has the option to
provide a constant and formulate, for example, the query that returns
the Cartesian product of Rou1 and view V2. All table
names in the table list are white, because no more table actions are
needed at this point in order to formulate a feasible query. The Rou1.type
column needs to be bounded and the front-end presents to the user a
drop-down list that explains which constants may be chosen. She can
either choose 'Wired' or 'Wireless'. The symbol * denotes
any other constant and is colored red to indicate
that no feasible query can be formulated if she chooses this option.
Note that the options of a drop-down list can have different colors.
If there were only one constant that she could choose, then this
option would be yellow. In the special case where any constant can be
chosen, then no drop-down list is shown, as in the case of the cpu
selection box in Snapshot 1.
In the next steps, the user performs the suggested
join action, chooses the 'Wireless' constant and checks several
projection boxes. Snapshot 6 shows the new query, which is feasible.
The mediator plan that implements this query first accesses view V4,
then for each rate returned accesses view V2 with its
parameters instantiated to `P4' and the given rate , and
finally performs the necessary projections. Note that all table names
in the table list are now blue, because any of those table actions
lead to a feasible query.
|