cpee-logging-xes-yaml 1.2.1 → 1.2.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a089999eb754b1261a11e99783f151d3efb591fbe2a9ce0bca20681a80973da
4
- data.tar.gz: 12813da31c00bd2b78c279ff8d69c48d280219452b672f0c7c3b4871097e964b
3
+ metadata.gz: a19c5d03e19a331837aaeb9b5b9a4559cd35e4b6901e0cf20c7b27e54e92baac
4
+ data.tar.gz: 4ad00098ce2fbf696ac3da8cbce702b1921bded896f1ff2ef9ef6c7dd592d044
5
5
  SHA512:
6
- metadata.gz: 288fbd3c749913373ee0535e5b029a0bb9df11c076c88ae3f37db6b9f5493d4b0b1fd336d2bbbf6eb35f38bb14c961fdd45249ddb4bc81bb1269cb67bad98801
7
- data.tar.gz: 5ff48fd29f8051c298f1b13bbd831a2fbcbb022ff3c56f25dc64a5e65f2d13fd01204e9c8572b17917692b02d8ee4579e6e2fc818bd432c1f2150d282653ada0
6
+ metadata.gz: 68222f1697c3f53be1623846d9a4269021bca8f1515576a02d69bcc49011869a69d0a9af8721c6f7170b0f5b8feab4448fd03738abbbde122a38b9373169331b
7
+ data.tar.gz: e0141bb3bfc89156df662003ec327225fc8d9e8f8e73c2d983c3403990626bd1364178ce9cf876a535264491dc105480f9bcb2ba39ec5c8a56cad011df65184d
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee-logging-xes-yaml"
3
- s.version = "1.2.1"
3
+ s.version = "1.2.2"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "Logging for the cloud process execution engine (cpee.org)"
@@ -1,16 +1,16 @@
1
1
  # This file is part of CPEE-LOGGING-XES-YAML.
2
2
  #
3
3
  # CPEE-LOGGING-XES-YAML is free software: you can redistribute it and/or modify it
4
- # under the terms of the GNU General Public License as published by the Free
4
+ # under the terms of the GNU Lesser General Public License as published by the Free
5
5
  # Software Foundation, either version 3 of the License, or (at your option) any
6
6
  # later version.
7
7
  #
8
8
  # CPEE-LOGGING-XES-YAML is distributed in the hope that it will be useful, but
9
9
  # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
11
11
  # more details.
12
12
  #
13
- # You should have received a copy of the GNU General Public License along with
13
+ # You should have received a copy of the GNU Lesser General Public License along with
14
14
  # CPEE-LOGGING-XES-YAML (file LICENSE in the main directory). If not, see
15
15
  # <http://www.gnu.org/licenses/>.
16
16
 
@@ -23,8 +23,6 @@ require 'time'
23
23
 
24
24
  require_relative 'tools'
25
25
 
26
- matze = 'localhostr:9318'
27
-
28
26
  module CPEE
29
27
  module Logging
30
28
 
@@ -32,25 +30,112 @@ module CPEE
32
30
 
33
31
  class Handler < Riddl::Implementation
34
32
  def response
35
- topic = @p[1].value
36
- event_name = @p[2].value
37
- log_dir = @a[0]
38
- template = @a[1]
39
- notification = @p[3].value.read
33
+ opts = @a[0]
34
+ type = @p[0].value
35
+ topic = @p[1].value
36
+ event_name = @p[2].value
37
+ payload = @p[3].value.read
38
+ EM.defer do
39
+ CPEE::Logging::forward opts, topic, event_name, payload
40
+ end if type == 'event'
40
41
  EM.defer do
41
- CPEE::Logging::doc topic, event_name, log_dir, template, notification
42
+ CPEE::Logging::doc opts, topic, event_name, payload
42
43
  end
43
44
  nil
44
45
  end
45
46
  end
46
47
 
