cpee 1.4.7 → 1.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +5 -5
  2. data/cpee.gemspec +1 -1
  3. data/lib/cpee/controller.rb +41 -7
  4. data/lib/cpee/handler_properties.rb +9 -9
  5. data/lib/cpee/instantiation.rb +12 -6
  6. data/lib/instantiation.xml +1 -0
  7. data/log/elasticsearch.rb +120 -0
  8. data/log/logs/1/test +1 -0
  9. data/log/xes_yaml.rb +3 -20
  10. data/server/handlerwrappers/default.rb +10 -10
  11. data/server/instances/1/properties.xml +34 -122
  12. data/server/instances/10/notifications/182434032285ca1d06a8b6554b8889c8/consumer-secret +1 -0
  13. data/server/instances/10/notifications/182434032285ca1d06a8b6554b8889c8/producer-secret +1 -0
  14. data/server/instances/{76/notifications/a59df784fab648f5327915fc6cf012ab → 10/notifications/182434032285ca1d06a8b6554b8889c8}/subscription.xml +6 -21
  15. data/server/instances/10/notifications/512a3785631a5245dbb45fa150ea72ed/consumer-secret +1 -0
  16. data/server/instances/10/notifications/512a3785631a5245dbb45fa150ea72ed/producer-secret +1 -0
  17. data/server/instances/10/notifications/512a3785631a5245dbb45fa150ea72ed/subscription.xml +6 -0
  18. data/server/instances/10/properties.xml +141 -127
  19. data/server/instances/11/properties.xml +162 -179
  20. data/server/instances/12/properties.xml +163 -87
  21. data/server/instances/13/properties.xml +131 -2002
  22. data/server/instances/14/properties.xml +9 -2044
  23. data/server/instances/15/properties.xml +8 -2039
  24. data/server/instances/16/properties.xml +8 -2069
  25. data/server/instances/17/properties.xml +11 -2065
  26. data/server/instances/18/properties.xml +10 -2109
  27. data/server/instances/19/properties.xml +5 -90
  28. data/server/instances/2/properties.xml +10 -135
  29. data/server/instances/20/properties.xml +169 -9
  30. data/server/instances/21/properties.xml +122 -82
  31. data/server/instances/22/properties.xml +53 -2042
  32. data/server/instances/23/properties.xml +75 -68
  33. data/server/instances/24/properties.xml +82 -2033
  34. data/server/instances/25/properties.xml +121 -37
  35. data/server/instances/26/properties.xml +9 -9
  36. data/server/instances/27/properties.xml +48 -2044
  37. data/server/instances/28/properties.xml +83 -2058
  38. data/server/instances/29/properties.xml +83 -2072
  39. data/server/instances/3/properties.xml +76 -211
  40. data/server/instances/30/properties.xml +293 -112
  41. data/server/instances/31/properties.xml +332 -9
  42. data/server/instances/313/notifications/crisp/consumer-secret +1 -0
  43. data/server/instances/313/notifications/crisp/producer-secret +1 -0
  44. data/server/instances/313/notifications/crisp/subscription.xml +7 -0
  45. data/server/instances/313/notifications/logging/consumer-secret +1 -0
  46. data/server/instances/313/notifications/logging/producer-secret +1 -0
  47. data/server/instances/313/notifications/logging/subscription.xml +7 -0
  48. data/server/instances/313/notifications/logging_yaml/consumer-secret +1 -0
  49. data/server/instances/313/notifications/logging_yaml/producer-secret +1 -0
  50. data/server/instances/313/notifications/logging_yaml/subscription.xml +7 -0
  51. data/server/instances/313/properties.xml +524 -0
  52. data/server/instances/32/properties.xml +582 -65
  53. data/server/instances/33/properties.xml +113 -99
  54. data/server/instances/4/properties.xml +92 -9
  55. data/server/instances/5/properties.xml +49 -1505
  56. data/server/instances/6/properties.xml +186 -11
  57. data/server/instances/662/notifications/crisp/consumer-secret +1 -0
  58. data/server/instances/662/notifications/crisp/producer-secret +1 -0
  59. data/server/instances/662/notifications/crisp/subscription.xml +7 -0
  60. data/server/instances/662/notifications/logging/consumer-secret +1 -0
  61. data/server/instances/662/notifications/logging/producer-secret +1 -0
  62. data/server/instances/662/notifications/logging/subscription.xml +7 -0
  63. data/server/instances/662/notifications/logging_yaml/consumer-secret +1 -0
  64. data/server/instances/662/notifications/logging_yaml/producer-secret +1 -0
  65. data/server/instances/662/notifications/logging_yaml/subscription.xml +7 -0
  66. data/server/instances/662/properties.xml +427 -0
  67. data/server/instances/{46 → 663}/properties.xml +1 -1
  68. data/server/instances/664/properties.xml +425 -0
  69. data/server/instances/665/properties.xml +425 -0
  70. data/server/instances/666/properties.xml +427 -0
  71. data/server/instances/667/properties.xml +427 -0
  72. data/server/instances/668/properties.xml +425 -0
  73. data/server/instances/669/properties.xml +425 -0
  74. data/server/instances/670/properties.xml +31 -0
  75. data/server/instances/{75 → 671}/properties.xml +12 -12
  76. data/server/instances/672/properties.xml +199 -0
  77. data/server/instances/673/properties.xml +52 -0
  78. data/server/instances/7/properties.xml +82 -1691
  79. data/server/instances/8/properties.xml +53 -1738
  80. data/server/instances/9/properties.xml +95 -680
  81. metadata +42 -52
  82. data/server/instances/34/properties.xml +0 -183
  83. data/server/instances/35/properties.xml +0 -183
  84. data/server/instances/36/properties.xml +0 -185
  85. data/server/instances/37/properties.xml +0 -183
  86. data/server/instances/38/properties.xml +0 -183
  87. data/server/instances/39/properties.xml +0 -183
  88. data/server/instances/40/properties.xml +0 -183
  89. data/server/instances/41/properties.xml +0 -183
  90. data/server/instances/42/properties.xml +0 -183
  91. data/server/instances/43/properties.xml +0 -183
  92. data/server/instances/44/properties.xml +0 -183
  93. data/server/instances/45/properties.xml +0 -185
  94. data/server/instances/47/properties.xml +0 -185
  95. data/server/instances/48/properties.xml +0 -185
  96. data/server/instances/49/properties.xml +0 -185
  97. data/server/instances/50/properties.xml +0 -183
  98. data/server/instances/51/properties.xml +0 -183
  99. data/server/instances/52/properties.xml +0 -2129
  100. data/server/instances/53/properties.xml +0 -2129
  101. data/server/instances/54/properties.xml +0 -319
  102. data/server/instances/55/properties.xml +0 -2114
  103. data/server/instances/56/properties.xml +0 -2114
  104. data/server/instances/57/properties.xml +0 -2119
  105. data/server/instances/58/properties.xml +0 -2119
  106. data/server/instances/59/properties.xml +0 -2119
  107. data/server/instances/60/properties.xml +0 -2119
  108. data/server/instances/61/properties.xml +0 -2114
  109. data/server/instances/62/properties.xml +0 -2116
  110. data/server/instances/63/properties.xml +0 -2116
  111. data/server/instances/64/properties.xml +0 -2116
  112. data/server/instances/65/properties.xml +0 -76
  113. data/server/instances/66/properties.xml +0 -97
  114. data/server/instances/67/properties.xml +0 -184
  115. data/server/instances/68/properties.xml +0 -158
  116. data/server/instances/69/properties.xml +0 -156
  117. data/server/instances/70/properties.xml +0 -156
  118. data/server/instances/71/properties.xml +0 -156
  119. data/server/instances/72/properties.xml +0 -156
  120. data/server/instances/73/properties.xml +0 -156
  121. data/server/instances/74/properties.xml +0 -156
  122. data/server/instances/76/notifications/a59df784fab648f5327915fc6cf012ab/consumer-secret +0 -1
  123. data/server/instances/76/notifications/a59df784fab648f5327915fc6cf012ab/producer-secret +0 -1
  124. data/server/instances/76/properties.xml +0 -156
  125. data/server/resources/base.xml +0 -78
  126. data/server/resources/test.rb +0 -19
  127. data/server/resources/test.xml +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 8951441080b5f80bddb04e068c31ef1e0d9be56cc5ed075031be42704d3b05bd
