cpee 1.4.4 → 1.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39b88ac457f75fc94b5d5a42f3765c88e45387243d6c7ba90629beb80c7e941c
4
- data.tar.gz: b320a41183fb49980f04809b184912df78c9bf73370a412549248e8771dbbd25
3
+ metadata.gz: 6bd2ffa56e095259229143a90dfc8e4f1cebada7c731ba26df90c87940f151cb
4
+ data.tar.gz: cebd23cd8449cae789d603c3d6cb06d99c4275fc545412bf704873c9c41a24b4
5
5
  SHA512:
6
- metadata.gz: 980960599bdd17800ef6271ea2db42200196b2fefeafedca63607d3152788a7d79964a33337ce2d9fc9724d7101b8ce79111d84e1f1be4b0ea44f4f8b901c5d6
7
- data.tar.gz: eb6063c615d53906363cc59d280520fd802589f30b78bd2918067e24a8f47aecd48ecb47a305214166e4addc8b067d7a231461ed69d536c4c0a015b5178179fa
6
+ metadata.gz: 4229fda262df653bbda5dd4c66e21f86453c44e01e724b748603045ce6b7c0e4c480a64ddde73488d0f655591ead1b0da2d4e281acc87842937ebe1bc4ebf113
7
+ data.tar.gz: 41d2cd6e15cc2a3204d9caadcdb4d5855ea8c8d806f23f130449c7fe6c0b8e162a6fe323d43d0d22db97933e9ea5838d7ea64a72db533ca2451453a5e7ccf84d
data/cpee.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.4.4"
3
+ s.version = "1.4.5"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "Preliminary release of cloud process execution engine (cpee). If you just need workflow execution, without a rest/xmpp service exposing it, then use WEEL"
@@ -61,7 +61,6 @@ module CPEE
61
61
  @votes_results = {}
62
62
  @communication = {}
63
63
  @callbacks = {}
64
- @instance = EmptyWorkflow.new(self)
65
64
  @positions = []
66
65
  @attributes = {}
67
66
  @thread = nil
@@ -91,14 +90,18 @@ module CPEE
91
90
  doc.find("/p:properties/p:state").first.text = 'stopped'
92
91
  end
93
92
  end
94
- unserialize_handlerwrapper!
95
- unserialize_dataelements!
96
- unserialize_endpoints!
97
- unserialize_dsl!
98
- unserialize_positions!
99
-
100
93
  @uuid = sync_uuid!
101
- unserialize_attributes!
94
+ if @properties.data.find("string(/p:properties/p:state)") == "finished"
95
+ @instance = nil
96
+ else
97
+ @instance = EmptyWorkflow.new(self)
98
+ unserialize_handlerwrapper!
99
+ unserialize_dataelements!
100
+ unserialize_endpoints!
101
+ unserialize_dsl!
102
+ unserialize_positions!
103
+ unserialize_attributes!
104
+ end
102
105
  end
103
106
 
104
107
  def help
@@ -184,6 +187,10 @@ module CPEE
184
187
  @properties.data.find("string(/p:properties/p:attributes/p:info)")
185
188
  end
186
189
 
190
+ def finalize_if_finished
191
+ @instance = nil if @instance.state == :finished
192
+ end
193
+
187
194
  def serialize_dataelements! #{{{
188
195
  @properties.modify do |doc|
189
196
  node = doc.find("/p:properties/p:dataelements").first
@@ -17,6 +17,7 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
17
17
  controller = arguments[0]
18
18
  controller.serialize_state!
19
19
  controller.notify("state/change", :instance => controller.instance, :state => newstate)
20
+ controller.finalize_if_finished
20
21
  end # }}}
21
22
  def self::inform_syntax_error(arguments,err,code)# {{{
22
23
  controller = arguments[0]