48
+ class Overview < Riddl::Implementation #{{{
49
+ def response
50
+ Riddl::Parameter::Complex.new("overview","text/xml") do
51
+ <<-END
52
+ <overview xmlns='http://riddl.org/ns/common-patterns/notifications-producer/2.0'>
53
+ <topics/>
54
+ <subscriptions/>
55
+ </overview>
56
+ END
57
+ end
58
+ end
59
+ end #}}}
60
+
61
+ class Topics < Riddl::Implementation #{{{
62
+ def response
63
+ opts = @a[0]
64
+ Riddl::Parameter::Complex.new("overview","text/xml") do
65
+ File.read(opts[:topics])
66
+ end
67
+ end
68
+ end #}}}
69
+
70
+ class Subscriptions < Riddl::Implementation #{{{
71
+ def response
72
+ opts = @a[0]
73
+ Riddl::Parameter::Complex.new("subscriptions","text/xml") do
74
+ ret = XML::Smart::string <<-END
75
+ <subscriptions xmlns='http://riddl.org/ns/common-patterns/notifications-producer/2.0'/>
76
+ END
77
+ Dir.glob(File.join(opts[:notifications_dir],'*','subscription.xml')).each do |f|
78
+ ret.root.add('subscription').tap do |n|
79
+ n.attributes['id'] = File.basename(File.dirname(f))
80
+ XML::Smart.open_unprotected(f) do |doc|
81
+ n.attributes['url'] = doc.root.attributes['url']
82
+ end
83
+ end
84
+ end
85
+ ret.to_s
86
+ end
87
+ end
88
+ end #}}}
89
+
90
+ class Subscription < Riddl::Implementation #{{{
91
+ def response
92
+ opts = @a[0]
93
+ id = @r[-1]
94
+ doc = XML::Smart::open_unprotected(File.join(opts[:notifications_dir],id,'subscription.xml'))
95
+ doc.root.attributes['id'] = id
96
+ Riddl::Parameter::Complex.new("subscriptions","text/xml",doc.to_s)
97
+ end
98
+ end #}}}
99
+
47
100
  def self::implementation(opts)
48
- opts[:log_dir] ||= File.join(__dir__,'logs')
49
- opts[:template] ||= File.join(__dir__,'template.xes_yaml')
101
+ opts[:log_dir] ||= File.expand_path(File.join(__dir__,'logs'))
102
+ opts[:notifications_dir] ||= File.expand_path(File.join(__dir__,'notifications'))
103
+ opts[:template] ||= File.expand_path(File.join(__dir__,'template.xes_yaml'))
104
+ opts[:topics] ||= File.expand_path(File.join(__dir__,'topics.xml'))
105
+ opts[:subscriptions] = {}
106
+
107
+ Dir.glob(File.join(opts[:notifications_dir],'*','subscription.xml')).each do |f|
108
+ XML::Smart::open_unprotected(f) do |doc|
109
+ doc.register_namespace :p, 'http://riddl.org/ns/common-patterns/notifications-producer/2.0'
110
+ doc.find('/p:subscription/p:topic').each do |t|
111
+ t.find('p:event').each do |e|
112
+ opts[:subscriptions][t.attributes['id']+'/'+e.text] ||= []
113
+ opts[:subscriptions][t.attributes['id']+'/'+e.text] << doc.root.attributes['url']
114
+ end
115
+ end
116
+ end
117
+ end
50
118
 
51
119
  Proc.new do
52
120
  interface 'events' do
53
- run Handler, opts[:log_dir], opts[:template] if post 'event'
121
+ run Handler, opts if post 'event'
122
+ end
123
+ interface 'notifications' do
124
+ on resource "notifications" do
125
+ run Overview if get
126
+ on resource "topics" do
127
+ run Topics, opts if get
128
+ end
129
+ on resource "subscriptions" do
130
+ run Subscriptions, opts if get
131
+ run CreateSubscription, opts if post 'create_subscription'
132
+ on resource do
133
+ run Subscription, opts if get
134
+ run UpdateSubscription, opts if put 'change_subscription'
135
+ run DeleteSubscription, opts if delete
136
+ end
137
+ end
138
+ end
54
139
  end