4
- data.tar.gz: 8b40820c7c5b5590b8a0d5602c8764d3a87c99eefb80fc5d5b1ab9fc6c8e7896
2
+ SHA1:
3
+ metadata.gz: 416188034ef7c0020c76c14841e2aab9556634ae
4
+ data.tar.gz: d2ceda09e62188498ee0e565733007bcd90397f2
5
5
  SHA512:
6
- metadata.gz: b423e36aeeab7ad83bd312879296125eeb6761cedc3807fa78f3bc42a3c78f1f6605f7cb3ee0ba616e42d7af0fd5b34d1313bb114f13fb602189d2ee21625e7c
7
- data.tar.gz: 10ad5f072da46f65b584b2e5d25f04b045dd597b9dbfe27065bec13df184c6f2cd99998cbe480859b3ea8f930be7fc3186206ea83ada4544a92f49002e2c9cc5
6
+ metadata.gz: a0fb17d5cbcad12b931b0cb378f9d50092792bdd8c98808f07540e8fabf4a6515e8462d39eea1408eb4efd7534443cfae12d95b6afce16f41c712f1739eb1aa9
7
+ data.tar.gz: 4d91c2f7a529aa8f5b44a11a6003bf817f16decc39dc4a7709262f4e04c6a1be8b495a7632733564388d312ed7accc8d4dcc1f5e9539b4d3625e2f922c9786b4
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.4.7"
3
+ s.version = "1.4.8"
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"
@@ -22,7 +22,7 @@ require ::File.dirname(__FILE__) + '/empty_workflow'
22
22
 