@@ -0,0 +1,158 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>28f360f6-779f-4f62-93fe-46986830e4b0</uuid>
4
+ <info>Plain Instance</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>stopped</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions>
11
+ <a1>after</a1>
12
+ </positions>
13
+ <dataelements>
14
+ <persons>0</persons>
15
+ <card>Visa_12345</card>
16
+ <airline>FlyNiki</airline>
17
+ <hotels>["Mariott","Rathaus","Mariott"]</hotels>
18
+ <from>Vienna</from>
19
+ <to>Prague</to>
20
+ <costs>794.0</costs>
21
+ </dataelements>
22
+ <endpoints>
23
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
24
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
25
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
26
+ </endpoints>
27
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; "data.from"), ⭐(:name =&gt; :to, :value =&gt; "data.to"), ⭐(:name =&gt; :persons, :value =&gt; "data.persons")] }, finalize: &lt;&lt;-END
28
+ data.airline = result.value('id')
29
+ data.costs += result.value('costs').to_f
30
+ status.update 1, 'Hotel'
31
+ END
32
+ parallel do
33
+ loop pre_test{data.persons &gt; 0} do
34
+ parallel_branch data.persons do |p|
35
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; "data.to")] }, finalize: &lt;&lt;-END
36
+ data.hotels &lt;&lt; result.value('id')
37
+ data.costs += result.value('costs').to_f
38
+ END
39
+ end
40
+ manipulate :a3, &lt;&lt;-END
41
+ data.persons -= 1
42
+ END
43
+ end
44
+ end
45
+ choose :inclusive do
46
+ alternative test{data.costs &gt; 700} do
47
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; "data.costs")] }
48
+ end
49
+ end
50
+ </dsl>
51
+ <dslx>
52
+ <description xmlns="http://cpee.org/ns/description/1.0">
53
+ <call id="a1" endpoint="bookAir">
54
+ <parameters>
55
+ <label>Book Airline</label>
56
+ <method>:post</method>
57
+ <arguments>
58
+ <from>data.from</from>
59
+ <to>data.to</to>
60
+ <persons>data.persons</persons>
61
+ </arguments>
62
+ </parameters>
63
+ <finalize output="result">data.airline = result.value('id')
64
+ data.costs += result.value('costs').to_f
65
+ status.update 1, 'Hotel'</finalize>
66
+ </call>
67
+ <parallel>
68
+ <loop mode="pre_test" condition="data.persons &gt; 0">
69
+ <parallel_branch pass="data.persons" local="p">
70
+ <call id="a2" endpoint="bookHotel">
71
+ <parameters>
72
+ <label>Book Hotel</label>
73
+ <method>:post</method>
74
+ <arguments>
75
+ <to>data.to</to>
76
+ </arguments>
77
+ </parameters>
78
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
79
+ data.costs += result.value('costs').to_f</finalize>
80
+ </call>
81
+ </parallel_branch>
82
+ <manipulate id="a3">data.persons -= 1</manipulate>
83
+ </loop>
84
+ </parallel>
85
+ <choose mode="inclusive">
86
+ <alternative condition="data.costs &gt; 700">
87
+ <call id="a4" endpoint="approve">
88
+ <parameters>
89
+ <label>Approve Hotel</label>
90
+ <method>:post</method>
91
+ <arguments>
92
+ <costs>data.costs</costs>
93
+ </arguments>
94
+ </parameters>
95
+ </call>
96
+ </alternative>
97
+ </choose>
98
+ </description>
99
+ </dslx>
100
+ <status>
101
+ <id>1</id>
102
+ <message>Hotel</message>
103
+ </status>
104
+ <description>
105
+ <description xmlns="http://cpee.org/ns/description/1.0">
106
+ <call id="a1" endpoint="bookAir">
107
+ <parameters>
108
+ <label>Book Airline</label>
109
+ <method>:post</method>
110
+ <arguments>
111
+ <from>data.from</from>
112
+ <to>data.to</to>
113
+ <persons>data.persons</persons>
114
+ </arguments>
115
+ </parameters>
116
+ <finalize output="result">data.airline = result.value('id')
117
+ data.costs += result.value('costs').to_f
118
+ status.update 1, 'Hotel'</finalize>
119
+ </call>
120
+ <parallel>
121
+ <loop mode="pre_test" condition="data.persons &gt; 0">
122
+ <parallel_branch pass="data.persons" local="p">
123
+ <call id="a2" endpoint="bookHotel">
124
+ <parameters>
125
+ <label>Book Hotel</label>
126
+ <method>:post</method>
127
+ <arguments>
128
+ <to>data.to</to>
129
+ </arguments>
130
+ </parameters>
131
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
132
+ data.costs += result.value('costs').to_f</finalize>
133
+ </call>
134
+ </parallel_branch>
135
+ <manipulate id="a3">data.persons -= 1</manipulate>
136
+ </loop>
137
+ </parallel>
138
+ <choose mode="inclusive">
139
+ <alternative condition="data.costs &gt; 700">
140
+ <call id="a4" endpoint="approve">
141
+ <parameters>
142
+ <label>Approve Hotel</label>
143
+ <method>:post</method>
144
+ <arguments>
145
+ <costs>data.costs</costs>
146
+ </arguments>
147
+ </parameters>
148
+ </call>
149
+ </alternative>
150
+ </choose>
151
+ </description>
152
+ </description>
153
+ <transformation>
154
+ <description type="copy"/>
155
+ <dataelements type="rest"/>
156
+ <endpoints type="rest"/>
157
+ </transformation>
158
+ </properties>
@@ -0,0 +1,156 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>0df4196c-1713-4259-b70e-45dd5bbe0f09</uuid>
4
+ <info>Plain Instance</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>0</persons>
13
+ <card>Visa_12345</card>
14
+ <airline>FlyNiki</airline>
15
+ <hotels>["Rathaus","Mariott","Mariott"]</hotels>
16
+ <from>Vienna</from>
17
+ <to>Prague</to>
18
+ <costs>871.0</costs>
19
+ </dataelements>
20
+ <endpoints>
21
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
22
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
23
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
24
+ </endpoints>
25
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; "data.from"), ⭐(:name =&gt; :to, :value =&gt; "data.to"), ⭐(:name =&gt; :persons, :value =&gt; "data.persons")] }, finalize: &lt;&lt;-END
26
+ data.airline = result.value('id')
27
+ data.costs += result.value('costs').to_f
28
+ status.update 1, 'Hotel'
29
+ END
30
+ parallel do
31
+ loop pre_test{data.persons &gt; 0} do
32
+ parallel_branch data.persons do |p|
33
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; "data.to")] }, finalize: &lt;&lt;-END
34
+ data.hotels &lt;&lt; result.value('id')
35
+ data.costs += result.value('costs').to_f
36
+ END
37
+ end
38
+ manipulate :a3, &lt;&lt;-END
39
+ data.persons -= 1
40
+ END
41
+ end
42
+ end
43
+ choose :inclusive do
44
+ alternative test{data.costs &gt; 700} do
45
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; "data.costs")] }
46
+ end
47
+ end
48
+ </dsl>
49
+ <dslx>
50
+ <description xmlns="http://cpee.org/ns/description/1.0">
51
+ <call id="a1" endpoint="bookAir">
52
+ <parameters>
53
+ <label>Book Airline</label>
54
+ <method>:post</method>
55
+ <arguments>
56
+ <from>data.from</from>
57
+ <to>data.to</to>
58
+ <persons>data.persons</persons>
59
+ </arguments>
60
+ </parameters>
61
+ <finalize output="result">data.airline = result.value('id')
62
+ data.costs += result.value('costs').to_f
63
+ status.update 1, 'Hotel'</finalize>
64
+ </call>
65
+ <parallel>
66
+ <loop mode="pre_test" condition="data.persons &gt; 0">
67
+ <parallel_branch pass="data.persons" local="p">
68
+ <call id="a2" endpoint="bookHotel">
69
+ <parameters>
70
+ <label>Book Hotel</label>
71
+ <method>:post</method>
72
+ <arguments>
73
+ <to>data.to</to>
74
+ </arguments>
75
+ </parameters>
76
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
77
+ data.costs += result.value('costs').to_f</finalize>
78
+ </call>
79
+ </parallel_branch>
80
+ <manipulate id="a3">data.persons -= 1</manipulate>
81
+ </loop>
82
+ </parallel>
83
+ <choose mode="inclusive">
84
+ <alternative condition="data.costs &gt; 700">
85
+ <call id="a4" endpoint="approve">
86
+ <parameters>
87
+ <label>Approve Hotel</label>
88
+ <method>:post</method>
89
+ <arguments>
90
+ <costs>data.costs</costs>
91
+ </arguments>
92
+ </parameters>
93
+ </call>
94
+ </alternative>
95
+ </choose>
96
+ </description>
97
+ </dslx>
98
+ <status>
99
+ <id>1</id>
100
+ <message>Hotel</message>
101
+ </status>
102
+ <description>
103
+ <description xmlns="http://cpee.org/ns/description/1.0">
104
+ <call id="a1" endpoint="bookAir">
105
+ <parameters>
106
+ <label>Book Airline</label>
107
+ <method>:post</method>
108
+ <arguments>
109
+ <from>data.from</from>
110
+ <to>data.to</to>
111
+ <persons>data.persons</persons>
112
+ </arguments>
113
+ </parameters>
114
+ <finalize output="result">data.airline = result.value('id')
115
+ data.costs += result.value('costs').to_f
116
+ status.update 1, 'Hotel'</finalize>
117
+ </call>
118
+ <parallel>
119
+ <loop mode="pre_test" condition="data.persons &gt; 0">
120
+ <parallel_branch pass="data.persons" local="p">
121
+ <call id="a2" endpoint="bookHotel">
122
+ <parameters>
123
+ <label>Book Hotel</label>
124
+ <method>:post</method>
125
+ <arguments>
126
+ <to>data.to</to>
127
+ </arguments>
128
+ </parameters>
129
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
130
+ data.costs += result.value('costs').to_f</finalize>
131
+ </call>
132
+ </parallel_branch>
133
+ <manipulate id="a3">data.persons -= 1</manipulate>
134
+ </loop>
135
+ </parallel>
136
+ <choose mode="inclusive">
137
+ <alternative condition="data.costs &gt; 700">
138
+ <call id="a4" endpoint="approve">
139
+ <parameters>
140
+ <label>Approve Hotel</label>
141
+ <method>:post</method>
142
+ <arguments>
143
+ <costs>data.costs</costs>
144
+ </arguments>
145
+ </parameters>
146
+ </call>
147
+ </alternative>
148
+ </choose>
149
+ </description>
150
+ </description>
151
+ <transformation>
152
+ <description type="copy"/>
153
+ <dataelements type="rest"/>
154
+ <endpoints type="rest"/>
155
+ </transformation>
156
+ </properties>
@@ -0,0 +1,156 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>b5469607-e27a-4abd-b760-837384c1f35d</uuid>
4
+ <info>Plain Instance</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>0</persons>
13
+ <card>Visa_12345</card>
14
+ <airline>Aeroflot</airline>
15
+ <hotels>["Rathaus","Ibis","Ibis"]</hotels>
16
+ <from>Vienna</from>
17
+ <to>Prague</to>
18
+ <costs>765.0</costs>
19
+ </dataelements>
20
+ <endpoints>
21
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
22
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
23
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
24
+ </endpoints>
25
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; "data.from"), ⭐(:name =&gt; :to, :value =&gt; "data.to"), ⭐(:name =&gt; :persons, :value =&gt; "data.persons")] }, finalize: &lt;&lt;-END
26
+ data.airline = result.value('id')
27
+ data.costs += result.value('costs').to_f
28
+ status.update 1, 'Hotel'
29
+ END
30
+ parallel do
31
+ loop pre_test{data.persons &gt; 0} do
32
+ parallel_branch data.persons do |p|
33
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; "data.to")] }, finalize: &lt;&lt;-END
34
+ data.hotels &lt;&lt; result.value('id')
35
+ data.costs += result.value('costs').to_f
36
+ END
37
+ end
38
+ manipulate :a3, &lt;&lt;-END
39
+ data.persons -= 1
40
+ END
41
+ end
42
+ end
43
+ choose :inclusive do
44
+ alternative test{data.costs &gt; 700} do
45
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; "data.costs")] }
46
+ end
47
+ end
48
+ </dsl>
49
+ <dslx>
50
+ <description xmlns="http://cpee.org/ns/description/1.0">
51
+ <call id="a1" endpoint="bookAir">
52
+ <parameters>
53
+ <label>Book Airline</label>
54
+ <method>:post</method>
55
+ <arguments>
56
+ <from>data.from</from>
57
+ <to>data.to</to>
58
+ <persons>data.persons</persons>
59
+ </arguments>
60
+ </parameters>
61
+ <finalize output="result">data.airline = result.value('id')
62
+ data.costs += result.value('costs').to_f
63
+ status.update 1, 'Hotel'</finalize>
64
+ </call>
65
+ <parallel>
66
+ <loop mode="pre_test" condition="data.persons &gt; 0">
67
+ <parallel_branch pass="data.persons" local="p">
68
+ <call id="a2" endpoint="bookHotel">
69
+ <parameters>
70
+ <label>Book Hotel</label>
71
+ <method>:post</method>
72
+ <arguments>
73
+ <to>data.to</to>
74
+ </arguments>
75
+ </parameters>
76
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
77
+ data.costs += result.value('costs').to_f</finalize>
78
+ </call>
79
+ </parallel_branch>
80
+ <manipulate id="a3">data.persons -= 1</manipulate>
81
+ </loop>
82
+ </parallel>
83
+ <choose mode="inclusive">
84
+ <alternative condition="data.costs &gt; 700">
85
+ <call id="a4" endpoint="approve">
86
+ <parameters>
87
+ <label>Approve Hotel</label>
88
+ <method>:post</method>
89
+ <arguments>
90
+ <costs>data.costs</costs>
91
+ </arguments>
92
+ </parameters>
93
+ </call>
94
+ </alternative>
95
+ </choose>
96
+ </description>
97
+ </dslx>
98
+ <status>
99
+ <id>1</id>
100
+ <message>Hotel</message>
101
+ </status>
102
+ <description>
103
+ <description xmlns="http://cpee.org/ns/description/1.0">
104
+ <call id="a1" endpoint="bookAir">
105
+ <parameters>
106
+ <label>Book Airline</label>
107
+ <method>:post</method>
108
+ <arguments>
109
+ <from>data.from</from>
110
+ <to>data.to</to>
111
+ <persons>data.persons</persons>
112
+ </arguments>
113
+ </parameters>
114
+ <finalize output="result">data.airline = result.value('id')
115
+ data.costs += result.value('costs').to_f
116
+ status.update 1, 'Hotel'</finalize>
117
+ </call>
118
+ <parallel>
119
+ <loop mode="pre_test" condition="data.persons &gt; 0">
120
+ <parallel_branch pass="data.persons" local="p">
121
+ <call id="a2" endpoint="bookHotel">
122
+ <parameters>
123
+ <label>Book Hotel</label>
124
+ <method>:post</method>
125
+ <arguments>
126
+ <to>data.to</to>
127
+ </arguments>
128
+ </parameters>
129
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
130
+ data.costs += result.value('costs').to_f</finalize>
131
+ </call>
132
+ </parallel_branch>
133
+ <manipulate id="a3">data.persons -= 1</manipulate>
134
+ </loop>
135
+ </parallel>
136
+ <choose mode="inclusive">
137
+ <alternative condition="data.costs &gt; 700">
138
+ <call id="a4" endpoint="approve">
139
+ <parameters>
140
+ <label>Approve Hotel</label>
141
+ <method>:post</method>
142
+ <arguments>
143
+ <costs>data.costs</costs>
144
+ </arguments>
145
+ </parameters>
146
+ </call>
147
+ </alternative>
148
+ </choose>
149
+ </description>
150
+ </description>
151
+ <transformation>
152
+ <description type="copy"/>
153
+ <dataelements type="rest"/>
154
+ <endpoints type="rest"/>
155
+ </transformation>
156
+ </properties>
@@ -0,0 +1,156 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>af103b85-97cb-4aeb-b1ed-00da3b5958ab</uuid>
4
+ <info>Plain Instance</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>0</persons>
13
+ <card>Visa_12345</card>
14
+ <airline>Lufthansa</airline>
15
+ <hotels>["Mariott","Mariott","Ibis"]</hotels>
16
+ <from>Vienna</from>
17
+ <to>Prague</to>
18
+ <costs>1021.0</costs>
19
+ </dataelements>
20
+ <endpoints>
21
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
22
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
23
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
24
+ </endpoints>
25
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; "data.from"), ⭐(:name =&gt; :to, :value =&gt; "data.to"), ⭐(:name =&gt; :persons, :value =&gt; "data.persons")] }, finalize: &lt;&lt;-END
26
+ data.airline = result.value('id')
27
+ data.costs += result.value('costs').to_f
28
+ status.update 1, 'Hotel'
29
+ END
30
+ parallel do
31
+ loop pre_test{data.persons &gt; 0} do
32
+ parallel_branch data.persons do |p|
33
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; "data.to")] }, finalize: &lt;&lt;-END
34
+ data.hotels &lt;&lt; result.value('id')
35
+ data.costs += result.value('costs').to_f
36
+ END
37
+ end
38
+ manipulate :a3, &lt;&lt;-END
39
+ data.persons -= 1
40
+ END
41
+ end
42
+ end
43
+ choose :inclusive do
44
+ alternative test{data.costs &gt; 700} do
45
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; "data.costs")] }
46
+ end
47
+ end
48
+ </dsl>
49
+ <dslx>
50
+ <description xmlns="http://cpee.org/ns/description/1.0">
51
+ <call id="a1" endpoint="bookAir">
52
+ <parameters>
53
+ <label>Book Airline</label>
54
+ <method>:post</method>
55
+ <arguments>
56
+ <from>data.from</from>
57
+ <to>data.to</to>
58
+ <persons>data.persons</persons>
59
+ </arguments>
60
+ </parameters>
61
+ <finalize output="result">data.airline = result.value('id')
62
+ data.costs += result.value('costs').to_f
63
+ status.update 1, 'Hotel'</finalize>
64
+ </call>
65
+ <parallel>
66
+ <loop mode="pre_test" condition="data.persons &gt; 0">
67
+ <parallel_branch pass="data.persons" local="p">
68
+ <call id="a2" endpoint="bookHotel">
69
+ <parameters>
70
+ <label>Book Hotel</label>
71
+ <method>:post</method>
72
+ <arguments>
73
+ <to>data.to</to>
74
+ </arguments>
75
+ </parameters>
76
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
77
+ data.costs += result.value('costs').to_f</finalize>
78
+ </call>
79
+ </parallel_branch>
80
+ <manipulate id="a3">data.persons -= 1</manipulate>
81
+ </loop>
82
+ </parallel>
83
+ <choose mode="inclusive">
84
+ <alternative condition="data.costs &gt; 700">
85
+ <call id="a4" endpoint="approve">
86
+ <parameters>
87
+ <label>Approve Hotel</label>
88
+ <method>:post</method>
89
+ <arguments>
90
+ <costs>data.costs</costs>
91
+ </arguments>
92
+ </parameters>
93
+ </call>
94
+ </alternative>
95
+ </choose>
96
+ </description>
97
+ </dslx>
98
+ <status>
99
+ <id>1</id>
100
+ <message>Hotel</message>
101
+ </status>
102
+ <description>
103
+ <description xmlns="http://cpee.org/ns/description/1.0">
104
+ <call id="a1" endpoint="bookAir">
105
+ <parameters>
106
+ <label>Book Airline</label>
107
+ <method>:post</method>
108
+ <arguments>
109
+ <from>data.from</from>
110
+ <to>data.to</to>
111
+ <persons>data.persons</persons>
112
+ </arguments>
113
+ </parameters>
114
+ <finalize output="result">data.airline = result.value('id')
115
+ data.costs += result.value('costs').to_f
116
+ status.update 1, 'Hotel'</finalize>
117
+ </call>
118
+ <parallel>
119
+ <loop mode="pre_test" condition="data.persons &gt; 0">
120
+ <parallel_branch pass="data.persons" local="p">
121
+ <call id="a2" endpoint="bookHotel">
122
+ <parameters>
123
+ <label>Book Hotel</label>
124
+ <method>:post</method>
125
+ <arguments>
126
+ <to>data.to</to>
127
+ </arguments>
128
+ </parameters>
129
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
130
+ data.costs += result.value('costs').to_f</finalize>
131
+ </call>
132
+ </parallel_branch>
133
+ <manipulate id="a3">data.persons -= 1</manipulate>
134
+ </loop>
135
+ </parallel>
136
+ <choose mode="inclusive">
137
+ <alternative condition="data.costs &gt; 700">
138
+ <call id="a4" endpoint="approve">
139
+ <parameters>
140
+ <label>Approve Hotel</label>
141
+ <method>:post</method>
142
+ <arguments>
143
+ <costs>data.costs</costs>
144
+ </arguments>
145
+ </parameters>
146
+ </call>
147
+ </alternative>
148
+ </choose>
149
+ </description>
150
+ </description>
151
+ <transformation>
152
+ <description type="copy"/>
153
+ <dataelements type="rest"/>
154
+ <endpoints type="rest"/>
155
+ </transformation>
156
+ </properties>
@@ -0,0 +1,156 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>9fd8e466-25f5-4018-b3fe-b09b50393eaa</uuid>
4
+ <info>Plain Instance</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>0</persons>
13
+ <card>Visa_12345</card>
14
+ <airline>American Airlines</airline>
15
+ <hotels>["Mariott","Ibis","Rathaus"]</hotels>
16
+ <from>Vienna</from>
17
+ <to>Prague</to>
18
+ <costs>513.0</costs>
19
+ </dataelements>
20
+ <endpoints>
21
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
22
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
23
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
24
+ </endpoints>
25
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; "data.from"), ⭐(:name =&gt; :to, :value =&gt; "data.to"), ⭐(:name =&gt; :persons, :value =&gt; "data.persons")] }, finalize: &lt;&lt;-END
26
+ data.airline = result.value('id')
27
+ data.costs += result.value('costs').to_f
28
+ status.update 1, 'Hotel'
29
+ END
30
+ parallel do
31
+ loop pre_test{data.persons &gt; 0} do
32
+ parallel_branch data.persons do |p|
33
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; "data.to")] }, finalize: &lt;&lt;-END
34
+ data.hotels &lt;&lt; result.value('id')
35
+ data.costs += result.value('costs').to_f
36
+ END
37
+ end
38
+ manipulate :a3, &lt;&lt;-END
39
+ data.persons -= 1
40
+ END
41
+ end
42
+ end
43
+ choose :inclusive do
44
+ alternative test{data.costs &gt; 700} do
45
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; "data.costs")] }
46
+ end
47
+ end
48
+ </dsl>
49
+ <dslx>
50
+ <description xmlns="http://cpee.org/ns/description/1.0">
51
+ <call id="a1" endpoint="bookAir">
52
+ <parameters>
53
+ <label>Book Airline</label>
54
+ <method>:post</method>
55
+ <arguments>
56
+ <from>data.from</from>
57
+ <to>data.to</to>
58
+ <persons>data.persons</persons>
59
+ </arguments>
60
+ </parameters>
61
+ <finalize output="result">data.airline = result.value('id')
62
+ data.costs += result.value('costs').to_f
63
+ status.update 1, 'Hotel'</finalize>
64
+ </call>
65
+ <parallel>
66
+ <loop mode="pre_test" condition="data.persons &gt; 0">
67
+ <parallel_branch pass="data.persons" local="p">
68
+ <call id="a2" endpoint="bookHotel">
69
+ <parameters>
70
+ <label>Book Hotel</label>
71
+ <method>:post</method>
72
+ <arguments>
73
+ <to>data.to</to>
74
+ </arguments>
75
+ </parameters>
76
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
77
+ data.costs += result.value('costs').to_f</finalize>
78
+ </call>
79
+ </parallel_branch>
80
+ <manipulate id="a3">data.persons -= 1</manipulate>
81
+ </loop>
82
+ </parallel>
83
+ <choose mode="inclusive">
84
+ <alternative condition="data.costs &gt; 700">
85
+ <call id="a4" endpoint="approve">
86
+ <parameters>
87
+ <label>Approve Hotel</label>
88
+ <method>:post</method>
89
+ <arguments>
90
+ <costs>data.costs</costs>
91
+ </arguments>
92
+ </parameters>
93
+ </call>
94
+ </alternative>
95
+ </choose>
96
+ </description>
97
+ </dslx>
98
+ <status>
99
+ <id>1</id>
100
+ <message>Hotel</message>
101
+ </status>
102
+ <description>
103
+ <description xmlns="http://cpee.org/ns/description/1.0">
104
+ <call id="a1" endpoint="bookAir">
105
+ <parameters>
106
+ <label>Book Airline</label>
107
+ <method>:post</method>
108
+ <arguments>
109
+ <from>data.from</from>
110
+ <to>data.to</to>
111
+ <persons>data.persons</persons>
112
+ </arguments>
113
+ </parameters>
114
+ <finalize output="result">data.airline = result.value('id')
115
+ data.costs += result.value('costs').to_f
116
+ status.update 1, 'Hotel'</finalize>
117
+ </call>
118
+ <parallel>
119
+ <loop mode="pre_test" condition="data.persons &gt; 0">
120
+ <parallel_branch pass="data.persons" local="p">
121
+ <call id="a2" endpoint="bookHotel">
122
+ <parameters>
123
+ <label>Book Hotel</label>
124
+ <method>:post</method>
125
+ <arguments>
126
+ <to>data.to</to>
127
+ </arguments>
128
+ </parameters>
129
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
130
+ data.costs += result.value('costs').to_f</finalize>
131
+ </call>
132
+ </parallel_branch>
133
+ <manipulate id="a3">data.persons -= 1</manipulate>
134
+ </loop>
135
+ </parallel>
136
+ <choose mode="inclusive">
137
+ <alternative condition="data.costs &gt; 700">
138
+ <call id="a4" endpoint="approve">
139
+ <parameters>
140
+ <label>Approve Hotel</label>
141
+ <method>:post</method>
142
+ <arguments>
143
+ <costs>data.costs</costs>
144
+ </arguments>
145
+ </parameters>
146
+ </call>
147
+ </alternative>
148
+ </choose>
149
+ </description>
150
+ </description>
151
+ <transformation>
152
+ <description type="copy"/>
153
+ <dataelements type="rest"/>
154
+ <endpoints type="rest"/>
155
+ </transformation>
156
+ </properties>
@@ -0,0 +1,156 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>aba24a2f-5486-4748-8bb7-078af5f5207c</uuid>
4
+ <info>Plain Instance</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>0</persons>
13
+ <card>Visa_12345</card>
14
+ <airline>American Airlines</airline>
15
+ <hotels>["Ibis","Mariott","Ibis"]</hotels>
16
+ <from>Vienna</from>
17
+ <to>Prague</to>
18
+ <costs>1247.0</costs>
19
+ </dataelements>
20
+ <endpoints>
21
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
22
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
23
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
24
+ </endpoints>
25
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; "data.from"), ⭐(:name =&gt; :to, :value =&gt; "data.to"), ⭐(:name =&gt; :persons, :value =&gt; "data.persons")] }, finalize: &lt;&lt;-END
26
+ data.airline = result.value('id')
27
+ data.costs += result.value('costs').to_f
28
+ status.update 1, 'Hotel'
29
+ END
30
+ parallel do
31
+ loop pre_test{data.persons &gt; 0} do
32
+ parallel_branch data.persons do |p|
33
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; "data.to")] }, finalize: &lt;&lt;-END
34
+ data.hotels &lt;&lt; result.value('id')
35
+ data.costs += result.value('costs').to_f
36
+ END
37
+ end
38
+ manipulate :a3, &lt;&lt;-END
39
+ data.persons -= 1
40
+ END
41
+ end
42
+ end
43
+ choose :inclusive do
44
+ alternative test{data.costs &gt; 700} do
45
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; "data.costs")] }
46
+ end
47
+ end
48
+ </dsl>
49
+ <dslx>
50
+ <description xmlns="http://cpee.org/ns/description/1.0">
51
+ <call id="a1" endpoint="bookAir">
52
+ <parameters>
53
+ <label>Book Airline</label>
54
+ <method>:post</method>
55
+ <arguments>
56
+ <from>data.from</from>
57
+ <to>data.to</to>
58
+ <persons>data.persons</persons>
59
+ </arguments>
60
+ </parameters>
61
+ <finalize output="result">data.airline = result.value('id')
62
+ data.costs += result.value('costs').to_f
63
+ status.update 1, 'Hotel'</finalize>
64
+ </call>
65
+ <parallel>
66
+ <loop mode="pre_test" condition="data.persons &gt; 0">
67
+ <parallel_branch pass="data.persons" local="p">
68
+ <call id="a2" endpoint="bookHotel">
69
+ <parameters>
70
+ <label>Book Hotel</label>
71
+ <method>:post</method>
72
+ <arguments>
73
+ <to>data.to</to>
74
+ </arguments>
75
+ </parameters>
76
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
77
+ data.costs += result.value('costs').to_f</finalize>
78
+ </call>
79
+ </parallel_branch>
80
+ <manipulate id="a3">data.persons -= 1</manipulate>
81
+ </loop>
82
+ </parallel>
83
+ <choose mode="inclusive">
84
+ <alternative condition="data.costs &gt; 700">
85
+ <call id="a4" endpoint="approve">
86
+ <parameters>
87
+ <label>Approve Hotel</label>
88
+ <method>:post</method>
89
+ <arguments>
90
+ <costs>data.costs</costs>
91
+ </arguments>
92
+ </parameters>
93
+ </call>
94
+ </alternative>
95
+ </choose>
96
+ </description>
97
+ </dslx>
98
+ <status>
99
+ <id>1</id>
100
+ <message>Hotel</message>
101
+ </status>
102
+ <description>
103
+ <description xmlns="http://cpee.org/ns/description/1.0">
104
+ <call id="a1" endpoint="bookAir">
105
+ <parameters>
106
+ <label>Book Airline</label>
107
+ <method>:post</method>
108
+ <arguments>
109
+ <from>data.from</from>
110
+ <to>data.to</to>
111
+ <persons>data.persons</persons>
112
+ </arguments>
113
+ </parameters>
114
+ <finalize output="result">data.airline = result.value('id')
115
+ data.costs += result.value('costs').to_f
116
+ status.update 1, 'Hotel'</finalize>
117
+ </call>
118
+ <parallel>
119
+ <loop mode="pre_test" condition="data.persons &gt; 0">
120
+ <parallel_branch pass="data.persons" local="p">
121
+ <call id="a2" endpoint="bookHotel">
122
+ <parameters>
123
+ <label>Book Hotel</label>
124
+ <method>:post</method>
125
+ <arguments>
126
+ <to>data.to</to>
127
+ </arguments>
128
+ </parameters>
129
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
130
+ data.costs += result.value('costs').to_f</finalize>
131
+ </call>
132
+ </parallel_branch>
133
+ <manipulate id="a3">data.persons -= 1</manipulate>
134
+ </loop>
135
+ </parallel>
136
+ <choose mode="inclusive">
137
+ <alternative condition="data.costs &gt; 700">
138
+ <call id="a4" endpoint="approve">
139
+ <parameters>
140
+ <label>Approve Hotel</label>
141
+ <method>:post</method>
142
+ <arguments>
143
+ <costs>data.costs</costs>
144
+ </arguments>
145
+ </parameters>
146
+ </call>
147
+ </alternative>
148
+ </choose>
149
+ </description>
150
+ </description>
151
+ <transformation>
152
+ <description type="copy"/>
153
+ <dataelements type="rest"/>
154
+ <endpoints type="rest"/>
155
+ </transformation>
156
+ </properties>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.4
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
@@ -348,7 +348,13 @@ files:
348
348
  - server/instances/65/properties.xml
349
349
  - server/instances/66/properties.xml
350
350
  - server/instances/67/properties.xml
351
+ - server/instances/68/properties.xml
352
+ - server/instances/69/properties.xml
351
353
  - server/instances/7/properties.xml
354
+ - server/instances/70/properties.xml
355
+ - server/instances/71/properties.xml
356
+ - server/instances/72/properties.xml
357
+ - server/instances/73/properties.xml
352
358
  - server/instances/8/properties.xml
353
359
  - server/instances/9/properties.xml
354
360
  - server/resources/base.xml
@@ -362,9 +368,7 @@ files:
362
368
  - server/resources/topics.xml
363
369
  - server/resources/transformation.xml
364
370
  - server/resources/transformation_dslx.xsl
365
- - server/server.pid
366
371
  - server/server.rb
367
- - server/test.rb
368
372
  - test/callback.rb
369
373
  - tools/cpee
370
374
  - tools/instantiation/instantiation
data/server/server.pid DELETED
@@ -1 +0,0 @@
1
- 9815
data/server/test.rb DELETED
@@ -1,3 +0,0 @@
1
- def manipulate(position, parameters={}, script=nil, &scriptblk)
2
- puts script
3
- end