<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0"> <attributes> <info>Enter info here</info> <modeltype>CPEE</modeltype> <theme>default</theme> <uuid>221ba899-7d97-4e0f-a01e-fb21b5da3171</uuid> </attributes> <state>ready</state> <handlerwrapper>DefaultHandlerWrapper</handlerwrapper> <positions/> <dataelements> <persons>3</persons> <card>Visa_12345</card> <airline>null</airline> <hotels>[]</hotels> <from>Vienna</from> <to>Prague</to> <costs>0</costs> </dataelements> <endpoints> <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir> <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel> <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve> </endpoints> <dsl>call :a1, :bookAir, parameters: { :method => :post, :arguments => {:from => data.from, :to => data.to, :persons => data.persons} }, finalize: <<-END data.airline = result.value('id') data.costs += result.value('costs').to_f status.update 1, 'Hotel' END parallel do loop pre_test{data.persons > 0} do parallel_branch data.persons do |p| call :a2, :bookHotel, parameters: { :method => :post, :arguments => {:to => data.to} }, finalize: <<-END data.hotels << result.value('id') data.costs += result.value('costs').to_f END end manipulate :a3, <<-END data.persons -= 1 END end end choose :inclusive do alternative "data.costs > 700" do call :a4, :approve, parameters: { :method => :post, :arguments => {:costs => data.costs} } end end </dsl> <dslx> <description xmlns="http://cpee.org/ns/description/1.0"> <call id="a1" endpoint="bookAir"> <parameters> <method>:post</method> <arguments> <from>data.from</from> <to>data.to</to> <persons>data.persons</persons> </arguments> </parameters> <finalize output="result"> data.airline = result.value('id') data.costs += result.value('costs').to_f status.update 1, 'Hotel'</finalize> </call> <parallel> <loop mode="pre_test" condition="data.persons > 0"> <parallel_branch pass="data.persons" local="p"> <call id="a2" endpoint="bookHotel"> <parameters> <method>:post</method> <arguments> <to>data.to</to> </arguments> </parameters> <finalize output="result"> data.hotels << result.value('id') data.costs += result.value('costs').to_f</finalize> </call> </parallel_branch> <manipulate id="a3"> data.persons -= 1</manipulate> </loop> </parallel> <choose> <alternative condition="data.costs > 700"> <call id="a4" endpoint="approve"> <parameters> <method>:post</method> <arguments> <costs>data.costs</costs> </arguments> </parameters> </call> </alternative> </choose> </description> </dslx> <status> <id>0</id> <message>undefined</message> </status> <description> <description xmlns="http://cpee.org/ns/description/1.0"> <call id="a1" endpoint="bookAir"> <parameters> <method>:post</method> <arguments> <from>data.from</from> <to>data.to</to> <persons>data.persons</persons> </arguments> </parameters> <finalize output="result"> data.airline = result.value('id') data.costs += result.value('costs').to_f status.update 1, 'Hotel'</finalize> </call> <parallel> <loop mode="pre_test" condition="data.persons > 0"> <parallel_branch pass="data.persons" local="p"> <call id="a2" endpoint="bookHotel"> <parameters> <method>:post</method> <arguments> <to>data.to</to> </arguments> </parameters> <finalize output="result"> data.hotels << result.value('id') data.costs += result.value('costs').to_f</finalize> </call> </parallel_branch> <manipulate id="a3"> data.persons -= 1</manipulate> </loop> </parallel> <choose> <alternative condition="data.costs > 700"> <call id="a4" endpoint="approve"> <parameters> <method>:post</method> <arguments> <costs>data.costs</costs> </arguments> </parameters> </call> </alternative> </choose> </description> </description> <transformation> <description type="copy"/> <dataelements type="rest"/> <endpoints type="rest"/> </transformation> </properties>