Author: irooskov(a)redhat.com
Date: 2011-06-05 23:18:51 -0400 (Sun, 05 Jun 2011)
New Revision: 31841
Added:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_06.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_07.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_08.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_09.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_10.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_11.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_12.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_13.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_14.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_15.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_16.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_17.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_18.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_19.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_20.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_21.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_22.png
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_23.png
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_01.png
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_02.png
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_03.png
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_04.png
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_05.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_01.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_02.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_03.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_04.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_05.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_06.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_07.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_08.png
trunk/bpel/docs/reference/en-US/images/reference/Handlers_09.png
Modified:
trunk/bpel/docs/reference/en-US/reference.xml
Log:
updated with new content in references chapter
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_06.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_06.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_07.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_07.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_08.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_08.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_09.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_09.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_10.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_10.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_11.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_11.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_12.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_12.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_13.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_13.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_14.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_14.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_15.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_15.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_16.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_16.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_17.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_17.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_18.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_18.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_19.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_19.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_20.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_20.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_21.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_21.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_22.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_22.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_23.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/BPEL_Designer_23.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_01.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_01.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_02.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_02.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_03.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_03.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_04.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_04.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_05.png
===================================================================
(Binary files differ)
Property changes on:
trunk/bpel/docs/reference/en-US/images/reference/Fault_Activities_05.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_01.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_01.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_02.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_02.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_03.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_03.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_04.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_04.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_05.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_05.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_06.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_06.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_07.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_07.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_08.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_08.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bpel/docs/reference/en-US/images/reference/Handlers_09.png
===================================================================
(Binary files differ)
Property changes on: trunk/bpel/docs/reference/en-US/images/reference/Handlers_09.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/bpel/docs/reference/en-US/reference.xml
===================================================================
--- trunk/bpel/docs/reference/en-US/reference.xml 2011-06-04 22:49:28 UTC (rev 31840)
+++ trunk/bpel/docs/reference/en-US/reference.xml 2011-06-06 03:18:51 UTC (rev 31841)
@@ -579,7 +579,7 @@
The <guilabel>Details</guilabel> tab allows you to select one of four
basic actions: <property>Invoke</property>,
<property>Receive</property>, <property>Reply</property> and
<property>Assign</property>. Hovering the mouse over one of the selection
buttons displays a brief description of that activity.
</para>
</section>
- <section>
+ <section id="Reference-Details_tab-Invoke">
<title>Invoke</title>
<figure>
<title>Invoke</title>
@@ -596,7 +596,7 @@
The checkbox labeled <guilabel>Use WSDL Message Parts
Mapping</guilabel> provides an alternative to using variables for the request
message.
</para>
</section>
- <section>
+ <section id="Reference-Details_tab-Receive">
<title>Receive</title>
<figure>
<title>Receive</title>
@@ -613,7 +613,7 @@
The <guilabel>Create a new Process Instance</guilabel> checkbox, when
enabled, will cause the BPEL engine to start a new process. This will start a new
conversation with a client.
</para>
</section>
- <section>
+ <section id="Reference-Details_tab-Reply">
<title>Reply</title>
<figure>
<title>Reply</title>
@@ -641,7 +641,7 @@
</mediaobject>
</figure>
</section>
- <section>
+ <section id="Reference-Details_tab-Assign">
<title>Assign</title>
<para>
The <property>Assign</property> section is probably one of the more
complex pages in the BPEL Designer, due to the nature of the BPEL
<property>Assign</property> activity. The figure below shows the detail tab of
an empty <property>Assign</property> activity with callouts describing each
component:
@@ -804,7 +804,7 @@
</tgroup>
</table>
</section>
- <section>
+ <section id="Reference-Details_tab-Validate">
<title>Validate</title>
<figure>
<title>Validate</title>
@@ -860,7 +860,7 @@
The <property>Pick</property> details tab allows you to specify whether
the event will create a new process instance. <!-- See also the discussion of the Pick
Activity. -->
</para>
</section>
- <section>
+ <section id="Reference-Details_tab-OnMessage">
<title>OnMessage</title>
<figure>
<title>OnMessage</title>
@@ -877,7 +877,7 @@
The <guilabel>Details</guilabel> tab allows you to specify the
<property>Partner Link</property>, <property>Operation</property>
and <property>Message Type</property> expected by the activity, and the
process variable that will contain the received message data.
</para>
</section>
- <section>
+ <section id="Reference-Details_tab-OnAlarm">
<title>OnAlarm</title>
<figure>
<title>OnAlarm</title>
@@ -941,7 +941,7 @@
The optional <guilabel>Completion</guilabel> tab allows you to specify
the early termination condition for the loop.
</para>
</section>
- <section>
+ <section id="Reference-Details_tab-Wait">
<title>Wait</title>
<figure>
<title>Wait</title>
@@ -1089,11 +1089,532 @@
<imageobject>
<imagedata fileref="images/reference/BPEL_Designer_05.png"/>
</imageobject>
- </inlinemediaobject> activities. These do not correspond to actual BPEL
elements however, and are simply placeholders for visualizing the beginning and end of the
process flow:
+ </inlinemediaobject> activities. These do not correspond to actual BPEL
elements however, and are simply placeholders for visualizing the beginning and end of the
process flow.
</para>
</section>
+ <section>
+ <title>Assign</title>
+ <figure>
+ <title>Assign activity</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_06.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Assign</property> activity allows you to manipulate
variables and message contents that are defined in the process. See <xref
linkend="Reference-Details_tab-Assign" /> for more information.
+ </para>
+ </section>
+ <section>
+ <title>Invoke</title>
+ <figure>
+ <title>Invoke activity</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_07.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Invoke</property> activity is used to send a message to
an external service (one-way invocation), and optionally wait for a response (request and
response). An <property>Invoke</property> can also define a compensation
handler and a fault handler to handle exception conditions. See <xref
linkend="Reference-Details_tab-Invoke" /> for more information.
+ </para>
+ </section>
+ <section>
+ <title>Receive</title>
+ <figure>
+ <title>Receive activity</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_08.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Receive</property> activity will wait for a specific
message type from a service client. See <xref
linkend="Reference-Details_tab-Receive" /> for more information.
+ </para>
+ </section>
+ <section>
+ <title>Reply</title>
+ <figure>
+ <title>Reply activity</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_09.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Reply</property> activity is used to respond to clients
with a specific message type, or fault message (if defined for the process interface). See
<xref linkend="Reference-Details_tab-Reply" /> for more information.
+ </para>
+ </section>
+ <section>
+ <title>Validate</title>
+ <figure>
+ <title>Validate Input activity</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_10.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Validate</property> activity is used to validate the
values of variables against their XML Schema and WSDL data definitions. This includes the
variable’s data type as well as structure. If validation fails, the BPEL standard fault
invalidVariables is thrown.
+ </para>
+ <para>
+ Validation is typically performed just before sending messages to a partner or
client, or after receiving a message to ensure the message contains all required data and
that the data is as expected. See <xref
linkend="Reference-Details_tab-Validate" /> for more information.
+ </para>
+ </section>
+ <section>
+ <title>Wait</title>
+ <figure>
+ <title>Wait activity</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_11.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ A <property>Wait</property> activity will delay process execution for a
certain amount of time, or until a given date and time; this is typically used to invoke
an operation at a certain time. For example to update process state hourly or daily, or to
collect some information from another service at a certain time of day. See <xref
linkend="Reference-Details_tab-Wait" /> for more information.
+ </para>
+ </section>
</section>
- </section>
+ <section>
+ <title>Structured activities</title>
+ <para>
+ Structured activities can be thought of as containers that can hold one or more
activities. The <guilabel>Controls</guilabel> section of the
<guilabel>Palette</guilabel> contains all of the <emphasis>structured
activities</emphasis>. When you drag and drop one of these onto the drawing canvas,
the BPEL Designer will create a basic skeleton of the activity, and assign default
properties.
+ </para>
+ <para>
+ All structured activities will require some additional configuration before they are
considered valid. For example, BPEL does not allow an empty
<property>Sequence</property> activity. Invalid structured activities will be
decorated with an error icon similar to basic activities.
+ </para>
+ <para>
+ Structured activities can be expanded and collapsed on the drawing canvas by
clicking the plus and minus buttons at the bottom of the figure. Illustrated below is a
collapsed and expanded <property>Sequence</property>:
+ </para>
+ <figure>
+ <title>Collapsed Sequence</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_12.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <figure>
+ <title>Expanded Sequence</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_13.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The following sections describe the structured activities and how each must be
configured to be considered vaid for BPEL.
+ </para>
+ <section>
+ <title>If</title>
+ <figure>
+ <title>If, ElseIf and Else</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_14.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>If</property> activity allows conditional execution of
one or more sequences of activities. It consists of a sequence of one or more conditional
branches defined by <property>If</property> and optional
<property>ElseIf</property> elements. The elements are evaluated in
left-to-right order (or top-to-bottom if you have selected horizontal layout). An optional
<property>Else</property> branch will be executed if none of the other
conditions are true.
+ </para>
+ <para>
+ An <property>If</property> activity must define a condition (expressed
as an XPath) and an activity which is executed if the condition evaluates true. To insert
additional <property>ElseIf</property> and
<property>Else</property> elements, right-click the
<property>If</property> figure and select the desired element from the context
menu. The figure above shows a complete <property>If</property> activity with
optional <property>ElseIf</property> and <property>Else</property>
elements.
+ </para>
+ </section>
+ <section>
+ <title>Pick</title>
+ <figure>
+ <title>Pick</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_15.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Pick</property> activity will cause the process to wait
for one of any number of messages to be received. An optional timer can be set to limit
the time to wait for receipt of these messages. Activities to handle receipt of messages
and timer expiration are defined in the <property>Pick</property>. Message
receipts are handled by <property>OnMessage</property> activities (<xref
linkend="Reference-Details_tab-OnMessage" />), and timer expiration is
handled by the <property>OnAlaram</property> activity (<xref
linkend="Reference-Details_tab-OnAlarm" />).
+ </para>
+ </section>
+ <section>
+ <title>While</title>
+ <figure>
+ <title>While</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_16.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>While</property> activity repeatedly executes the
contained activity as long as a condition evaluates true at the beginning of each
iteration. A <property>While</property> activity must define a condition and
must contain an activity.
+ </para>
+ </section>
+ <section>
+ <title>ForEach</title>
+ <figure>
+ <title>ForEach</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_17.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ <property>ForEach</property> is a looping activity that executes the
activities contained in its <property>Scope</property> a specified number of
times. A counter variable, defined in the <property>ForEach</property>
property detail tab, is used to keep track of the iterations. The
<property>ForEach</property> properties must be configured with starting and
ending value expressions for this counter variable. The counter is initially set to the
starting value and activities in the <property>Scope</property> are executed
until the counter exceeds the ending value.
+ </para>
+ <para>
+ This activity can also be configured to execute all iterations in parallel, meaning
the enclosed <property>Scope</property> activity behaves as if multiple
<property>Scopes</property> are enclosed in a
<property>Flow</property> activity.
+ </para>
+ <para>
+ An optional early termination value can be defined, which will cause the loop to
complete before the counter has reached its ending value. The
<property>ForEach</property> will complete when the counter is equal to this
early termination value for the sequential execution case. For the parallel execution
case, the early termination value is the number of completed iterations. For example, the
<property>ForEach</property> completes when at least <emphasis>some
number</emphasis> of <emphasis>some action</emphasis> have finished.
+ </para>
+ </section>
+ <section>
+ <title>RepeatUntil</title>
+ <figure>
+ <title>RepeatUntil</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_18.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>RepeatUntil</property> activity repeatedly executes the
contained activity as long as a condition evaluates true at the end of each iteration. A
condition must be defined for a <property>RepeatUntil</property>, and it must
contain an activity.
+ </para>
+ </section>
+ <section>
+ <title>Sequence</title>
+ <para>
+ A <property>Sequence</property> is a container for one or more other
activities, which are executed in sequential order and (unlike
<property>Scope</property> and <property>Flow</property>
activities), has no other special characteristics. Because the conditional activities
(<property>If</property>, <property>While</property>,
<property>RepeatUntil</property> and <property>ForEach</property>)
can have only one activity as the target of their execution, a
<property>Sequence</property> is typically used to execute multiple
activities.
+ </para>
+ <para>
+ For example, the <property>If</property> shown below contains only a
single Assign activity:
+ </para>
+ <figure>
+ <title>Sequence</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_19.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ If it were necessary to perform an assignment and then invoke another web service,
the <property>Assign</property> and <property>Invoke</property>
could be contained within a <property>Sequence</property>. The
<property>Sequence</property> would then become the target of the
<property>If</property>:
+ </para>
+ <figure>
+ <title>Sequence</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_20.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <note>
+ <para>
+ The BPEL Designer will automatically create a
<property>Sequence</property> if you drag-drop a second activity into any of
the conditional activities.
+ </para>
+ </note>
+ </section>
+ <section>
+ <title>Scope</title>
+ <figure>
+ <title>Scope</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_21.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ A <property>Scope</property> provides a context for its enclosed
activity. This context includes variables, partner links, message exchanges, correlation
sets, event handlers, fault handlers, a compensation handler and a termination handler.
These <property>Scope</property> contexts can be nested hierarchically where
the root context is provided by the process itself.
+ </para>
+ <para>
+ A <property>Scope</property> can be thought of as a compartmentalized
sub-process. If the <property>Scope</property> is declared as being
<emphasis>isolated</emphasis>, then the variables and partner links shared
with the process are locked to prevent other concurrent
<property>Scopes</property> from altering them while a
<property>Scope</property> is executing.
<property>Scope</property> may also be nested to any depth and all variables,
partner links and others defined in a <property>Scope</property>, are
inherited by its children. Refer to <xref
linkend="Reference-BPEL_Designer-Structured_Activities-Flow" /> for a
discussion of concurrent execution.
+ </para>
+ <para>
+ To be valid, a <property>Scope</property> must have a single activity.
The typical use of a Scope activity is to invoke a service and wait for a response message
or timeout. In the above figure, the <property>Scope</property> has defined a
message variable and a partner link used to interact with the invoked service.
+ </para>
+ </section>
+ <section id="Reference-BPEL_Designer-Structured_Activities-Flow">
+ <title>Flow</title>
+ <para>
+ The <property>Flow</property> activity allows multiple activities to be
executed in parallel. All activities or <property>Sequences</property> of
activities that are contained in a <property>Flow</property>, are executed (or
begun) at the same time by the BPEL engine. A <property>Flow</property>
completes when all of its enclosed activities have completed.
+ </para>
+ <para>
+ Parallel processing is typically used to save time by doing more than one thing at
a time and as a result, speed up the process. However, in many situations several tasks
can be started at the same time, but one or more tasks may depend on the successful
completion of other tasks. This task dependency sequencing is called
<emphasis>synchronization</emphasis> and is achieved using
<property>Links</property>.
+ </para>
+ <para>
+ For example, a process that handles purchase orders for material goods needs to:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Calculate the total order price
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Calculate shipping costs for the order
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Send a customer invoice
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ All of these activities can be started at the same time, however the shipping cost
must be finalized before the total order price can be determined, and the invoice can be
sent.
+ </para>
+ <para>
+ To create a <property>Link</property>, right-click on the activity that
must be completed first (the activity that is the <emphasis>source</emphasis>
of the dependency) and select <guimenuitem>Add Link</guimenuitem> from the
context menu. Next, move the mouse to the activity in the
<property>Flow</property> that depends on this one (the
<emphasis>target</emphasis>) and click the left mouse button to create the
link.
+ </para>
+ <para>
+ A <property>Link</property> is identified by a name that must be unique
within the <property>Flow</property>. The BPEL Designer generates a reasonable
default name, but you can change this in its properties. You can also add a test to the
<property>Link</property> that defines the conditions for considering an
activity to be complete. For example an activity in a
<property>Flow</property> may require two pieces of information, provided by
other services, in order to continue. Consider the process
<property>Flow</property> shown below:
+ </para>
+ <figure>
+ <title>Flow example</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_22.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ In this example, the <emphasis>Billing</emphasis> department can begin
preparation of a customer invoice, but it needs to know if sufficient stock is on hand to
fulfill the order and if an outside vendor needs to provide the additional quantities
ordered. The following condition would enable the <property>Link</property> so
that execution can continue for the price calculation and customer invoicing:
+ </para>
+ <figure>
+ <title>Link example</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/BPEL_Designer_23.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ This process is only partially complete though as it does not consider the number
of outside vendors, or if the total quantity being ordered can ever be filled.
+ </para>
+ </section>
+ </section>
+ <section>
+ <title>Fault Activities</title>
+ <para>
+ Fault activities cause the normal process execution flow to jump to a specialized
handler, similar to exceptions in modern programming languages. There are five different
types of fault activities, described in this section.
+ </para>
+ <section>
+ <title>Exit</title>
+ <figure>
+ <title>Exit</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Fault_Activities_01.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Exit</property> activity causes the process to
immediately terminate.
+ </para>
+ </section>
+ <section>
+ <title>Throw</title>
+ <figure>
+ <title>Throw</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Fault_Activities_02.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Throw</property> activity propagates a specified fault to
its ancestor <property>Scope</property>, or the process itself.
+ </para>
+ </section>
+ <section>
+ <title>Rethrow</title>
+ <figure>
+ <title>Rethrow</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Fault_Activities_03.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ A <property>Rethrow</property> activity can only be used inside a fault
handler. It is used to propagate the fault that was caught by the handler, using the
original fault data.
+ </para>
+ </section>
+ <section>
+ <title>Compensate</title>
+ <figure>
+ <title>Compensate</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Fault_Activities_04.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>Compensate</property> activity is used to invoke a
compensation handler. This activity can only be used within a fault handler, compensation
handler or termination handler.
+ </para>
+ </section>
+ <section>
+ <title>CompensateScope</title>
+ <figure>
+ <title>CompensateScope</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Fault_Activities_05.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The <property>CompensateScope</property> activity is used to invoke a
compensation handler in the enclosing <property>Scope</property>. This
activity can only be used within a fault handler, compensation handler or termination
handler.
+ </para>
+ </section>
+ </section>
+ <section>
+ <title>Faulot, compensation, termination and event handlers</title>
+ <para>
+ Handlers allow a BPEL process to recover from exception conditions. Exception
conditions include: a timeout waiting for a response from a partner service, invalid or
missing message data, a fault condition returned by a service. There are four types of
handlers:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Fault handler <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_01.png"/>
+ </imageobject>
+ </inlinemediaobject>: Executed when a fauly is thrown by an activity.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Compensation handler <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_02.png"/>
+ </imageobject>
+ </inlinemediaobject>: Executed when the BPEL process encounters a
<property>Compensate</property> or
<property>CompensateScope</property> activity.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Temination handler <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_03.png"/>
+ </imageobject>
+ </inlinemediaobject>: Executed if a <property>Scope</property>
is forced to terminate early.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Event handler <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_04.png"/>
+ </imageobject>
+ </inlinemediaobject>: Executed for events include the receipt of a message
and a timer expiration.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Handlers are defined for the process or for certain activities. To create a new
handler right-click an activity and select the desired handler from its context menu. The
BPEL Designer will generate a skeleton of the handler within a collapsible window that is
attached to the activity. The figure below illustrates all of the different types of
handlers in their fully expanded view. The handler windows can be collapsed and expanded
by clicking on their respective icon.
+ </para>
+ <figure>
+ <title>Handlers overview</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_05.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ The behavior of handlers and the order of exception processing is complex and beyond
the scope of this document. Refer to the OASIS WS-BPEL 2.0 specification at <ulink
url="http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html">...
for more information.
+ </para>
+ <section>
+ <title>Process-level Handlers</title>
+ <figure>
+ <title>Start activity with handlers</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_06.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Fault and event handlers can be defined for the process by right-clicking the
<property>Start</property> activity and selecting the desired handler from the
context menu.
+ </para>
+ </section>
+ <section>
+ <title>Scope-level handlers</title>
+ <para>
+ A <property>Scope</property> may have any handler. Since
<property>Scopes</property> can be nested, each level can define its own set
of handlers. Events that are not caught and processed by a handler in an inner
<property>Scope</property>, will be propagated to its ancestors.
+ </para>
+ </section>
+ <section>
+ <title>Activity-level handlers</title>
+ <para>
+ Only the <property>Invoke</property> activity can define handlers. The
handlers available to it are the fault and compensation handlers.
+ </para>
+ </section>
+ </section>
+ <section>
+ <title>Correlation Sets</title>
+ <para>
+ Correlation sets are used to identify ongoing conversations between a client and the
BPEL process. Typically, a correlation is an element in a message that uniquely identifies
the conversation between client and service; for example, an Order ID or Social Security
Number. This also identifies a specific process instance being managed by the BPEL
engine.
+ </para>
+ <para>
+ In many cases a single element of a message is not enough to make it unique, so
correlations can be defined as composites of several fields. Since a conversation can
involve many different types of messages. Different correlations will need to be defined
for each message type.
+ </para>
+ <para>
+ To create a correlation for a messaging activity (for example:
<property>Invoke</property>, <property>Receive</property>,
<property>Reply</property>), select the activity and then click
<guibutton>Add</guibutton> on the <guilabel>Correlation
Detail</guilabel> property tab. This will display the <guilabel>Select a
Property</guilabel> dialog.
+ </para>
+ <figure>
+ <title>Select a Property</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_07.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ You canselect an existing property defined in the WSDL or click
<guibutton>New</guibutton> to create a new WSDL property, which will display
the <guilabel>Create Message Property</guilabel> dialog.
+ </para>
+ <figure>
+ <title>Create Message Property</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_08.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Enter a name for the new WSDL property and its type. Either an XSD simple type or an
XML Schema element.
+ </para>
+ <para>
+ Next, click the <guibutton>Browse”</guibutton> button to select a type.
This will display the <guilabel>Type Selection</guilabel> dialog.
+ </para>
+ <para>
+ Click <guilabel>New</guilabel> in the
<guilabel>Aliases</guilabel> section to create a new WSDL property alias.
+ </para>
+ <figure>
+ <title>Create Property Alias</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/reference/Handlers_09.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Select either the <guilabel>Message Type</guilabel>, XSD
<guilabel>Simple Type</guilabel> or XML scheme
<guilabel>Element</guilabel> radio button and click
<guibutton>Browse</guibutton> to select its type. Then click
<guibutton>OK</guibutton>.
+ </para>
+ </section>
+ </section>
</section>
</chapter>