• No results found

SMART Supporting the Design and Execution of Usercentric Service-based Applications

N/A
N/A
Protected

Academic year: 2021

Share "SMART Supporting the Design and Execution of Usercentric Service-based Applications"

Copied!
20
0
0

Loading.... (view fulltext now)

Full text

(1)

SMART

Supporting the Design and Execution of

User-centric Service-based Applications

Piergiorgio Bertoli, Raman Kazhamiakin, Michele Nori, Marco Pistore

SAYservice s.r.l., Trento, Italy

(2)

SMART Elements

Service Wrapping

Goal: allow for integration and mashup of heterogeneous services and sources (e.g., Web pages)

Contributions:

• XS* language for information extraction from non-structured sources

• DFlow language for data aggregation, filtering, and transformation

• Service execution, validation, and monitoring container

User-centric service modeling

Goal: model services and application concepts in user-centric way using intuitive and unambiguous

concepts – user assets (time, location, social relations).

Contributions:

• Domain Object specification language to represent the services, their relations, and evolution in a user-centric way

• Predefined asset-specific service models for simple and intuitive user interaction

Metaphor-based user interaction

Goal: make the services available to the user through the asset-based interaction mechanisms –

interaction metaphors

Contributions:

• Client-server APIs for service representation, search, navigation in predefined metaphors (e.g., calendar or map)

• Implementation for Android OS and HTML/Javascript

Context awareness

Goal: make the services available when it is suitable for the user – in the user context

Contributions:

• Infrastructure supporting context extraction, monitoring, and processing rules

(3)

Demo application

Personal assistant application (Smartphone, Android OS)

Various types of user activities

Cultural events (e.g., concerts, shows) and services in the Trentino region of Italy

User-defined activities and tasks (ToDos and appointments)

Metaphor-based information representation

• Map, Calendar

• Distribution and representation of social dimension (on top of Facebook social network)

Integration of relevant associated services

Transportation means

Booking

Continuous service and context monitoring

To detect important service changes (e.g., transportation problem, concert cancelation)

To proactively offer suitable services (points of user interest nearby, recommendations from

social network)

Examples of involved external services

Cultural events: PrimiAllaPrima – web page with Trentino events (Web page,

www.primiallaprima.it)

Points of interests: categorized Foursquare venues (Web service, foursquare,com), drugstores

(Web page, www.farmacieaperte.it)

(4)

SMART Platform

Time Location Social Calendar Map Agenda Wallet

(5)

Service wrapper Service Wrapper Container

Standard services Databases Web pages EDO Legacy systems

- Heterogeneous - Fragmented - Closed - Passive - Unreliable/uncontrolled SMART Services - Uniform - Aggregated - Open - Active

- Reliable and robust

Service data mashups DFlow Data extraction XS* Connectors/ plugins CACHING CHANGE DETECTION VALIDATION EVENT MANAGEMENT Service calls notifications - Life-cycle management - Re-configuration - QA policies

Service Wrapping

(6)

Service Wrapping:

Information extraction with XS*

Goal:

extract information from non-/semi-structured sources (e.g., HTML)

Challenge:

overcome limits of existing XML validation/transformation technologies

• XSD: limited syntactic validation

• XSLT: loose data transformation

• Relax NG and others: expressive validation but inefficient

XS*:

Markup Language for

• Syntactic validation: hierarchical “regular expressions” • Semantic validation: data constraints

• Information extraction: markup, XPath, data processing

(7)

Service Wrapping:

Information extraction with XS*

<xss:template name="dettagliotreno">

<html xss:anyAttrs="true">

<head xss:anyContent="true" />

<body>

<h1 xss:anyContent="true" />

<div class="bloccorisultato“ xss:label="element">

<strong>

<xss:structured-text><xss:text pattern="Partenza: " />

<xss:text pattern="(\D)*" label="partenza"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraPartenza" />

</xss:structured-text><br /> </strong>

<xss:anyText label="numero" /><br /> <xss:repeat min="0" max="unbounded">

<xss:anyText />

<xss:repeat min="0" max="unbounded"><br /></xss:repeat> </xss:repeat>

<strong>

<xss:structured-text>

<xss:text pattern="Arrivo: " />

<xss:text pattern="(\D)*" label="arrivo"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraArrivo" />