23
23
  module CPEE
24
24
 
25
- class ValueHelper
25
+ class ValueHelper #{{{
26
26
  def self::generate(value)
27
27
  if [String, Integer, Float, TrueClass, FalseClass, Date].include? value.class
28
28
  value.to_s
@@ -49,7 +49,32 @@ module CPEE
49
49
  end
50
50
  end
51
51
  end
52
- end
52
+ end #}}}
53
+
54
+ class AttributesHelper #{{{
55
+ def translate(__attributes__,__dataelements__,__endpoints__)
56
+ @data = WEEL::ReadHash.new(__dataelements__)
57
+ @endpoints = WEEL::ReadHash.new(__endpoints__)
58
+ @attributes = WEEL::ReadHash.new(__attributes__)
59
+ __attributes__.transform_values do |v|
60
+ v.gsub(/(!(attributes|data|endpoints)\.[\w_]+)/) do |m|
61
+ eval(m[1..-1])
62
+ end
63
+ end
64
+ end
65
+
66
+ def data
67
+ @data
68
+ end
69
+
70
+ def endpoints
71
+ @endpoints
72
+ end
73
+
74
+ def attributes
75
+ @attributes
76
+ end
77
+ end #}}}
53
78
 
54
79
  class Controller
55
80
 
@@ -63,6 +88,7 @@ module CPEE
63
88
  @callbacks = {}
64
89
  @positions = []
65
90
  @attributes = {}
91
+ @attributes_helper = AttributesHelper.new
66
92
  @thread = nil
67
93
  @mutex = Mutex.new
68
94
  @opts = opts
@@ -138,6 +164,10 @@ module CPEE
138
164
  x.class == String ? x : x.pretty_inspect
139
165
  end
140
166
 
167
+ def attributes_translated
168
+ @attributes_helper.translate(attributes,dataelements,endpoints)
169
+ end
170
+
141
171
  def host
142
172
  @opts[:host]
143
173
  end
@@ -145,7 +175,7 @@ module CPEE
145
175
  @opts[:url]
146
176
  end
147
177
  def instance_url
148
- "#{@opts[:url]}/#{@id}"
178
+ File.join(@opts[:url].to_s,@id.to_s)
149
179
  end
150
180
  def base
151
181
  base_url
@@ -153,6 +183,12 @@ module CPEE
153
183
  def instance
154
184
  instance_url
155
185
  end