55
140
  end
56
141
  end
@@ -1,3 +1,21 @@
1
+ <!--
2
+ This file is part of CPEE-LOGGING-XES-YAML.
3
+
4
+ CPEE-LOGGING-XES-YAML is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Lesser General Public License as published by the Free
6
+ Software Foundation, either version 3 of the License, or (at your option) any
7
+ later version.
8
+
9
+ CPEE-LOGGING-XES-YAML is distributed in the hope that it will be useful, but
10
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
12
+ more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public License along with
15
+ CPEE-LOGGING-XES-YAML (file LICENSE in the main directory). If not, see
16
+ <http://www.gnu.org/licenses/>.
17
+ -->
18
+
1
19
  <declaration xmlns="http://riddl.org/ns/declaration/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
2
20
  <interface name="events">
3
21
  <xi:include href="http://www.riddl.org/ns/common-patterns/notifications-consumer/2.0/consumer.xml"/>
@@ -6,7 +24,6 @@
6
24
  <xi:include href="http://www.riddl.org/ns/common-patterns/notifications-producer/2.0/producer.xml"/>
7
25
  </interface>
8
26
 
9
-
10
27
  <facade>
11
28
  <tile>
12
29
  <layer name="events">
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  log:
3
3
  namespaces:
4
- stream: https://cpee.org/sensorstream/
4
+ stream: https://cpee.org/datastream/
5
5
  ssn: http://www.w3.org/ns/ssn/
6
6
  sosa: http://www.w3.org/ns/sosa/
7
7
  xes:
@@ -13,7 +13,7 @@ log:
13
13
  id: http://www.xes-standard.org/identity.xesext
14
14
  lifecycle: http://www.xes-standard.org/lifecycle.xesext
15
15
  cpee: http://cpee.org/cpee.xesext
16
- stream: https://cpee.org/sensorstream/sensorstream.xesext
16
+ stream: https://cpee.org/datastream/datastream.xesext
17
17
  global:
18
18
  trace:
19
19
  concept:name: __INVALID__
@@ -1,4 +1,21 @@
1
+ # This file is part of CPEE-LOGGING-XES-YAML.
2
+ #
3
+ # CPEE-LOGGING-XES-YAML is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU Lesser General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # CPEE-LOGGING-XES-YAML is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
11
+ # more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public License along with
14
+ # CPEE-LOGGING-XES-YAML (file LICENSE in the main directory). If not, see
15
+ # <http://www.gnu.org/licenses/>.
16
+
1
17
  require 'weel'
18
+ require 'digest/sha1'
2
19
 
3
20
  class StreamPoint
4
21
  attr_accessor :value, :timestamp, :source, :meta
@@ -47,7 +64,7 @@ class Stream
47
64
  @values.each do |e|
48
65
  if e.is_a? Stream
49
66
  e.source = @source if e.source.nil? && !@source.nil?
50
- tp << { 'stream:sensorstream' => e.to_list }
67
+ tp << { 'stream:datastream' => e.to_list }
51
68
  elsif e.is_a? StreamPoint
52
69
  e.source = @source if e.source.nil? && !@source.nil?
53
70
  tp << { 'stream:point' => e.to_h }
@@ -60,6 +77,22 @@ end
60
77
  module CPEE
61
78
  module Logging
62
79
 
80
+ def self::notify(opts,topic,event_name,payload)
81
+ opts[:subscriptions].each do |e,urls|
82
+ if e == topic + '/' + event_name
83
+ urls.each do |url|
84
+ client = Riddl::Client.new(url)
85
+ client.post [
86
+ Riddl::Parameter::Simple::new('type','event'),
87
+ Riddl::Parameter::Simple::new('topic',topic),
88
+ Riddl::Parameter::Simple::new('event',event_name),
89
+ Riddl::Parameter::Complex::new('notification','application/json',payload)
90
+ ]
91
+ end
92
+ end
93
+ end
94
+ end
95
+
63
96
  def self::val_merge(target,val,tid,tso)
