<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>MarcoFlow: Modeling, Deploying, and Running Distributed User Interface Orchestrations</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Florian Daniel</string-name>
          <email>daniel@disi.unitn.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefano Soi</string-name>
          <email>soi@disi.unitn.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefano Tranquillini</string-name>
          <email>tranquillini@disi.unitn.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fabio Casati</string-name>
          <email>casati@disi.unitn.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Chang Heng</string-name>
          <email>changheng@huawei.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Li Yan</string-name>
          <email>liyanmr@huawei.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Huawei Technologies</institution>
          ,
          <addr-line>Shenzhen</addr-line>
          ,
          <country country="CN">P.R. China</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Trento</institution>
          ,
          <addr-line>Povo (TN)</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper introduces the idea of distributed orchestration of user interfaces (UIs), an application development approach that allows us to easily bring together UIs, web services, and people in a single orchestration logic, language, and tool. The tool is called MarcoFlow, and it covers three main phases of the software development lifecycle: design (by means of a dedicated, visual editor), deployment (by means of a set of code generators), and execution (by means of a distributed runtime environment for UI orchestrations). MarcoFlow targets the development of mashup-like applications that require (distributed) process support and, hence, targets researchers and practitioners interested in mashups, lightweight process design, web services, and innovative (and free) ways of providing process support.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        After workflow management (which supports the automation of business processes
and human tasks) and service orchestration (which focuses on web services at the
application layer), web mashups [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] feature a significant innovation: integration at
the UI level. Besides web services or data feeds, mashups indeed reuse pieces of UIs
(e.g., content extracted from web pages or JavaScript UI widgets) and integrate them
into new web pages or applications. While mashups therefore manifest the need for
reuse in UI development and for suitable UI component technologies, so far they
produced rather simple applications consisting of one web page and of little utility.
      </p>
      <p>
        This demo complements the concepts and solutions introduced in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], where we
argue that there is a huge spectrum of applications that demand for development
approaches that are similar to those of mashups but that go far beyond single page
applications and in fact support multiple pages, multiple actors, complex navigation
structures, and – more importantly – process-based application logic or navigation flows.
We call this type of applications distributed UI orchestrations, as (i) both
components and the application itself may be distributed over the Web, (ii) in addition to
traditional web services we also integrate novel JavaScript UI components, and (iii)
services and UIs are orchestrated in an integrated fashion.
      </p>
      <p>Challenges and contributions. Developing distributed UI orchestrations implies the
coordination of individual actors and the development of a distributed user interface
and service orchestration logic. Doing so requires (i) understanding how to
componentize UIs and compose them into web applications, (ii) defining a logic that is able
to orchestrate both UIs and web services, (iii) providing a language and tool for
specifying distributed UI compositions, and (iv) developing a runtime environment that is
able to execute distributed UI and service compositions.</p>
      <p>
        Innovativeness of the tool. As of today, there is no single development instrument
that answers these challenges and allows one to develop UI orchestrations using one
language and one environment only. BPEL [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] focuses on web services only.
BPEL4People [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] adds human tasks and actors as first-class concepts, but without
supporting the development of suitable UIs. Model-driven web design instruments,
such as WebRatio [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] or VisualWade [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], allow the development of advanced web
applications, without however facilitating reuse of UI components sourced from the
Web. Portals and portlets [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], instead, focus specifically on reuse, but they fail in
supporting service integration and process flows. Mashup tools [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] support the
integration of UIs and of services, but they typically do not support complex orchestration
patterns (if not hand-coded). In mashArt [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], we did some first steps into that
direction, but without considering multi-user and distributed UI support.
      </p>
      <p>Significance to the BPM field. With MarcoFlow, we go one step beyond
state-ofthe-art BPM and service composition and propose an original model, language and
running system for the composition of distributed UIs. The approach brings together
UIs, web services and people in a single orchestration logic and tool and supports the
development of mashup-like applications that require (distributed) process support, a
kind of application that so far was not supported by BPM practices and software.</p>
    </sec>
    <sec id="sec-2">
      <title>2 Distributed UI Orchestration</title>
      <p>
        The key idea to approach the coordination of (i) UI components inside web pages, (ii)