</xss:structured-text> <br /> </strong> </div> </body> </html> </xss:template>

(8)

Service Wrapping:

Information extraction with XS*

<xss:template name="dettagliotreno">

<html xss:anyAttrs="true">

<head xss:anyContent="true" />

<body>

<h1 xss:anyContent="true" />

<div class="bloccorisultato“ xss:label="element">

<strong>

<xss:structured-text><xss:text pattern="Partenza: " />

<xss:text pattern="(\D)*" label="partenza"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraPartenza" />

</xss:structured-text><br /> </strong>

<xss:anyText label="numero" /><br /> <xss:repeat min="0" max="unbounded">

<xss:anyText />

<xss:repeat min="0" max="unbounded"><br /></xss:repeat> </xss:repeat>

<strong>

<xss:structured-text>

<xss:text pattern="Arrivo: " />

<xss:text pattern="(\D)*" label="arrivo"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraArrivo" />

</xss:structured-text> <br /> </strong> </div> </body> </html> </xss:template>

Structured pattern

(9)

Service Wrapping:

Information extraction with XS*

<xss:template name="dettagliotreno">

<html xss:anyAttrs="true">

<head xss:anyContent="true" />

<body>

<h1 xss:anyContent="true" />

<div class="bloccorisultato“ xss:label="element">

<strong>

<xss:structured-text><xss:text pattern="Partenza: " />

<xss:text pattern="(\D)*" label="partenza"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraPartenza" />

</xss:structured-text><br /> </strong>

<xss:anyText label="numero" /><br /> <xss:repeat min="0" max="unbounded">

<xss:anyText />

<xss:repeat min="0" max="unbounded"><br /></xss:repeat> </xss:repeat>

<strong>

<xss:structured-text>

<xss:text pattern="Arrivo: " />

<xss:text pattern="(\D)*" label="arrivo"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraArrivo" />

</xss:structured-text> <br /> </strong> </div> </body> </html> </xss:template>

Complex text

pattern with

extraction

(10)

Service Wrapping:

Information extraction with XS*

<xss:template name="dettagliotreno">

<html xss:anyAttrs="true">

<head xss:anyContent="true" />

<body>

<h1 xss:anyContent="true" />

<div class="bloccorisultato“ xss:label="element">

<strong>

<xss:structured-text><xss:text pattern="Partenza: " />

<xss:text pattern="(\D)*" label="partenza"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraPartenza" />

</xss:structured-text><br /> </strong>

<xss:anyText label="numero" /><br /> <xss:repeat min="0" max="unbounded">

<xss:anyText />

<xss:repeat min="0" max="unbounded"><br /></xss:repeat> </xss:repeat>

<strong>

<xss:structured-text>

<xss:text pattern="Arrivo: " />

<xss:text pattern="(\D)*" label="arrivo"/>

<xss:text pattern="(\d){2}:(\d){2}" label="oraArrivo" />

</xss:structured-text> <br /> </strong> </div> </body> </html> </xss:template>

Hierarchical data

extraction

{

element: {

partenza:…,

oraPartenza: …,

arrivo:…,

oraArrivo:…}

}

(11)

User-centric service modeling

Capture asset properties:

Capture asset properties:

For metaphor-based

representation

For contextualized

service offer

Modeling services with

Modeling services with

Domain Object specification:

Service relations

Service state

Service evolution

Hierarchical model: from

generic services to user

centric, personalized

services

Hierarchical model: from

generic services to

user-centric, personalized

services

(12)

Interface:

- Business operations

- Event ports

- Inheritance

Relations:

- Relevant services and objects

- Access to related information

- Event subscriptions

Information:

- Business data

- Evolution

invocations

events

invocations

events

Domain Objects

Implemented as:

Implemented as:

Service operation

Composed process

Object modification

Scripting language with:

Scripting language with:

Operation calls

Event publishing

State /relations update

(13)

Domain Object: specification

DomainType Event implements TimeObj, LocationObj{ var data : EventDataStruct;

inferred var startTime = data.from; inferred var endTime = data.to; ...

@Process(recommend-on-facebook.bpmn)

operation recommend(user: User); operation personalize(user: User); }

DomainType TimeObj {

var startTime : DateTime; var endTime : DateTime; ...

}

DomainType LocationObj { var where : Location; ... }