64
97
  if val.is_a? Stream
65
98
  val.source = tso if val.source.nil?
@@ -89,6 +122,40 @@ module CPEE
89
122
  end
90
123
  end
91
124
  end
125
+ def self::extract_annotations(where,xml)
126
+ ret = {}
127
+ XML::Smart::string(xml) do |doc|
128
+ doc.register_namespace 'd', 'http://cpee.org/ns/description/1.0'
129
+ doc.find('/d:description | //d:call').each do |c|
130
+ tid = c.attributes['id'] || 'start'
131
+ fname = where + '_' + tid + '.anno'
132
+ nset = if tid == 'start'
133
+ c.find('d:*[starts-with(name(),"_")]')
134
+ else
135
+ c.find('d:annotations')
136
+ end
137
+ nset.each do |p|
138
+ anno = p.dump
139
+ ret[tid] ||= []
140
+ ret[tid] << anno
141
+ end
142
+ if ret[tid]
143
+ if ret[tid].length > 1
144
+ ret[tid] = "<annotations xmlns=\"http://cpee.org/ns/description/1.0\">\n" +
145
+ ret[tid].join("\n") + "\n" +
146
+ "</annotations>"
147
+ else
148
+ ret[tid] = ret[tid][0]
149
+ end
150
+ hash = Digest::SHA1.hexdigest(ret[tid])
151
+ if !File.exists?(fname) || (File.exists?(fname) && File.read(fname) != hash)
152
+ File.write(fname,hash)
153
+ end
154
+ end
155
+ end
156
+ end
157
+ ret
158
+ end
92
159
 
93
160
  def self::extract_result(result)
94
161
  ret = result.map do |res|
@@ -133,18 +200,32 @@ module CPEE
133
200
  end
134
201
  f = File.open(where,'r+')
135
202
  f.flock(File::LOCK_EX)
136
- json = JSON::load(f).merge(values)
203
+ json = JSON::load(f) || {}
204
+ json.merge!(values)
137
205
  f.rewind
138
206
  f.truncate(0)
139
207
  f.write(JSON.generate(json))
140
208
  f.close
141
209
  end
142
210
 
143
- def self::doc(topic,event_name,log_dir,template,payload)
211
+ def self::forward(opts,topic,event_name,payload)
212
+ if topic == 'state' && event_name == 'change'
213
+ self::notify(opts,topic,event_name,payload)
214
+ elsif topic == 'state' && event_name == 'change'
215
+ self::notify(opts,topic,event_name,payload)
216
+ elsif topic == 'gateway' && event_name == 'join'
217
+ self::notify(opts,topic,event_name,payload)
218
+ end
219
+ end
220
+
221
+ def self::doc(opts,topic,event_name,payload)
144
222
  notification = JSON.parse(payload)
145
223
  instance = notification['instance-uuid']
146
224
  return unless instance
147
225
 
226
+ log_dir = opts[:log_dir]
227
+ template = opts[:template]
228
+
148
229
  instancenr = notification['instance']
149
230
  content = notification['content']
150
231
  activity = content['activity']
@@ -153,6 +234,17 @@ module CPEE
153
234
 
154
235
  if content['dslx']
155
236
  CPEE::Logging::extract_probes(File.join(log_dir,instance),content['dslx'])
237
+ CPEE::Logging::extract_annotations(File.join(log_dir,instance),content['dslx']).each do |k,v|
238
+ so = Marshal.load(Marshal.dump(notification))
239
+ so['content'].delete('dslx')
240
+ so['content'].delete('dsl')
241
+ so['content'].delete('description')
242
+ so['content']['annotation'] = v
243
+ so['content']['activity'] = k
244
+ so['topic'] = 'annotation'
245
+ so['name'] = 'change'
246
+ self::notify(opts,'annotation','change',so.to_json)
247
+ end
156
248
  end