web services providing data or application logic, and (iii) individual pages (as well as
the people interacting with them) is to split the coordination problem into two layers:
intra-page UI synchronization and distributed UI synchronization and web service
orchestration. UIs are typically event-based (e.g., user clicks or key strokes), while
service invocations are coordinated via control flows. In this demo and in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], we
show how to describe UI components in terms of standard WSDL descriptors, how to
bind them to JavaScript, and how to extend the standard BPEL language in order to
support the two above composition layers. We call this extended language BPEL4UI.
      </p>
      <p>
        Figure 1 shows the simplified meta-model of BPEL4UI. Specifically, the figure
details all the new modeling constructs necessary to specify UI orchestrations
(grayshaded) and omits details of the standard BPEL language, which are reused as is by
BPEL4UI. In terms of standard BPEL [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], a UI orchestration is a process that is
composed of a set of associated activities (e.g., sequence, flow, if, assign, validate, or
similar), variables (to store intermediate processing results), message exchanges,
correlation sets (to correlate messages in conversations), and fault handlers. The
services or UI components integrated by a process are declared by means of so-called
      </p>
      <sec id="sec-2-1">
        <title>Activity</title>
      </sec>
      <sec id="sec-2-2">
        <title>ActivityContainer</title>
      </sec>
      <sec id="sec-2-3">
        <title>Catch</title>
        <p>faultHandlers</p>
      </sec>
      <sec id="sec-2-4">
        <title>Process</title>
      </sec>
      <sec id="sec-2-5">
        <title>MessageExchange</title>
      </sec>
      <sec id="sec-2-6">
        <title>CorrelationSet</title>
      </sec>
      <sec id="sec-2-7">
        <title>Variable</title>
        <sec id="sec-2-7-1">
          <title>Actor</title>
          <p>Name
1..1 accessibleTo
0..*</p>
        </sec>
        <sec id="sec-2-7-2">
          <title>Page</title>
          <p>Name
0..* Description
TemplateURL
UIEngineName
isStartPage</p>
        </sec>
      </sec>
      <sec id="sec-2-8">
        <title>PartnerLink</title>
      </sec>
      <sec id="sec-2-9">
        <title>PartnerLinkType</title>
        <p>1c..o1ntai1n.s.* NaPmla1e.c.1eHroelnddeerredIn
1..1</p>
        <sec id="sec-2-9-1">
          <title>UIComponent</title>
          <p>Name
0..1 describedBy
1..1</p>
        </sec>
        <sec id="sec-2-9-2">
          <title>UIType</title>
          <p>WSDL-UI</p>
          <p>has NaPmreoperty
1..1 0..* Value</p>
          <p>Type
partner links, while partner link types define the roles played by each of the services
or UI components in the conversation and the port types specifying the operations and
messages supported by each service or component.</p>
          <p>Modeling UI-specific aspects requires instead introducing a set of new constructs
that are not yet supported by BPEL. The constructs, illustrated in Figure 1, are: UI
type (the partner link type for UI components), page (the web pages over which we
distribute the UI of the application), place holder (the name of the place holders in
which we can render UI components), UI component (the partner link for UI
components), property (the constructor parameters of UI components), and actor (the human
actors we associate with web pages).</p>
          <p>
            It is important to note that although syntactically there is no difference between
web services and UI components (the new JavaScript binding introduced into WSDL
to map abstract operations to concrete JavaScript functions comes into play only at
runtime), it is important to distinguish between services and UI components as their
semantics and, hence, their usage in the model will be different. A detailed
description of the new constructs and their usage can be found in [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ].
          </p>
          <p>As for the layout of distributed UI orchestrations, defining web pages and
