<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0"> <attributes> <uuid>43593f10-b23f-4d59-b1a6-f2e26c4b2d7c</uuid> <info>Enter info here</info> <modeltype>CPEE</modeltype> <theme>default</theme> </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: { :label => "Book Airline", :method => :post, :arguments => [⭐(:name => :from, :value => data.from), ⭐(:name => :to, :value => data.to), ⭐(:name => :persons, :value => 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: { :label => "Book Hotel", :method => :post, :arguments => [⭐(:name => :to, :value => 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: { :label => "Approve Hotel", :method => :post, :arguments => [⭐(:name => :costs, :value => data.costs)] } end end </dsl> <dslx> <description xmlns="http://cpee.org/ns/description/1.0"> <call id="a1" endpoint="bookAir"> <parameters> <label>Book Airline</label> <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> <label>Book Hotel</label> <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 mode="inclusive"> <alternative condition="data.costs > 700"> <call id="a4" endpoint="approve"> <parameters> <label>Approve Hotel</label> <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> <label>Book Airline</label> <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> <label>Book Hotel</label> <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 mode="inclusive"> <alternative condition="data.costs > 700"> <call id="a4" endpoint="approve"> <parameters> <label>Approve Hotel</label> <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>