157
249
 
158
250
  if topic == 'dataelements' && event_name == 'change'
@@ -204,9 +296,9 @@ module CPEE
204
296
  doc.register_namespace 'd', 'http://cpee.org/ns/description/1.0'
205
297
  doc.find('//d:probe[d:extractor_type="intrinsic"]').each do |p|
206
298
  pid = p.find('string(d:id)')
207
- event['stream:sensorstream'] ||= []
299
+ event['stream:datastream'] ||= []
208
300
  val = CPEE::Logging::extract_sensor(rs,p.find('string(d:extractor_code)'),pid,nil) rescue nil
209
- CPEE::Logging::val_merge(event['stream:sensorstream'],val,pid,p.find('string(d:source)'))
301
+ CPEE::Logging::val_merge(event['stream:datastream'],val,pid,p.find('string(d:source)'))
210
302
  end
211
303
  end
212
304
  end
@@ -225,13 +317,13 @@ module CPEE
225
317
  rc = CPEE::Logging::extract_result(receiving)
226
318
  doc.find('//d:probe[d:extractor_type="extrinsic"]').each do |p|
227
319
  pid = p.find('string(d:id)')
228
- te['stream:sensorstream'] ||= []
320
+ te['stream:datastream'] ||= []
229
321
  val = CPEE::Logging::extract_sensor(rs,p.find('string(d:extractor_code)'),pid,rc) rescue nil
230
- CPEE::Logging::val_merge(te['stream:sensorstream'],val,pid,p.find('string(d:source)'))
322
+ CPEE::Logging::val_merge(te['stream:datastream'],val,pid,p.find('string(d:source)'))
231
323
  end
232
324
  end
233
325
  end
234
- if te['stream:sensorstream']
326
+ if te['stream:datastream']
235
327
  te["cpee:lifecycle:transition"] = "sensor/stream"
236
328
  File.open(File.join(log_dir,instance+'.xes.yaml'),'a') do |f|
237
329
  f << {'event' => te}.to_yaml
@@ -0,0 +1,36 @@
1
+ <!--
2
+ This file is part of CPEE-LOGGING-XES-YAML.
3
+
4
+ CPEE-LOGGING-XES-YAML is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Lesser General Public License as published by the Free
6
+ Software Foundation, either version 3 of the License, or (at your option) any
7
+ later version.
8
+
9
+ CPEE-LOGGING-XES-YAML is distributed in the hope that it will be useful, but
10
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
12
+ more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public License along with
15
+ CPEE-LOGGING-XES-YAML (file LICENSE in the main directory). If not, see
16
+ <http://www.gnu.org/licenses/>.
17
+ -->
18
+
19
+ <topics xmlns='http://riddl.org/ns/common-patterns/notifications-producer/2.0'>
20
+ <topic id='annotation'>
21
+ <event>change</event>
22
+ </topic>
23
+ <topic id='stream'>
24
+ <event>extraction</event>
25
+ </topic>
26
+ <topic id='gateway'>
27
+ <event>decide</event>
28
+ <event>join</event>
29
+ </topic>
30
+ <topic id='state'>
31
+ <event>change</event>
32
+ </topic>
33
+ <topic id='task'>
34
+ <event>instantiation</event>
35
+ </topic>
36
+ </topics>
data/server/log CHANGED
@@ -1,4 +1,21 @@
1
1
  #!/usr/bin/ruby