associating UI partner links with place holders requires implementing suitable HTML
templates that are able to host the UI components of the orchestration at runtime. For the
design of layout templates we rely on standard web design instruments. The only
requirement the templates must satisfy is that they provide place holders in form of
HTML DIV elements that can be indexed via standard HTML identifiers following a
predefined naming convention, i.e., &lt;div id=“marcoflow-left”&gt;… &lt;/div&gt;.</p>
          <p>The main methodological goals in implementing our UI orchestration approach
were (i) relying as much as possible on existing standards, (ii) providing the
developer with only few and simple new concepts, and (iii) implementing a runtime
architecture that associates each concern to the right level of abstraction and software tool
(e.g., UI synchronization is handled in the browser, while service orchestration is
delegated to the BPEL engine).</p>
          <p>Document flows
System/human communications</p>
          <p>Automatically generated elements</p>
        </sec>
      </sec>
      <sec id="sec-2-10">
        <title>Service</title>
      </sec>
      <sec id="sec-2-11">
        <title>WSDLs</title>
      </sec>
      <sec id="sec-2-12">
        <title>UI component</title>
      </sec>
      <sec id="sec-2-13">
        <title>WSDLs</title>
      </sec>
      <sec id="sec-2-14">
        <title>BPEL4UI editor</title>
      </sec>
      <sec id="sec-2-15">
        <title>UI partner link</title>
        <p>configurator</p>
      </sec>
      <sec id="sec-2-16">
        <title>Layout configurator</title>
      </sec>
      <sec id="sec-2-17">
        <title>Application</title>
        <p>developer</p>
      </sec>
      <sec id="sec-2-18">
        <title>BPEL4UI</title>
        <sec id="sec-2-18-1">
          <title>Design time</title>
        </sec>
      </sec>
      <sec id="sec-2-19">
        <title>HTML</title>
        <p>templates</p>
      </sec>
      <sec id="sec-2-20">
        <title>System configuration</title>
      </sec>
      <sec id="sec-2-21">
        <title>BPEL4UI Compiler</title>
      </sec>
      <sec id="sec-2-22">
        <title>Layout and UI logic generator</title>
      </sec>
      <sec id="sec-2-23">
        <title>Comm. services generator</title>
      </sec>
      <sec id="sec-2-24">
        <title>BPEL generator</title>
      </sec>
      <sec id="sec-2-25">
        <title>BPEL</title>
        <sec id="sec-2-25-1">
          <title>Deployment time</title>
          <p>B</p>
        </sec>
      </sec>
      <sec id="sec-2-26">
        <title>UI components C A</title>
        <p>JS via HTTP</p>
      </sec>
      <sec id="sec-2-27">
        <title>Users</title>
        <p>UUUIIeIenengngigninieneecclcileileinentnt(t(ww(weebebbbbrbroorwowwsseserer))r)
UI compAonent container B C</p>
      </sec>
      <sec id="sec-2-28">
        <title>UI event bus</title>
        <p>System components</p>
        <p>Notificaatitoionn
NNootitfiifcication</p>
        <p>handler
hahnadndlelersr
Evenntt</p>
        <p>EEvveent
fofrofowrrwawraadrreddreesrr
JSON via JSON via
HTTP HTTP</p>
      </sec>
      <sec id="sec-2-29">
        <title>UI engine server (web server)</title>
        <p>Layout and BPEL2UI UI2BPEL
UI logic communication communication</p>
        <p>UI
composition</p>
        <p>Evenntt
EEvveent
bpuprfrofoexxryy</p>
        <p>Evenntt
EEvveent
pprproroxoxyxyy</p>
      </sec>
      <sec id="sec-2-30">
        <title>BPEL engine</title>
        <p>XML via
SOAP
XML via
SOAP
XML via SOAP</p>
      </sec>
      <sec id="sec-2-31">
        <title>SOAP web services</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 The MarcoFlow Environment</title>
      <p>between the UI components in the client browser and the BPEL engine; (ii) a
standard BPEL specification containing the distributed UI synchronization and web
service orchestration logic; and (iii) a set of UI compositions (one for each page of the
application) containing the intra-page UI synchronizations. This task is achieved by
the BPEL4UI compiler, which also manages the deployment of the generated artifacts
in the respective runtime environments.</p>
      <p>The execution of a UI orchestration requires the setup and coordination of three
