• Ingen resultater fundet

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