2
+ #
3
+ # This file is part of CPEE-LOGGING-XES-YAML.
4
+ #
5
+ # CPEE-LOGGING-XES-YAML is free software: you can redistribute it and/or modify it
6
+ # under the terms of the GNU Lesser General Public License as published by the Free
7
+ # Software Foundation, either version 3 of the License, or (at your option) any
8
+ # later version.
9
+ #
10
+ # CPEE-LOGGING-XES-YAML is distributed in the hope that it will be useful, but
11
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
13
+ # more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License along with
16
+ # CPEE-LOGGING-XES-YAML (file LICENSE in the main directory). If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
2
19
  require 'rubygems'
3
20
  require 'cpee-logging-xes-yaml/logging'
4
21
 
@@ -13,6 +30,7 @@ Riddl::Server.new(CPEE::Logging::SERVER, options) do
13
30
  cross_site_xhr true
14
31
 
15
32
  @riddl_opts[:log_dir] ||= File.join(__dir__,'logs')
33
+ @riddl_opts[:subscriptions_dir] ||= File.join(__dir__,'subscriptions')
16
34
 
17
35
  use CPEE::Logging::implementation(@riddl_opts)
18
36
  end.loop!
@@ -1,4 +1,21 @@
1
1
  #!/usr/bin/ruby
2
+ #
3
+ # This file is part of CPEE-LOGGING-XES-YAML.
4
+ #
5
+ # CPEE-LOGGING-XES-YAML is free software: you can redistribute it and/or modify it
6
+ # under the terms of the GNU Lesser General Public License as published by the Free
7
+ # Software Foundation, either version 3 of the License, or (at your option) any
8
+ # later version.
9
+ #
10
+ # CPEE-LOGGING-XES-YAML is distributed in the hope that it will be useful, but
11
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
13
+ # more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License along with
16
+ # CPEE-LOGGING-XES-YAML (file LICENSE in the main directory). If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
2
19
  curpath = __dir__
3
20
  require 'rubygems'
4
21
  require 'optparse'
@@ -28,22 +45,22 @@ end
28
45
 
29
46
  def follow(fname,io,copy,deep=0)
30
47
  if copy
31
- File.write(File.basename(fname,'.xes.yaml') + '.xes.yaml',io.read)
48
+ File.write(File.basename(fname,'.xes.yaml') + '.xes.shift.yaml',io.read)
32
49
  io.rewind
33
50
  end
34
51
  YAML.load_stream(io) do |e|
35
52
  if name = e.dig('log','trace','cpee:name')
36
- puts " " * deep + name + " (#{File.basename(fname,'.xes.yaml')}) - #{e.dig('log','trace','concept:name')}"
53
+ puts " " * deep + name + " (#{File.basename(fname,'.xes.shift.yaml')}) - #{e.dig('log','trace','concept:name')}"
37
54
  end
38
55
  if e.dig('event','cpee:lifecycle:transition') == 'task/instantiation'
39
- base = e.dig('event','data','data_receiver')
56
+ base = e.dig('event','raw')
40
57
  val = base.dig('CPEE-INSTANCE') rescue nil
41
58
  if val.nil?
42
59
  val = File.basename(base)
43
60
  end
44
61
  uuid = base.dig('CPEE-INSTANCE-UUID') rescue nil
45
62
  if uuid
46
- react File.dirname(fname) + "/#{uuid}.xes.yaml",copy,deep + 2
63
+ react File.dirname(fname) + "/#{uuid}.xes.shift.yaml",copy,deep + 2
47
64
  end
48
65
  end
49
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee-logging-xes-yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: tools
11
11
  cert_chain: []
12
- date: 2022-11-10 00:00:00.000000000 Z
12
+ date: 2022-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: riddl
@@ -76,6 +76,7 @@ files:
76
76
  - lib/cpee-logging-xes-yaml/logging.xml
77
77
  - lib/cpee-logging-xes-yaml/template.xes_yaml
78
78
  - lib/cpee-logging-xes-yaml/tools.rb
79
+ - lib/cpee-logging-xes-yaml/topics.xml
79
80
  - server/log
80
81
  - tools/cpee-logging-xes-yaml
81
82
  homepage: http://cpee.org/