186
+ def endpoints
187
+ @instance.endpoints
188
+ end
189
+ def dataelements
190
+ @instance.data
191
+ end
156
192
 
157
193
  def sim # {{{
158
194
  @thread.join if !@thread.nil? && @thread.alive?
@@ -191,9 +227,6 @@ module CPEE
191
227
  def finalize_if_finished
192
228
  if @instance.state == :finished
193
229
  @instance = nil
194
- @notifications.subscriptions.keys.each do |key|
195
- unserialize_notifications!(:del,key)
196
- end
197
230
  end
198
231
  end
199
232
 
@@ -316,7 +349,7 @@ module CPEE
316
349
  def unserialize_attributes! #{{{
317
350
  @attributes = {}
318
351
  @properties.data.find("/p:properties/p:attributes/p:*").map do |ele|
319
- @attributes[ele.qname.name] = ele.text
352
+ @attributes[ele.qname.name.to_sym] = ele.text
320
353
  end
321
354
  uuid = @properties.data.find("/p:properties/p:attributes/p:uuid")
322
355
  if uuid.empty? || uuid.length != 1 || @properties.data.find("/p:properties/p:attributes/p:uuid[.=\"#{@uuid}\"]").empty?
@@ -515,6 +548,7 @@ module CPEE
515
548
 
516
549
  def notify(what,content={})# {{{
517
550
  item = @events[what]
551
+
518
552
  if item
519
553
  item.each do |ke,ur|
520
554
  Thread.new(ke,ur) do |key,url|
@@ -1,13 +1,13 @@
1
1
  # This file is part of CPEE.
2
- #
2
+ #
3
3
  # CPEE is free software: you can redistribute it and/or modify it under the terms
4
4
  # of the GNU General Public License as published by the Free Software Foundation,
5
5
  # either version 3 of the License, or (at your option) any later version.
6
- #
6
+ #
7
7
  # CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
8
8
  # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
9
9
  # PARTICULAR PURPOSE. See the GNU General Public License for more details.
10
- #
10
+ #
11
11
  # You should have received a copy of the GNU General Public License along with
12
12
  # CPEE (file COPYING in the main directory). If not, see
13
13
  # <http://www.gnu.org/licenses/>.
@@ -25,19 +25,19 @@ class PropertiesHandler < Riddl::Utils::Properties::HandlerBase
25
25
  end
26
26
  when 'endpoints'
27
27
  @data.unserialize_endpoints!
28
- @data.notify('endpoints/change', :instance => @data.instance)
28
+ @data.notify('endpoints/change', :label => 'external', :instance => @data.instance, :instance_name => @data.info, :instance_uuid => @data.uuid, :changed => @data.endpoints.keys, :values => @data.endpoints)
29
29
  when 'dataelements'
30
30
  @data.unserialize_dataelements!
31
- @data.notify('dataelements/change', :instance => @data.instance)
31
+ @data.notify('dataelements/change', :label => 'external', :instance => @data.instance, :instance_name => @data.info, :instance_uuid => @data.uuid, :changed => @data.dataelements.keys, :values => @data.dataelements)
32
32
  when 'attributes'
33
33
  @data.unserialize_attributes!
34
- @data.notify('attributes/change', :instance => @data.instance)
35
- when 'positions'
34
+ @data.notify('attributes/change', :label => 'external', :instance => @data.instance, :instance_name => @data.info, :instance_uuid => @data.uuid, :changed => @data.attributes.keys, :values => @data.attributes)
35
+ when 'positions'
36
36
  @data.unserialize_positions!
37
37
  @data.notify('position/change', :instance => @data.instance)
38
- when 'transformation'
38
+ when 'transformation'
39
39
  @data.notify('transformation/change', :instance => @data.instance)
40
- when 'state'
40
+ when 'state'
41
41
  @data.unserialize_state!
42
42
  else
43
43
  nil
@@ -24,7 +24,7 @@ module CPEE
24
24
  SERVER = File.expand_path(__dir__ + '/../instantiation.xml')
25
25
 
26
26
  module Helpers #{{{
27
- def load_testset(tdoc,cpee) #{{{
27
+ def load_testset(tdoc,cpee,name=nil) #{{{
28
28
  ins = -1
