cpee 1.4.32 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.4.32"
3
+ s.version = "1.5.0"
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"
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.executables = ['cpee']
15
15
  s.test_files = Dir['{test/*,test/*/tc_*.rb}']
16
16
 
17
- s.required_ruby_version = '>=2.3.0'
17
+ s.required_ruby_version = '>=2.4.0'
18
18
 
19
19
  s.authors = ['Juergen eTM Mangler','Ralph Vigne','Gerhard Stuermer','Florian Stertz']
20
20
 
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.homepage = 'http://cpee.org/'
23
23
 
24
24
  s.add_runtime_dependency 'riddl', '~> 0.99'
25
- s.add_runtime_dependency 'weel', '~> 1.99'
25
+ s.add_runtime_dependency 'weel', '~> 1.99', '>= 1.99.76'
26
26
  s.add_runtime_dependency 'savon', '~> 2'
27
27
  s.add_runtime_dependency 'highline', '~> 1.6'
28
28
  s.add_runtime_dependency 'json', '~>2.1'
@@ -38,19 +38,31 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
38
38
  controller.notify("position/change", ipc)
39
39
  end # }}}
40
40
 
41
- def initialize(arguments,endpoint=nil,position=nil,continue=nil) # {{{
41
+ def initialize(arguments,position=nil,continue=nil) # {{{
42
42
  @controller = arguments[0]
43
43
  @handler_continue = continue
44
- @handler_endpoint = endpoint
45
44
  @handler_position = position
46
45
  @handler_passthrough = nil
47
46
  @handler_returnValue = nil
48
47
  @label = ''
49
48
  end # }}}
50
49
 
50
+ def prepare(readonly, endpoints, parameters)
51
+ @handler_endpoint = endpoints.is_a?(Array) ? endpoints.map{ |ep| readonly.endpoints[ep] }.compact : readonly.endpoints[endpoints]
52
+ parameters[:arguments].each do |ele|
53
+ if ele.value.is_a?(Proc)
54
+ ele.value = readonly.instance_exec &ele.value
55
+ end
56
+ end
57
+ parameters
58
+ end
59
+
51
60
  def activity_handle(passthrough, parameters) # {{{
61
+ raise "Wrong endpoint" if @handler_endpoint.nil? || @handler_endpoint.empty?
52
62
  @label = parameters[:label]
53
63
  @sensors = parameters[:sensors]
