cpee 1.4.32 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
  - - ">="