29
29
  XML::Smart.string(tdoc) do |doc|
30
30
  doc.register_namespace 'desc', 'http://cpee.org/ns/description/1.0'
@@ -32,6 +32,12 @@ module CPEE
32
32
 
33
33
  srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
34
34
  res = srv.resource("/")
35
+ if name
36
+ doc.find("/testset/attributes/prop:info").each do |e|
37
+ e.text = name
38
+ end
39
+ end
40
+
35
41
  status, response = res.post Riddl::Parameter::Simple.new("info",doc.find("string(/testset/attributes/prop:info)"))
36
42
 
37
43
  if status == 200
@@ -129,19 +135,19 @@ module CPEE
129
135
 
130
136
  def response
131
137
  cpee = @a[0]
132
- status, res = Riddl::Client.new(@p[1].value).get
138
+ status, res = Riddl::Client.new(@p[2].value).get
133
139
  tdoc = if status >= 200 && status < 300
134
140
  res[0].value.read
135
141
  else
136
142
  (@status = 500) && return
137
143
  end
138
144
 
139
- if (instance = load_testset(tdoc,cpee)) == -1
145
+ if (instance = load_testset(tdoc,cpee,@p[0].value)) == -1
140
146
  @status = 500
141
147
  else
142
- handle_data cpee, instance, @p[2]&.value
143
- handle_waiting cpee, instance, @p[0].value
144
- handle_starting cpee, instance, @p[0].value
148
+ handle_data cpee, instance, @p[3]&.value
149
+ handle_waiting cpee, instance, @p[1].value
150
+ handle_starting cpee, instance, @p[1].value
145
151
  return Riddl::Parameter::Simple.new("url",cpee + instance)
146
152
  end
147
153
  end
@@ -18,6 +18,7 @@
18
18
  </optional>
19
19
  </message>
20
20
  <message name="url">
21
+ <parameter name="info" type="string"/>
21
22
  <parameter name="behavior" type="string">
22
23
  <choice>