64
+ @aggregators = parameters[:aggregators]
65
+ @costs = parameters[:costs]
54
66
  @controller.notify("activity/calling", :instance => @controller.instance, :instance_uuid => @controller.uuid, :label => @label, :instance_name => @controller.info, :activity => @handler_position, :passthrough => passthrough, :endpoint => @handler_endpoint, :parameters => parameters, :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
55
67
  if passthrough.to_s.empty?
56
68
  if @handler_endpoint.start_with?('opc.tcp')
@@ -138,19 +150,20 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
138
150
  @handler_passthrough = callback
139
151
 
140
152
  status, result, headers = client.request type => params
141
-
142
- raise "Could not #{type || 'post'} #{tendpoint} - status: #{status}: #{result&.dig(0)&.value&.read}" if status < 200 || status >= 300
143
-
144
- if headers['CPEE_INSTANTIATION']
145
- @controller.notify("task/instantiation", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => CPEE::ValueHelper.parse(headers['CPEE_INSTANTIATION']), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
146
- end
147
- if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
148
- headers['CPEE_UPDATE'] = true
149
- callback result, headers
150
- elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
151
- # do nothing, later on things will happend
153
+ if status < 200 || status >= 300
154
+ callback([ Riddl::Parameter::Complex.new('error','application/json',StringIO.new(JSON::generate({ 'status' => status, 'error' => result[0].value.read }))) ], 'CPEE_SALVAGE' => true)
152
155
  else
153
- callback result
156
+ if headers['CPEE_INSTANTIATION']
157
+ @controller.notify("task/instantiation", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => CPEE::ValueHelper.parse(headers['CPEE_INSTANTIATION']), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
158
+ end
159
+ if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
160
+ headers['CPEE_UPDATE'] = true
161
+ callback result, headers
162
+ elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
163
+ # do nothing, later on things will happend
164
+ else
165
+ callback result
166
+ end
154
167
  end
155
168
  end
156
169
  else
@@ -241,7 +254,6 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
241
254
  result
242
255
  end
243
256
 
244
-
245
257
  def structurize_result(result)
246
258
  result.map do |r|
247
259
  if r.is_a? Riddl::Parameter::Simple
@@ -269,7 +281,7 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
269
281
  end
270
282
 
271
283
  def callback(result=nil,options={})
272
- @controller.notify("activity/receiving", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => structurize_result(result), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated, :sensors => @sensors)
284
+ @controller.notify("activity/receiving", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => structurize_result(result), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated, :sensors => @sensors, :aggregators => @aggregators, :costs => @costs)
273
285
  result = simplify_result(result)
274
286
  if options['CPEE_UPDATE']
275
287
  @handler_returnValue = result
@@ -281,7 +293,11 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
281
293
  @controller.callbacks.delete(@handler_passthrough)
282
294
  @handler_returnValue = result
283
295
  @handler_passthrough = nil
284
- @handler_continue.continue
296
+ if options['CPEE_SALVAGE']
297
+ @handler_continue.continue WEEL::Signal::Salvage
298
+ else
299
+ @handler_continue.continue
300
+ end
285
301
  end
286
302
  end
287
303
 
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0"?>
2
+ <testset>
3
+ <positions><!--{{{-->
4
+ <a1>after</a1>
5
+ </positions><!--}}}-->
6
+ <attributes>
7
+ <info xmlns="http://riddl.org/ns/common-patterns/properties/1.0">Linear</info>
8
+ <modeltype xmlns="http://riddl.org/ns/common-patterns/properties/1.0">CPEE</modeltype>
9
+ <theme>default</theme>
10
+ </attributes>
11
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
12
+ <dataelements><!--{{{-->
13
+ <x/>
14
+ </dataelements><!--}}}-->
15
+ <handlers/>
16
+ <endpoints><!--{{{-->
17
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
18
+ </endpoints><!--}}}-->
19
+ <description>
20
+ <description xmlns="http://cpee.org/ns/description/1.0"><!--{{{-->
21
+ <call id="a1" endpoint="timeout">
22
+ <parameters><!--{{{-->
23
+ <label>Step 1</label>
24
+ <method>:post</method>
25
+ <arguments>
26
+ <timeout>2</timeout>
27
+ </arguments>
28
+ </parameters><!--}}}-->
29
+ <finalize output="result">data.x += "a1,"</finalize>
30
+ </call>
31
+ <call id="a2" endpoint="timeout">
32
+ <parameters><!--{{{-->
33
+ <label>Step 2</label>
34
+ <method>:post</method>
35
+ <arguments>
36
+ <timeout>4</timeout>
37
+ </arguments>
38
+ </parameters><!--}}}-->
39
+ <finalize output="result">data.x += "a2,"</finalize>
40
+ </call>
41
+ <call id="a3" endpoint="timeout">
42
+ <parameters><!--{{{-->
43
+ <label>Step 3</label>
44
+ <method>:post</method>
45
+ <arguments>
46
+ <timeout>4</timeout>
47
+ </arguments>
48
+ </parameters><!--}}}-->
49
+ <finalize output="result">data.x += "a3,"</finalize>
50
+ </call>
51
+ </description><!--}}}-->
52
+ </description>
53
+ <transformation>
54
+ <description type='copy'/>
55
+ <dataelements type='rest'/>
56
+ <endpoints type='rest'/>
57
+ </transformation>
58
+ </testset>
@@ -0,0 +1,60 @@
1
+ <?xml version="1.0"?>
2
+ <testset>
3
+ <positions><!--{{{-->
4
+ <a1>after</a1>
5
+ </positions><!--}}}-->
6
+ <attributes>
7
+ <info xmlns="http://riddl.org/ns/common-patterns/properties/1.0">Linear</info>
8
+ <modeltype xmlns="http://riddl.org/ns/common-patterns/properties/1.0">CPEE</modeltype>
9
+ <theme>default</theme>
10
+ </attributes>
11
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
12
+ <dataelements><!--{{{-->
13
+ <x/>
14
+ </dataelements><!--}}}-->
15
+ <handlers/>
16
+ <endpoints><!--{{{-->
17
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
18
+ </endpoints><!--}}}-->
19
+ <description>
20
+ <description xmlns="http://cpee.org/ns/description/1.0"><!--{{{-->
21
+ <call id="a1" endpoint="timeout">
22
+ <parameters><!--{{{-->
23
+ <label>Step 1</label>
24
+ <method>:post</method>
25
+ <arguments>
26
+ <timeout>2</timeout>
27
+ </arguments>
28
+ </parameters><!--}}}-->
29
+ <code>
30
+ <finalize output="result">data.x += "a1,"</finalize>
31
+ </code>
32
+ </call>
33
+ <call id="a2" endpoint="timeout">
34
+ <parameters><!--{{{-->
35
+ <label>Step 2</label>
36
+ <method>:post</method>
37
+ <arguments>
38
+ <timeout>4</timeout>
39
+ </arguments>
40
+ </parameters><!--}}}-->
41
+ <finalize output="result">data.x += "a2,"</finalize>
42
+ </call>
43
+ <call id="a3" endpoint="timeout">
44
+ <parameters><!--{{{-->
45
+ <label>Step 3</label>
46
+ <method>:post</method>
47
+ <arguments>
48
+ <timeout>4</timeout>
49
+ </arguments>
50
+ </parameters><!--}}}-->
51
+ <finalize output="result">data.x += "a3,"</finalize>
52
+ </call>
53
+ </description><!--}}}-->
54
+ </description>
55
+ <transformation>
56
+ <description type='copy'/>
57
+ <dataelements type='rest'/>
58
+ <endpoints type='rest'/>
59
+ </transformation>
60
+ </testset>
@@ -49,18 +49,34 @@
49
49
  <xsl:text>, parameters: { </xsl:text>
50
50
  <xsl:apply-templates select="d:parameters"/>
51
51
  <xsl:text> }</xsl:text>
52
- <xsl:if test="d:finalize and d:finalize/text()">
52
+ <xsl:if test="(d:finalize or d:code/d:finalize) and (d:finalize/text() or d:code/d:finalize/text())">
53
53
  <xsl:text>, finalize: &lt;&lt;-END</xsl:text>
54
54
  </xsl:if>
55
- <xsl:if test="d:update and d:update/text()">
55
+ <xsl:if test="(d:update or d:code/d:update) and (d:update/text() or d:code/d:update/text())">
56
56
  <xsl:text>, update: &lt;&lt;-END</xsl:text>
57
57
  </xsl:if>
58
- <xsl:apply-templates select="d:finalize" mode="part-of-call">
58
+ <xsl:if test="(d:prepare or d:code/d:prepare) and (d:prepare/text() or d:code/d:prepare/text())">
59
+ <xsl:text>, prepare: &lt;&lt;-END</xsl:text>
60
+ </xsl:if>
61
+ <xsl:if test="(d:rescue or d:code/d:rescue) and (d:rescue/text() or d:code/d:rescue/text())">
62
+ <xsl:text>, salvage: &lt;&lt;-END</xsl:text>
63
+ </xsl:if>
64
+ <xsl:apply-templates select="d:finalize | d:code/d:finalize" mode="part-of-call">
59
65
  <xsl:with-param name="myspace">
60
66
  <xsl:value-of select="$myspace"/>
61
67
  </xsl:with-param>
62
68
  </xsl:apply-templates>
63
- <xsl:apply-templates select="d:update" mode="part-of-call">
69
+ <xsl:apply-templates select="d:update | d:code/d:update" mode="part-of-call">
70
+ <xsl:with-param name="myspace">
71
+ <xsl:value-of select="$myspace"/>
72
+ </xsl:with-param>
73
+ </xsl:apply-templates>
74
+ <xsl:apply-templates select="d:prepare | d:code/d:prepare" mode="part-of-call">
75
+ <xsl:with-param name="myspace">
76
+ <xsl:value-of select="$myspace"/>
77
+ </xsl:with-param>
78
+ </xsl:apply-templates>
79
+ <xsl:apply-templates select="d:rescue | d:code/d:rescue" mode="part-of-call">
64
80
  <xsl:with-param name="myspace">
65
81
  <xsl:value-of select="$myspace"/>
66
82
  </xsl:with-param>
@@ -390,7 +406,7 @@
390
406
  <xsl:value-of select="name()"/>
391
407
  </xsl:otherwise>
392
408
  </xsl:choose>
393
- <xsl:text>, :value =&gt; </xsl:text>
409
+ <xsl:text>, :value =&gt; -&gt;{ </xsl:text>
394
410
  <xsl:choose>
395
411
  <xsl:when test="not(node())">
396
412
  <xsl:text>nil</xsl:text>
@@ -423,6 +439,7 @@
423
439
  </xsl:choose>
424
440
  </xsl:otherwise>
425
441
  </xsl:choose>
442
+ <xsl:text> }</xsl:text>
426
443
  <xsl:for-each select="@*">
427
444
  <xsl:text>, :</xsl:text>
428
445
  <xsl:value-of select="name()"/>
@@ -433,7 +450,7 @@
433
450
  <xsl:text>)</xsl:text>
434
451
  </xsl:template>
435
452
 
436
- <xsl:template match="d:finalize | d:update" mode="part-of-call">
453
+ <xsl:template match="d:finalize | d:update | d:prepare | d:rescue" mode="part-of-call">
437
454
  <xsl:param name="myspace"/>
438
455
  <xsl:call-template name="print-content">
439
456
  <xsl:with-param name="myspace">
@@ -557,18 +574,18 @@
557
574
  <xsl:value-of select="."/>
558
575
  </xsl:when>
559
576
  <xsl:otherwise>
560
- <xsl:text>\"</xsl:text>
561
577
  <xsl:choose>
562
578
  <xsl:when test="substring(.,1,1) = '!'">
563
579
  <xsl:text>#{</xsl:text>
564
580
  <xsl:value-of select="str:replace(str:replace(substring(.,2),'\','\\'),'&quot;','\\\&quot;')"/>
565
- <xsl:text>}</xsl:text>
581
+ <xsl:text>.to_json}</xsl:text>
566
582
  </xsl:when>
