Appendix A
XML code
This appendix contains the source code of the example system as it is imple-mented in BPEL. WSDL and XSD definitions are also included, because they are integral part of a BPEL implementation. Files contained here are the versions with information-flow control extensions.
WSDL and XSD definitions of only the Shop Service (and not Company service and Postal Service), because they all are defined following the same principals, and are equivalent in every way.
A.1 Business process
4 ta r g e tN a m e s p a c e=” h t t p : // e n t e r p r i s e . n e t b e a n s . o r g / b p e l / ShopBpelModule/ shopBpelModule ”
5 x m l n s : t n s=” h t t p : // e n t e r p r i s e . n e t b e a n s . o r g / b p e l / ShopBpelModule/
shopBpelModule ”
6 x m l n s : x s=” h t t p : //www. w3 . o r g /2001/ XMLSchema”
7 x m l n s : x s d=” h t t p : //www. w3 . o r g /2001/ XMLSchema”
8 x m l n s : x s i=” h t t p : //www. w3 . o r g /2001/ XMLSchema−i n s t a n c e ”
9 xmlns=” h t t p : // d o c s . o a s i s−open . o r g / w s b p e l / 2 . 0 / p r o c e s s / e x e c u t a b l e
”
10 x m l n s : s x t=” h t t p : //www. sun . com/ w s b p e l / 2 . 0 / p r o c e s s / e x e c u t a b l e / SUNExtension / Trace ”
11 x m l n s : s x e d=” h t t p : //www. sun . com/ w s b p e l / 2 . 0 / p r o c e s s / e x e c u t a b l e / SUNExtension / E d i t o r ”
12 x m l n s : s x e h=” h t t p : //www. sun . com/ w s b p e l / 2 . 0 / p r o c e s s / e x e c u t a b l e / SUNExtension / E r r o r H a n d l i n g ”
13 x m l n s : s x e d 2=” h t t p : //www. sun . com/ w s b p e l / 2 . 0 / p r o c e s s / e x e c u t a b l e / SUNExtension / E d i t o r 2 ”
14 x m l n s : b 4 j=” h t t p : // b p e l 4 j i f . b p e l . s 0 9 4 7 5 8 . dtu . dk/ ”
15 x s i : s c h e m a L o c a t i o n=” h t t p : // b p e l 4 j i f . b p e l . s 0 9 4 7 5 8 . dtu . dk/
BPEL4Jif . xsd ”>
16 <e x t e n s i o n s>
17 <e x t e n s i o n namespace=” h t t p : // b p e l 4 j i f . b p e l . s 0 9 4 7 5 8 . dtu . dk/ ” mustUnderstand=” no ” />
18 </ e x t e n s i o n s>
19 <i m p o r t namespace=” h t t p : // s h o p s e r v i c e . shop . s 0 9 4 7 5 8 . dtu . dk / ” l o c a t i o n=” S h o p S e r v i c e . wsdl ” importType=” h t t p : // schemas . xmlsoap . o r g / wsdl / ” />
20 <i m p o r t namespace=” h t t p : // p o s t a l s e r v i c e . p o s t a l . s 0 9 4 7 5 8 . dtu . dk/ ” l o c a t i o n=” P o s t a l S e r v i c e . wsdl ” importType=” h t t p : // schemas . xmlsoap . o r g / wsdl / ” />
21 <i m p o r t namespace=” h t t p : // c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk / ” l o c a t i o n=” CompanyService . wsdl ” importType=” h t t p : //
schemas . xmlsoap . o r g / wsdl / ” />
22 <p a r t n e r L i n k s>
23 <p a r t n e r L i n k name=” P o s t a l P a r t n e r L i n k ” x m l n s : t n s=” h t t p : //
p o s t a l s e r v i c e . p o s t a l . s 0 9 4 7 5 8 . dtu . dk / ” p a r tn e r L i n k T y p e=”
t n s : P o s t a l S e r v i c e ” p a r t n e r R o l e=” P o s t a l R o l e ” />
24 <p a r t n e r L i n k name=” CompanyPartnerLink” x m l n s : t n s=” h t t p : //
c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk/ ” p a r tn e r L i n k T y p e
=” tn s : C o m p a n y S e r v i c e ” p a r t n e r R o l e=” CompanyRole” />
25 <p a r t n e r L i n k name=” S h o p P a r tn e r L i n k” x m l n s : t n s=” h t t p : //
s h o p s e r v i c e . shop . s 0 9 4 7 5 8 . dtu . dk/ ” p a r tn e r L i n k T y p e=”
t n s : S h o p S e r v i c e ” myRole=” ShopRole ” />
26 </ p a r t n e r L i n k s>
27 <v a r i a b l e s>
28 <v a r i a b l e name=” didBuyProduct” x m l n s : t n s=” h t t p : //
c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk/ ” messageType=”
tn s : b u y P r o d u c t R e s p o n s e ”>
29 <b 4 j : l a b e l></ b 4 j : l a b e l>
30 </ v a r i a b l e>
31 <v a r i a b l e name=” Product ” x m l n s : t n s=” h t t p : // c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk/ ” messageType=” t n s : b u y P r o d u c t ”>
32 <b 4 j : l a b e l></ b 4 j : l a b e l>
33 </ v a r i a b l e>
A.1 Business process 59
34 <v a r i a b l e name=” i s V a l i d A d d r e s s ” x m l n s : t n s=” h t t p : //
p o s t a l s e r v i c e . p o s t a l . s 0 9 4 7 5 8 . dtu . dk / ” messageType=”
t n s : v a l i d a t e A d d r e s s R e s p o n s e ”>
35 <b 4 j : l a b e l></ b 4 j : l a b e l>
36 </ v a r i a b l e>
37 <v a r i a b l e name=” AddressAndPerson ” x m l n s : t n s=” h t t p : //
p o s t a l s e r v i c e . p o s t a l . s 0 9 4 7 5 8 . dtu . dk / ” messageType=”
t n s : v a l i d a t e A d d r e s s ”>
38 <b 4 j : l a b e l></ b 4 j : l a b e l>
39 </ v a r i a b l e>
40 <v a r i a b l e name=” i s V a l i d C u s t o m e r” x m l n s : t n s=” h t t p : //
c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk/ ” messageType=”
t n s : v a l i d a t e C u s t o m e r R e s p o n s e ”>
41 <b 4 j : l a b e l></ b 4 j : l a b e l>
42 </ v a r i a b l e>
43 <v a r i a b l e name=” Customer ” x m l n s : t n s=” h t t p : // c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk/ ” messageType=”
t n s : v a l i d a t e C u s t o m e r ”>
44 <b 4 j : l a b e l></ b 4 j : l a b e l>
45 </ v a r i a b l e>
46 <v a r i a b l e name=” R e c e i p t ” x m l n s : t n s=” h t t p : // s h o p s e r v i c e . shop . s 0 9 4 7 5 8 . dtu . dk / ” messageType=” t n s : o r d e r P r o d u c t R e s p o n s e
”>
47 <b 4 j : l a b e l></ b 4 j : l a b e l>
48 </ v a r i a b l e>
49 <v a r i a b l e name=” ClientAndOrder ” x m l n s : t n s=” h t t p : //
s h o p s e r v i c e . shop . s 0 9 4 7 5 8 . dtu . dk/ ” messageType=”
t n s : o r d e r P r o d u c t ”>
50 <b 4 j : l a b e l></ b 4 j : l a b e l>
51 </ v a r i a b l e>
52 <v a r i a b l e name=” i s V a l i d C u s t o m e r 2” x m l n s : t n s=” h t t p : //
e n t e r p r i s e . n e t b e a n s . o r g / b p e l / ShopBpelModule/
shopBpelModule ” ty p e=” x s d : b o o l e a n ”>
53 <b 4 j : l a b e l></ b 4 j : l a b e l>
54 </ v a r i a b l e>
55 <v a r i a b l e name=” i s V a l i d A d d r e s s 2 ” x m l n s : t n s=” h t t p : //
e n t e r p r i s e . n e t b e a n s . o r g / b p e l / ShopBpelModule/
shopBpelModule ” ty p e=” x s d : b o o l e a n ”>
56 <b 4 j : l a b e l></ b 4 j : l a b e l>
57 </ v a r i a b l e>
58 </ v a r i a b l e s>
59 <s e q u e n c e>
60 <r e c e i v e name=” R e c e i v e P r o d u c tO r d e r ” c r e a t e I n s t a n c e =” y e s ” p a r t n e r L i n k=” S h o p P a r tn e r L i n k” o p e r a t i o n=” o r d e r P r o d u c t ” x m l n s : t n s=” h t t p : // s h o p s e r v i c e . shop . s 0 9 4 7 5 8 . dtu . dk/ ” portType=” t n s : S h o p ” v a r i a b l e =” ClientAndOrder ” />
61 <a s s i g n name=” A s s i g n C l i e n tT o C u s to m e r”>
62 <copy>
63 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / f i r s t N a m e</ from>
64 <to>$ Customer . p a r a m e te r s / c u s to m e r / f i r s t N a m e</ to>
65 </ copy>
66 <copy>
67 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / lastName</ from>
68 <to>$ Customer . p a r a m e te r s / c u s to m e r / lastName</ to>
69 </ copy>
70 <copy>
71 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / p e r s o n a l I d<
/ from>
72 <to>$ Customer . p a r a m e te r s / c u s to m e r / p e r s o n a l I d</ to>
73 </ copy>
74 </ a s s i g n>
75 <i n v o k e name=” V a l i d a te C u s to m e r ” p a r t n e r L i n k=”
CompanyPartnerLink” o p e r a t i o n=” v a l i d a t e C u s t o m e r ”
x m l n s : t n s=” h t t p : // c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk / ” portType=” tns:Company” i n p u t V a r i a b l e=” Customer ” o u t p u t V a r i a b l e =” i s V a l i d C u s t o m e r” />
76 <a s s i g n name=” A s s i g n C l i e n tT o A d d r e ss An d P e rso n”>
77 <copy>
78 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / f i r s t N a m e</ from>
79 <to>$ AddressAndPerson . p a r a m e te r s / p e r s o n / f i r s t N a m e</ to>
80 </ copy>
81 <copy>
82 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / lastName</ from>
83 <to>$ AddressAndPerson . p a r a m e te r s / p e r s o n / lastName</ to>
84 </ copy>
85 <copy>
86 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / p e r s o n a l I d<
/ from>
87 <to>$ AddressAndPerson . p a r a m e te r s / p e r s o n / p e r s o n a l I d<
/ to>
88 </ copy>
89 <copy>
90 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / s t r e e t</ from>
91 <to>$ AddressAndPerson . p a r a m e te r s / a d d r e s s / s t r e e t</ to
>
92 </ copy>
93 <copy>
94 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / s tr e e tN u m b e r</ from>
95 <to>$ AddressAndPerson . p a r a m e te r s / a d d r e s s / s tr e e tN u m b e r</ to>
96 </ copy>
97 <copy>
98 <from>$ ClientAndOrder . p a r a m e te r s / c l i e n t / c i t y</ from>
99 <to>$ AddressAndPerson . p a r a m e te r s / a d d r e s s / c i t y</ to>
100 </ copy>
101 </ a s s i g n>
102 <i n v o k e name=” V a l i d a t e A d d r e s s ” p a r t n e r L i n k=”
P o s t a l P a r t n e r L i n k ” o p e r a t i o n=” v a l i d a t e A d d r e s s ”
x m l n s : t n s=” h t t p : // p o s t a l s e r v i c e . p o s t a l . s 0 9 4 7 5 8 . dtu . dk / ” portType=” t n s : P o s t a l ” i n p u t V a r i a b l e=” AddressAndPerson ” o u t p u t V a r i a b l e =” i s V a l i d A d d r e s s ” />
103 <a s s i g n name=” AssignOrderToProduct ”>
A.1 Business process 61
104 <copy>
105 <from>$ ClientAndOrder . p a r a m e te r s / o r d e r / p r i c e</ from>
106 <to>$ Product . p a r a m e te r s / p r o d u c t / p r i c e</ to>
107 </ copy>
108 <copy>
109 <from>$ ClientAndOrder . p a r a m e te r s / o r d e r / p r o d u c t</ from>
110 <to>$ Product . p a r a m e te r s / p r o d u c t /name</ to>
111 </ copy>
112 </ a s s i g n>
113 <a s s i g n name=” E n d o r s e I s V a l i d A d d r e s s ”>
114 <copy>
115 <from>$ i s V a l i d A d d r e s s . p a r a m e te r s / r e t u r n</ from>
116 <to v a r i a b l e =” i s V a l i d A d d r e s s 2 ” />
117 </ copy>
118 <e x t e n s i o n A s s i g n O p e r a t i o n>
119 <b 4 j : e n d o r s e>
120 <b 4 j : f r o m L a b e l>Company w r i t e r top</ b 4 j : f r o m L a b e l>
121 <b 4 j : t o L a b e l>Company w r i t e r top meet Post w r i t e r top</ b 4 j : t o L a b e l>
122 </ b 4 j : e n d o r s e>
123 </ e x t e n s i o n A s s i g n O p e r a t i o n>
124 </ a s s i g n>
125 <a s s i g n name=” E n d o r s e Is V a l i d C u s to m e r ”>
126 <copy>
127 <from>$ i s V a l i d C u s t o m e r . p a r a m e te r s / r e t u r n</ from>
128 <to v a r i a b l e =” i s V a l i d C u s t o m e r 2” />
129 </ copy>
130 <e x t e n s i o n A s s i g n O p e r a t i o n>
131 <b 4 j : e n d o r s e>
132 <b 4 j : f r o m L a b e l>Company w r i t e r top</ b 4 j : f r o m L a b e l>
133 <b 4 j : t o L a b e l>Company w r i t e r top meet Post w r i t e r top</ b 4 j : t o L a b e l>
134 </ b 4 j : e n d o r s e>
135 </ e x t e n s i o n A s s i g n O p e r a t i o n>
136 </ a s s i g n>
137 <i f name=” If V a l i d A d d r e ss An dC u sto me r”>
138 <c o n d i t i o n>$ i s V a l i d C u s t o m e r 2 and $ i s V a l i d A d d r e s s 2</ c o n d i t i o n>
139 <i n v o k e name=” BuyProduct ” p a r t n e r L i n k=”
CompanyPartnerLink” o p e r a t i o n=” buyProduct ”
x m l n s : t n s=” h t t p : // c o m p a n y s e r v i c e . company . s 0 9 4 7 5 8 . dtu . dk/ ” portType=” tns:Company” i n p u t V a r i a b l e=”
Product ” o u t p u t V a r i a b l e =” didBuyProduct” />
140 </ i f>
141 <a s s i g n name=” P o p u l a t e R e c e i p t ”>
142 <copy>
143 <from>$ Product . p a r a m e te r s / p r o d u c t /name</ from>
144 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / p r o d u c t</ to>
145 </ copy>
146 <copy>
147 <from>$ Product . p a r a m e te r s / p r o d u c t / p r i c e</ from>
148 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / p r i c e</ to>
149 </ copy>
150 <copy>
151 <from>$ Customer . p a r a m e te r s / c u s to m e r / f i r s t N a m e</ from
>
152 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / f i r s t N a m e</ to>
153 </ copy>
154 <copy>
155 <from>$ Customer . p a r a m e te r s / c u s to m e r / lastName</ from>
156 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / lastName</ to>
157 </ copy>
158 <copy>
159 <from>$ Customer . p a r a m e te r s / c u s to m e r / p e r s o n a l I d</ from>
160 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / p e r s o n a l I d</ to>
161 </ copy>
162 <copy>
163 <from>$ AddressAndPerson . p a r a m e te r s / a d d r e s s / c i t y</ from>
164 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / c i t y</ to>
165 </ copy>
166 <copy>
167 <from>$ AddressAndPerson . p a r a m e te r s / a d d r e s s / s t r e e t</ from>
168 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / s t r e e t</ to>
169 </ copy>
170 <copy>
171 <from>$ AddressAndPerson . p a r a m e te r s / a d d r e s s / s tr e e tN u m b e r</ from>
172 <to>$ R e c e i p t . p a r a m e te r s / r e t u r n / s tr e e tN u m b e r</ to>
173 </ copy>
174 </ a s s i g n>
175 <r e p l y name=” S e n d R e c e i p t ” p a r t n e r L i n k=” S h o p P a r tn e r L i n k”
o p e r a t i o n=” o r d e r P r o d u c t ” x m l n s : t n s=” h t t p : // s h o p s e r v i c e . shop . s 0 9 4 7 5 8 . dtu . dk/ ” portType=” t n s : S h o p ” v a r i a b l e =”
R e c e i p t ” />
176 </ s e q u e n c e>
177 </ p r o c e s s>
Listing A.1: Business process in BPEL with information-flow control extensions