cpee-logging-xes-yaml 1.3.30 → 1.3.31
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 +4 -4
- data/cpee-logging-xes-yaml.gemspec +1 -1
- data/tools/cpee-logging-xes-yaml +49 -12
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 84cb7628234c99607565dcf4a9de5131daada8bb1da09f5c04ab81afb599552c
|
|
4
|
+
data.tar.gz: 41188414f1a414f86f49d1480648f08b867a81a16277dec1278215eef2faecd0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f725d428357ac622f44da51c4a74321d13dc0be7efa51bfb2134decf298b3438b16b2dcb0f361a18d4fc73f30d08600a4b8fd1288e4a17643bded61bca76451e
|
|
7
|
+
data.tar.gz: abff6758b78d981b3efa34a61e9ba8a3ad82b6f31193b414d137eff5f6e454e18bb7c30cb6460a55960313466565b26901d14400d4d83a5a20892b06eacfee77
|
data/tools/cpee-logging-xes-yaml
CHANGED
|
@@ -48,7 +48,7 @@ def wrap(s, width=78, indent=19, extra_indent=2)
|
|
|
48
48
|
return lines.join "\n"
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
TEMPLATE_XES_XML_START = <<-END
|
|
52
52
|
<log xmlns="http://www.xes-standard.org/" xes.version="2.0" xes.features="nested-attributes">
|
|
53
53
|
<string key="creator" value="cpee.org"/>
|
|
54
54
|
<extension name="Time" prefix="time" uri="http://www.xes-standard.org/time.xesext"/>
|
|
@@ -70,7 +70,18 @@ TEMPLATE_XES_XML = <<-END
|
|
|
70
70
|
<string key="cpee:lifecycle:transition" value="activity/calling"/>
|
|
71
71
|
<date key="time:timestamp" value="__NOTSPECIFIED__"/>
|
|
72
72
|
</global>
|
|
73
|
-
|
|
73
|
+
END
|
|
74
|
+
TEMPLATE_XES_XML_TRC = <<-END
|
|
75
|
+
<trace xmlns="http://www.xes-standard.org/"/>
|
|
76
|
+
END
|
|
77
|
+
TEMPLATE_XES_XML_EVT = <<-END
|
|
78
|
+
<event xmlns="http://www.xes-standard.org/"/>
|
|
79
|
+
END
|
|
80
|
+
TEMPLATE_XES_XML_MID = <<-END
|
|
81
|
+
<trace>
|
|
82
|
+
END
|
|
83
|
+
TEMPLATE_XES_XML_END = <<-END
|
|
84
|
+
</trace>
|
|
74
85
|
</log>
|
|
75
86
|
END
|
|
76
87
|
|
|
@@ -86,16 +97,27 @@ def rec_type(it)
|
|
|
86
97
|
end
|
|
87
98
|
end
|
|
88
99
|
|
|
100
|
+
def format_secs(s)
|
|
101
|
+
return 'long' if s.infinite?
|
|
102
|
+
s = s.to_i
|
|
103
|
+
m = s / 60
|
|
104
|
+
m < 0 ? "#{s}s" : "#{'%02d' % m}m #{'%02d' % (s%60)}s"
|
|
105
|
+
end
|
|
106
|
+
|
|
89
107
|
def rec_a_insert(event,node,level=0)
|
|
90
108
|
event.each do |i|
|
|
91
109
|
tnode = node
|
|
92
110
|
case i
|
|
93
111
|
when Hash
|
|
112
|
+
tnode = node.add('x:list', 'key' => 'element')
|
|
94
113
|
rec_insert(i,tnode,level+1)
|
|
95
114
|
when Array
|
|
96
|
-
|
|
115
|
+
tnode = node.add('x:list', 'key' => 'element')
|
|
116
|
+
rec_insert(i,tnode,level+1)
|
|
97
117
|
when String
|
|
98
|
-
node.add(rec_type(i), 'key' =>
|
|
118
|
+
node.add(rec_type(i), 'key' => 'element', 'value' => (i.empty? ? "__UNSPECIFIED__" : i))
|
|
119
|
+
when Integer, Float
|
|
120
|
+
node.add(rec_type(i), 'key' => 'element', 'value' => i)
|
|
99
121
|
end
|
|
100
122
|
end
|
|
101
123
|
end
|
|
@@ -240,7 +262,7 @@ ARGV.options { |opt|
|
|
|
240
262
|
opt.on("--help", "-h", "This text") { puts opt; exit }
|
|
241
263
|
opt.on("--add [STRING]", "-a [STRING]", "Add attribute for extract-all and extract-last. Example: -a 'filter=me'") { |a| x,y = a.split('='); attr[x] = y }
|
|
242
264
|
opt.on("")
|
|
243
|
-
opt.on(wrap("\"#{exname}\" will be
|
|
265
|
+
opt.on(wrap("\"#{exname}\" will be called \"c\" in the examples for each command."))
|
|
244
266
|
exname = 'c'
|
|
245
267
|
opt.on("")
|
|
246
268
|
opt.on(wrap("new [DIR] scaffolds a sample logging service. Add a handler to a cpee instance to experience the pleasure."))
|
|
@@ -403,26 +425,41 @@ elsif command == 'to-xes-xml'
|
|
|
403
425
|
end
|
|
404
426
|
|
|
405
427
|
path.each do |f|
|
|
406
|
-
|
|
407
|
-
|
|
428
|
+
fname = File.basename(f,'.xes.yaml') + '.xes.xml'
|
|
429
|
+
File.write(fname,TEMPLATE_XES_XML_START)
|
|
408
430
|
|
|
409
431
|
io = File.open(f)
|
|
432
|
+
count = 1
|
|
433
|
+
start = Time.now
|
|
434
|
+
total = `grep -c -e '---' #{f}`.to_f
|
|
435
|
+
percent = 0
|
|
436
|
+
duration = 0
|
|
410
437
|
YAML.load_stream(io) do |e|
|
|
438
|
+
percent = count/total
|
|
439
|
+
diff = Time.now - start
|
|
440
|
+
duration = diff/percent
|
|
441
|
+
print "#{"%0#{Math.log10(total).to_i + 1}d" % count}/#{total.to_i} #{'%05.2f' % (percent*100)}% (#{format_secs(duration-diff)} left) \r" if (count % 1000) == 0
|
|
442
|
+
count += 1
|
|
411
443
|
if trace = e.dig('log','trace')
|
|
444
|
+
xml = XML::Smart.string(TEMPLATE_XES_XML_TRC)
|
|
445
|
+
xml.register_namespace 'x', 'http://www.xes-standard.org/'
|
|
412
446
|
trace.each do |t,tv|
|
|
413
447
|
xml.find('//x:trace').each do |ele|
|
|
414
448
|
ele.add('x:string', 'key' => t, 'value' => tv)
|
|
415
449
|
end
|
|
416
450
|
end
|
|
451
|
+
File.write(fname, ' ' + xml.root.dump.gsub(/\n/,"\n ") + "\n", mode: 'a')
|
|
452
|
+
File.write(fname, TEMPLATE_XES_XML_MID, mode: 'a')
|
|
417
453
|
end
|
|
418
454
|
if e.dig('event')
|
|
419
|
-
xml.
|
|
420
|
-
|
|
421
|
-
|
|
455
|
+
xml = XML::Smart.string(TEMPLATE_XES_XML_EVT)
|
|
456
|
+
xml.register_namespace 'x', 'http://www.xes-standard.org/'
|
|
457
|
+
rec_insert(e.dig('event'),xml.root)
|
|
458
|
+
File.write(fname, ' ' + xml.root.dump.gsub(/\n/,"\n ") + "\n", mode: 'a')
|
|
422
459
|
end
|
|
423
460
|
end
|
|
424
|
-
|
|
425
|
-
|
|
461
|
+
File.write(fname, TEMPLATE_XES_XML_END, mode: 'a')
|
|
462
|
+
puts "#{count}/#{total.to_i} 100% (took #{format_secs(duration)}) \n"
|
|
426
463
|
end
|
|
427
464
|
else
|
|
428
465
|
puts ARGV.options
|