567
583
  <xsl:otherwise>
584
+ <xsl:text>\"</xsl:text>
568
585
  <xsl:value-of select="str:replace(str:replace(.,'\','\\'),'&quot;','\\\&quot;')"/>
586
+ <xsl:text>\"</xsl:text>
569
587
  </xsl:otherwise>
570
588
  </xsl:choose>
571
- <xsl:text>\"</xsl:text>
572
589
  </xsl:otherwise>
573
590
  </xsl:choose>
574
591
  </xsl:when>
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.32
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: tools
13
13
  cert_chain: []
14
- date: 2019-09-24 00:00:00.000000000 Z
14
+ date: 2019-10-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: riddl
@@ -34,6 +34,9 @@ dependencies:
34
34
  - - "~>"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '1.99'
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.99.76
37
40
  type: :runtime
38
41
  prerelease: false
39
42
  version_requirements: !ruby/object:Gem::Requirement
@@ -41,6 +44,9 @@ dependencies:
41
44
  - - "~>"
42
45
  - !ruby/object:Gem::Version
43
46
  version: '1.99'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.99.76
44
50
  - !ruby/object:Gem::Dependency
45
51
  name: savon
46
52
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +241,23 @@ files:
235
241
  - cockpit/themes/default/theme.js
236
242
  - cockpit/themes/extended/theme.js