23
24
  <value>fork_ready</value>
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/ruby
2
+ require 'pp'
3
+ require 'json'
4
+ require 'yaml'
5
+ require 'rubygems'
6
+ require 'riddl/server'
7
+ require 'riddl/utils/fileserve'
8
+ require 'json'
9
+ require 'time'
10
+
11
+ require 'faraday'
12
+ require 'elasticsearch'
13
+ require 'logger'
14
+
15
+ class Logging < Riddl::Implementation #{{{
16
+ def doc(topic,event_name,esc,template,instancenr,notification)
17
+ uuid = notification['instance_uuid']
18
+ return unless uuid
19
+
20
+ activity = notification['activity']
21
+ parameters = notification['parameters']
22
+ receiving = notification['received']
23
+
24
+ log = YAML::load(File.read(template))
25
+ log["log"]["trace"]["concept:name"] ||= instancenr.to_i
26
+ log["log"]["trace"]["cpee:name"] ||= notification['instance_name'] if notification["instance_name"]
27
+ log["log"]["trace"]["cpee:uuid"] ||= notification['instance_uuid'] if notification["instance_uuid"]
28
+ unless esc.indices.exists? index: 'trace'
29
+ esc.indices.create index: 'trace', body: {
30
+ "mappings" => {
31
+ "entry" => {
32
+ "properties" => {
33
+ "concept:name" => {
34
+ "type" => "integer"
35
+ },
36
+ "cpee:name" => {
37
+ "type" => "text"
38
+ },
39
+ "cpee:uuid": {
40
+ "type" => "text"
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ end
47
+
48
+ esc.index index: 'trace', type: 'entry', id: log["log"]["trace"]["cpee:uuid"], body: log["log"]["trace"]
49
+ p notification['attributes']
50
+
51
+ event = {}
52
+ event["trace:id"] = instancenr
53
+ event["concept:name"] = notification["label"] if notification["label"]
54
+ if notification["endpoint"]
55
+ event["concept:endpoint"] = notification["endpoint"]
56
+ end
57
+ event["id:id"] = (activity.nil? || activity == "") ? 'external' : activity
58
+ event["cpee:uuid"] = notification['instance_uuid'] if notification["instance_uuid"]
59
+ case event_name
60
+ when 'receiving', 'change'
61
+ event["lifecycle:transition"] = "unknown"
62
+ when 'done'
63
+ event["lifecycle:transition"] = "complete"
64
+ else
65
+ event["lifecycle:transition"] = "start"
66
+ end
67
+ event["cpee:lifecycle:transition"] = "#{topic}/#{event_name}"
68
+ data_send = ((parameters["arguments"].nil? ? [] : parameters["arguments"]) rescue [])
69
+ event["list"] = {"data_send" => data_send} unless data_send.empty?
70
+ if notification['changed']&.any?
71
+ if event.has_key? "list"
72
+ event["list"]["data_changed"] ||= notification['changed']
73
+ else
74
+ event["list"] = {"data_changer" => notification['changed']}
75
+ end
76
+ end
77
+ if notification['values']&.any?
78
+ if event.has_key? "list"
79
+ event["list"]["data_values"] ||= notification['values']
80
+ else
81
+ event["list"] = {"data_values" => notification['values']}
82
+ end
83
+ end
84
+ if receiving&.any?
85
+ if event.has_key? "list"
86
+ event["list"]["data_received"] ||= receiving
87
+ else
88
+ event["list"] = {"data_receiver" => receiving}
89
+ end
90
+ end
91
+ event["time:timestamp"]= Time.now.iso8601
92
+
93
+ iname = "instance_" + notification['instance_name'].downcase.gsub(/[^a-z]/,'_')
94
+ esc.indices.create index: iname rescue nil
95
+ esc.index index: iname, type: 'entry', body: event
96
+ nil
97
+ end
98
+
99
+ def response
100
+ topic = @p[1].value
101
+ event_name = @p[2].value
102
+ esc = @a[0]
103
+ template = @a[1]
104
+ instancenr = @h['CPEE_INSTANCE'].split('/').last
105
+ notification = JSON.parse(@p[3].value)
106
+ doc topic, event_name, esc, template, instancenr, notification
107
+ end
108
+ end #}}}
109
+
110
+ Riddl::Server.new(File.join(__dir__,'/log.xml'), :host => 'localhost', :port => 9307) do
111
+ accessible_description true
112
+ cross_site_xhr true
113
+ @riddl_opts[:template] ||= File.join(__dir__,'template.xes_yaml')
114
+ @riddl_opts[:esc] = Elasticsearch::Client.new hosts: ['localhost:8400']
115
+
116
+
117
+ interface 'events' do
118
+ run Logging, @riddl_opts[:esc], @riddl_opts[:template] if post 'event'
119
+ end
120
+ end.loop!
@@ -0,0 +1 @@
1
+ test
@@ -26,10 +26,9 @@ class Logging < Riddl::Implementation #{{{
26
26
  event["concept:name"] = notification["label"] if notification["label"]
27
27
  if notification["endpoint"]
28
28
  event["concept:endpoint"] = notification["endpoint"]
29
- else
30
- event["concept:name"] = 'Script Task'
31
29
  end
32
- event["id:id"] = activity
30
+ event["id:id"] = (activity.nil? || activity == "") ? 'external' : activity
31
+ event["cpee:uuid"] = notification['instance_uuid'] if notification["instance_uuid"]
33
32
  case event_name
34
33
  when 'receiving', 'change'
35
34
  event["lifecycle:transition"] = "unknown"
@@ -66,25 +65,9 @@ class Logging < Riddl::Implementation #{{{
66
65
  File.open(File.join(log_dir,uuid+'.xes.yaml'),'a') do |f|
67
66
  f << {'event' => event}.to_yaml
68
67
  end
68
+ nil
69
69
  end
70
70
 
71
- def rec_unjson(value,list,key)
72
- case value
73
- when Array then
74
- li = list.add 'list', :key => key
75
- value.each_with_index do |v,k|
76
- rec_unjson(v,li,k)
77
- end
78
- when Hash then
79
- li = list.add 'list', :key => key
80
- value.each do |k,v|
81
- rec_unjson(v,li,k)
82
- end
83
- else
84
- list.add 'string', :key => key, :value => value
85
- end
86
- end
87
-
88
71
  def response
89
72
  topic = @p[1].value
90
73
  event_name = @p[2].value
@@ -46,7 +46,7 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
46
46
 
47
47
  def activity_handle(passthrough, parameters) # {{{
48
48
  @label = parameters[:label]
49
- @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, :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"))
49
+ @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, :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
50
50
  if passthrough.nil?
51
51
  params = []
52
52
  callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
@@ -65,7 +65,7 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
65
65
  params << Riddl::Header.new("CPEE-ACTIVITY",@handler_position)
66
66
  params << Riddl::Header.new("CPEE-LABEL",parameters[:label]||'')
67
67
  @controller.attributes.each do |key,value|
68
- params << Riddl::Header.new("CPEE-ATTR-#{key.gsub(/_/,'-')}",value)
68
+ params << Riddl::Header.new("CPEE-ATTR-#{key.to_s.gsub(/_/,'-')}",value)
69
69
  end
70
70
 
71
71
  type = parameters[:method] || 'post'
@@ -107,28 +107,28 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
107
107
  end # }}}
108
108
 
109
109
  def inform_activity_done # {{{
110
- @controller.notify("activity/done", :endpoint => @handler_endpoint, :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"))
110
+ @controller.notify("activity/done", :endpoint => @handler_endpoint, :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
111
111
  end # }}}
112
112
  def inform_activity_manipulate # {{{
113
- @controller.notify("activity/manipulating", :endpoint => @handler_endpoint, :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"))
113
+ @controller.notify("activity/manipulating", :endpoint => @handler_endpoint, :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
114
114
  end # }}}
115
115
  def inform_activity_failed(err) # {{{
116
116
  puts err.message
117
117
  puts err.backtrace
118
- @controller.notify("activity/failed", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :message => err.message, :line => err.backtrace[0].match(/(.*?):(\d+):/)[2], :where => err.backtrace[0].match(/(.*?):(\d+):/)[1], :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"))
118
+ @controller.notify("activity/failed", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :message => err.message, :line => err.backtrace[0].match(/(.*?):(\d+):/)[2], :where => err.backtrace[0].match(/(.*?):(\d+):/)[1], :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
119
119
  end # }}}
120
120
  def inform_manipulate_change(status,changed_dataelements,changed_endpoints,dataelements,endpoints) # {{{
121
121
  unless status.nil?
122
122
  @controller.serialize_status!
123
- @controller.notify("status/change", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :id => status.id, :message => status.message)
123
+ @controller.notify("status/change", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :id => status.id, :message => status.message, :attributes => @controller.attributes_translated)
124
124
  end
125
125
  unless changed_dataelements.nil?
126
126
  @controller.serialize_dataelements!
127
- @controller.notify("dataelements/change", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :changed => changed_dataelements, :values => dataelements)
127
+ @controller.notify("dataelements/change", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :changed => changed_dataelements, :values => dataelements, :attributes => @controller.attributes_translated)
128
128
  end
129
129
  unless changed_endpoints.nil?
130
130
  @controller.serialize_endpoints!
131
- @controller.notify("endpoints/change", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :changed => changed_endpoints, :values => endpoints)
131
+ @controller.notify("endpoints/change", :endpoint => @handler_endpoint, :label => @label, :instance_name => @controller.info, :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :changed => changed_endpoints, :values => endpoints, :attributes => @controller.attributes_translated)
132
132
  end
133
133
  end # }}}
134
134
 
@@ -197,12 +197,12 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
197
197
  end
198
198
 
199
199
  def callback(result=nil,options={})
200
- @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), :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"))
200
+ @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), :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
201
201
  result = simplify_result(result)
202
202
  if options['CPEE_UPDATE']
203
203
  @handler_returnValue = result
204
204
  if options['CPEE_UPDATE_STATUS']
205
- @controller.notify("activity/status", :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :status => options['CPEE_UPDATE_STATUS'], :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"))
205
+ @controller.notify("activity/status", :instance => @controller.instance, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :status => options['CPEE_UPDATE_STATUS'], :time=>Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
206
206
  end
207
207
  @handler_continue.continue WEEL::Signal::Again
208
208
  else