independent runtime environments: (i) the interaction with users and intra-page UI
synchronization is managed in the client browser by an event-based JavaScript
runtime framework; (ii) a so-called UI engine server runs the web services implementing
the communication channels; and (iii) a standard BPEL engine manages the
distributed UI synchronization and web service orchestration.</p>
      <p>The MarcoFlow system shown in Figure 2 is fully implemented and running. A
patent application for parts of the system has been filed.</p>
    </sec>
    <sec id="sec-4">
      <title>4 Demo scenario</title>
      <p>An example of how MarcoFlow can be used for the development of a distributed UI
orchestration is available at http://mashart.org/marcoflow/demo.htm. The demo in
form of a video illustrates in few minutes the main features of MarcoFlow in the
context of a simple home assistance management application. Particular emphasis is
given to the three development phases supported by the tool (design, deployment, and
runtime) and to the use of the final application by the different actors involved in the
distributed process logic.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>J.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Benatallah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Casati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Daniel</surname>
          </string-name>
          .
          <article-title>Understanding Mashup Development and its Differences with Traditional Integration</article-title>
          .
          <source>IEEE Internet Computing</source>
          , Vol.
          <volume>12</volume>
          , No. 5,
          <string-name>
            <surname>September</surname>
            <given-names>-October</given-names>
          </string-name>
          <year>2008</year>
          , pp.
          <fpage>44</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>F.</given-names>
            <surname>Daniel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Soi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tranquillini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Casati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Heng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Yan</surname>
          </string-name>
          . From People to
          <article-title>Services to UI: Distributed Orchestration of User Interfaces</article-title>
          .
          <source>BPM'10</source>
          ,
          <string-name>
            <surname>Hoboken</surname>
          </string-name>
          , NJ, USA.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. OASIS.
          <source>Web Services Business Process Execution Language Version</source>
          <volume>2</volume>
          .0,
          <string-name>
            <surname>April</surname>
          </string-name>
          <year>2007</year>
          . [Online]. http://docs.oasis-open.
          <source>org/wsbpel/2</source>
          .0/OS/wsbpel-v2.
          <fpage>0</fpage>
          -OS.html
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Active</given-names>
            <surname>Endpoints</surname>
          </string-name>
          <article-title>Inc., Adobe Systems Inc., BEA Systems Inc</article-title>
          ., International Business Machines Corporation, Oracle Inc.,
          <source>SAP AG</source>
          .
          <article-title>WS-BPEL Extension for People (BPEL4People), Version 1</article-title>
          .0. June 2007.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>R.</given-names>
            <surname>Acerbis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bongio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brambilla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Butti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fraternali</surname>
          </string-name>
          .
          <article-title>Web Applications Design and Development with WebML and WebRatio 5.0</article-title>
          . TOOLS'
          <volume>08</volume>
          , pp.
          <fpage>392</fpage>
          -
          <lpage>411</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>J.</given-names>
            <surname>Gómez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Parraga</surname>
          </string-name>
          .
          <article-title>Tool Support for Model-Driven Development of Web Applications</article-title>
          ,
          <source>WISE'05</source>
          , pp.
          <fpage>721</fpage>
          -
          <lpage>730</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Sun</given-names>
            <surname>Microsystems</surname>
          </string-name>
          . JSR-000168 Portlet Specification,
          <year>October 2003</year>
          . [Online]. http://jcp. org/aboutJava/communityprocess/final/jsr168/
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>F.</given-names>
            <surname>Daniel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Casati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Benatallah</surname>
          </string-name>
          , M.-
          <string-name>
            <given-names>C.</given-names>
            <surname>Shan</surname>
          </string-name>
          . Hosted Universal Composition:
          <article-title>Models, Languages and Infrastructure in mashArt</article-title>
          .
          <source>ER'09</source>
          , pp.
          <fpage>428</fpage>
          -
          <lpage>443</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>