237
243
  - cockpit/themes/packed/theme.js
244
+ - cockpit/themes/preset/rngs/alternative.rng
245
+ - cockpit/themes/preset/rngs/call.rng
246
+ - cockpit/themes/preset/rngs/callmanipulate.rng
247
+ - cockpit/themes/preset/rngs/choose.rng
248
+ - cockpit/themes/preset/rngs/critical.rng
249
+ - cockpit/themes/preset/rngs/escape.rng
250
+ - cockpit/themes/preset/rngs/finalize.rng
251
+ - cockpit/themes/preset/rngs/group.rng
252
+ - cockpit/themes/preset/rngs/loop.rng
253
+ - cockpit/themes/preset/rngs/manipulate.rng
254
+ - cockpit/themes/preset/rngs/otherwise.rng
255
+ - cockpit/themes/preset/rngs/parallel.rng
256
+ - cockpit/themes/preset/rngs/parallel_branch.rng
257
+ - cockpit/themes/preset/rngs/stop.rng
258
+ - cockpit/themes/preset/rngs/terminate.rng
259
+ - cockpit/themes/preset/rngs/update.rng
260
+ - cockpit/themes/preset/theme.js
238
261
  - cockpit/track.html
239
262
  - contrib/Screenshot at 2011-09-28 02:38:11.png
240
263
  - contrib/logo2-small.png
@@ -296,6 +319,8 @@ files:
296
319
  - server/resources/properties.schema.active
297
320
  - server/resources/properties.schema.finished
298
321
  - server/resources/properties.schema.inactive
322
+ - server/resources/test1.xml
323
+ - server/resources/test2.xml
299
324
  - server/resources/topics.xml
300
325
  - server/resources/transformation.xml
301
326
  - server/resources/transformation_dslx.xsl
@@ -321,7 +346,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
321
346
  requirements:
322
347
  - - ">="
323
348
  - !ruby/object:Gem::Version
324
- version: 2.3.0
349
+ version: 2.4.0
325
350
  required_rubygems_version: !ruby/object:Gem::Requirement
326
351
  requirements:
327
352
  - - ">="