Asset

corresponding properties

-Asset-specific interface and

corresponding properties

-

Location

-

time interval

Asset

mapped onto the service

data

Asset-specific properties

mapped onto the service

data

(14)

Domain Object: specification

DomainType PersonalEvent implements TimeObj, LocationObj{

var user : User;

rel event : Event;

inferred var startTime = event.startTime; inferred var endTime = event.endTime;

...

port ticketsRunOut(remaining: int);

... @Process(transport-booking.bpmn) operation findTrain(); operation cancel(); operation book(); ... subscribe event!UPDATE() { if (event.data.tickets < 10) { publish ticketsRunOut(event.data.tickets); } } }

DomainType Event implements TimeObj, LocationObj{ var data : EventDataStruct;

inferred var startTime = data.from; inferred var endTime = data.to; ...

@Process(recommend-on-facebook.bpmn)

operation recommend(user: User); operation personalize(user: User); }

DomainType TimeObj {

var startTime : DateTime; var endTime : DateTime; ...

}

DomainType LocationObj { var where : Location; ...

}

dependency

Object dependency: personal

event relates to “generic”

event

Object dependency: personal

event relates to “generic”

event

Asset-specific properties

correspond to the “generic”

event properties

Asset-specific properties

correspond to the “generic”

(15)

Domain Object: specification

DomainType PersonalEvent implements TimeObj, LocationObj{

var user : User;

rel event : Event;

inferred var startTime = event.startTime; inferred var endTime = event.endTime;

...

port ticketsRunOut(remaining: int);

... @Process(transport-booking.bpmn) operation findTrain(); operation cancel(); operation book(); ... subscribe event!UPDATE() { if (event.data.tickets < 10) { publish ticketsRunOut(event.data.tickets); } } }

DomainType Event implements TimeObj, LocationObj{ var data : EventDataStruct;

inferred var startTime = data.from; inferred var endTime = data.to; ...

@Process(recommend-on-facebook.bpmn)

operation recommend(user: User); operation personalize(user: User); }

Monitor and signal to

the user that the tickets

are running out

Monitor and signal to

the user that the tickets

are running out

Find train operation

implemented as a

composite procedure

Find train operation

implemented as a

composite procedure

(16)

Scenario Implementation

Application elements:

-

Map

-

Calendar

-

Tools

-

Notification wall

Services on the map metaphor:

-

Cultural events

-

drugstores

Service filters:

-

By category

-

By service

Service on the map:

(17)

Scenario Implementation

Services on the

calendar metaphor:

-

Month view

(18)

Scenario Implementation

Generic Event details

and actions:

-

Personalize (add to

my events)

-

recommend

-

show trace on the

map

Personalized Event

details and actions:

-

cancel

-

book

-

find train

-

show trace on

the map

(19)

Scenario Implementation

Notification area

Information: appointment successfully created

Information: event successfully personalized

Information: Todo successfully created: to visit drugstore

Proactive service offer in the context: drugstore is nearby

(20)

Scenario Implementation

“Find train” procedure interaction for a personalized cultural

event:

-

Selecting a train from possible options proposed by the

external service (given the event date/time)

References

Related documents

The variables associated with the VOM process were obtained from an exhaustive analysis of the legal mediation reports, and were divided in three main groups:

The Local Enterprise Office Trading Online Voucher is a government grant scheme, designed to assist small businesses with up to 10 employees.. It offers financial assistance of up

Petitjean, “An adaptive harmonic balance method for predicting the nonlinear dynamic responses of mechanical systems - Application to bolted structures,” Journal of Sound and

The Welcome Center is a dark-gray shipping container standing in the big car park (Passage 69), right outside of the Circuit Zolder site.. Follow event signs for the

Para obtener información actual sobre los proveedores que pertenecen a la red del Plan (HMO) de Aetna Medicare en su área, puede llamar nuestro departamento de Servicios al

The preliminary conclusion from Table 3, under which it is assumed that both the control and “soft power” variables are strictly exogenous, is therefore that exchange rate

Second, once in a bad equilibrium, members of a monetary union find it very difficult to use automatic budget stabilizers: a recession leads to higher govern- ment budget deficits;

Greater attentiveness to data quality can improve political science research. This practical guide to data validation is a step in that direction. Rather than abstract advice