cpee-logging-xes-yaml 1.2.1 → 1.2.2

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: 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/