cpee-logging-xes-yaml 1.3.5 → 1.3.6
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 +101 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 899e0d2f04869dfa68eb7c7922222c825f87a1bd90d3b73f0cbb528bd95779d3
|
4
|
+
data.tar.gz: 64ef69bebaad740bb8ef4944fb2a5fa3a37d26ab1e0156bf58b75392c9fe8d39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b0f53c72122468d2f3c4e6a17cd69a7bb7ca0c9088bb843e82ebe3700cb0e6b78a20b453d761648acba181afcb3f9122eb4e4a65c0da166f07249c7b3b48341
|
7
|
+
data.tar.gz: 0557b1e7f8cb2e1538b4984238530d713db7b7927b6ccba5abc949c1b2f180d307370c9d2d6781f689cfce156f1b19339e624dab2eae1a8dfc0478706329ed61
|
data/tools/cpee-logging-xes-yaml
CHANGED
@@ -48,6 +48,74 @@ def wrap(s, width=78, indent=19, extra_indent=2)
|
|
48
48
|
return lines.join "\n"
|
49
49
|
end
|
50
50
|
|
51
|
+
TEMPLATE_XES_XML = <<-END
|
52
|
+
<log xmlns="http://www.xes-standard.org/" xes.version="2.0" xes.features="nested-attributes">
|
53
|
+
<string key="creator" value="cpee.org"/>
|
54
|
+
<extension name="Time" prefix="time" uri="http://www.xes-standard.org/time.xesext"/>
|
55
|
+
<extension name="Concept" prefix="concept" uri="http://www.xes-standard.org/concept.xesext"/>
|
56
|
+
<extension name="ID" prefix="id" uri="http://www.xes-standard.org/identity.xesext"/>
|
57
|
+
<extension name="Lifecycle" prefix="lifecycle" uri="http://www.xes-standard.org/lifecycle.xesext"/>
|
58
|
+
<extension name="CPEE" prefix="cpee" uri="http://cpee.org/cpee.xesext"/>
|
59
|
+
<extension name="stream" prefix="stream" uri="https://cpee.org/datastream/datastream.xesext"/>
|
60
|
+
<global scope="trace">
|
61
|
+
<string key="concept:name" value="__INVALID__"/>
|
62
|
+
<string key="cpee:name" value="__INVALID__"/>
|
63
|
+
</global>
|
64
|
+
<global scope="event">
|
65
|
+
<string key="concept:name" value="__INVALID__"/>
|
66
|
+
<string key="concept:instance" value="-1"/>
|
67
|
+
<string key="concept:endpoint" value=""/>
|
68
|
+
<string key="id:id" value=""/>
|
69
|
+
<string key="lifecycle:transition" value="complete" />
|
70
|
+
<string key="cpee:lifecycle:transition" value="activity/calling"/>
|
71
|
+
<date key="time:timestamp" value=""/>
|
72
|
+
</global>
|
73
|
+
<trace/>
|
74
|
+
</log>
|
75
|
+
END
|
76
|
+
|
77
|
+
def rec_type(it)
|
78
|
+
if (Time.parse(it) rescue nil)
|
79
|
+
'x:date'
|
80
|
+
elsif it.is_a? Float
|
81
|
+
'x:float'
|
82
|
+
elsif it.is_a? Integer
|
83
|
+
'x:int'
|
84
|
+
elsif it.is_a? String
|
85
|
+
'x:string'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def rec_a_insert(event,node,level=0)
|
90
|
+
event.each do |i|
|
91
|
+
tnode = node
|
92
|
+
# tnode = node.add('x:string', 'key' => 'item')
|
93
|
+
case i
|
94
|
+
when Hash
|
95
|
+
rec_insert(i,tnode,level+1)
|
96
|
+
when Array
|
97
|
+
rec_a_insert(i,tnode,level+1)
|
98
|
+
when String
|
99
|
+
node.add(rec_type(i), 'key' => i, 'value' => i)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def rec_insert(event,node,level=0)
|
105
|
+
event.each do |k,v|
|
106
|
+
case v
|
107
|
+
when String
|
108
|
+
node.add(rec_type(v), 'key' => k, 'value' => v)
|
109
|
+
when Array
|
110
|
+
tnode = node.add('x:list', 'key' => k)
|
111
|
+
rec_a_insert(v,tnode,level+1)
|
112
|
+
when Hash
|
113
|
+
tnode = node.add('x:string', 'key' => k)
|
114
|
+
rec_insert(v,tnode)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
51
119
|
def follow(fname,io,copy,deep=0,index=nil)
|
52
120
|
tname = if fname =~ /\.xes\.shift\.yaml/
|
53
121
|
File.basename(fname,'.xes.shift.yaml')
|
@@ -175,9 +243,11 @@ ARGV.options { |opt|
|
|
175
243
|
opt.on("")
|
176
244
|
opt.on(wrap("extract-all [LOG] extract cpee testset from cpee xes-yaml log. Works for local and remote logs. Write logs to files in folder named like the instance uuid contained in the log. Examples: \n#{exname} extract https://cpee.org/log/123.xes.yaml\n#{exname} extract ~/log/logs/456.xes.yaml"))
|
177
245
|
opt.on("")
|
178
|
-
opt.on(wrap("extract-last [LOG] extract cpee testset from cpee xes-yaml log. Works for local and remote logs.
|
246
|
+
opt.on(wrap("extract-last [LOG] extract cpee testset from cpee xes-yaml log. Works for local and remote logs. When called with out [LOG], models for all log files in the current directory are extracted. Examples:\n#{exname} extract https://cpee.org/log/123.xes.yaml\n#{exname} extract ~/log/logs/456.xes.yaml"))
|
179
247
|
opt.on("")
|
180
248
|
opt.on(wrap("index [LOG] creates an index for a log file, for more efficient parsing. When called without [LOG], indexes all log files in the current directory. Examples:\n#{exname} index https://cpee.org/log/123.xes.yaml\n#{exname} index ~/log/logs/456.xes.yaml"))
|
249
|
+
opt.on("")
|
250
|
+
opt.on(wrap("to-xes-xml [LOG] convert cpee xes-yaml to xes-xml. Works for local and remote logs. When called with out [LOG], all log files in the current directory are converted. Examples:\n#{exname} to-xes-xml https://cpee.org/log/123.xes.yaml\n#{exname} to-xes-xml ~/log/logs/456.xes.yaml"))
|
181
251
|
opt.parse!
|
182
252
|
}
|
183
253
|
|
@@ -187,7 +257,7 @@ if (ARGV.length < 1 || ARGV.length > 2)
|
|
187
257
|
elsif ARGV.length == 2
|
188
258
|
command = ARGV[0]
|
189
259
|
path = ARGV[1]
|
190
|
-
elsif ARGV.length == 1 && %w{index extract-last}.include?(ARGV[0])
|
260
|
+
elsif ARGV.length == 1 && %w{index extract-last to-xes-xml}.include?(ARGV[0])
|
191
261
|
command = ARGV[0]
|
192
262
|
end
|
193
263
|
|
@@ -300,6 +370,35 @@ elsif command == 'index'
|
|
300
370
|
|
301
371
|
File.write(f + '.index', MessagePack.pack(nindex))
|
302
372
|
end
|
373
|
+
elsif command == 'to-xes-xml'
|
374
|
+
path = if path
|
375
|
+
[path]
|
376
|
+
else
|
377
|
+
Dir.glob('*.xes.yaml')
|
378
|
+
end
|
379
|
+
|
380
|
+
path.each do |f|
|
381
|
+
xml = XML::Smart.string(TEMPLATE_XES_XML)
|
382
|
+
xml.register_namespace 'x', 'http://www.xes-standard.org/'
|
383
|
+
|
384
|
+
io = File.open(f)
|
385
|
+
YAML.load_stream(io) do |e|
|
386
|
+
if trace = e.dig('log','trace')
|
387
|
+
trace.each do |t,tv|
|
388
|
+
xml.find('//x:trace').each do |ele|
|
389
|
+
ele.add('x:string', 'key' => t, 'value' => tv)
|
390
|
+
end
|
391
|
+
end
|
392
|
+
end
|
393
|
+
if e.dig('event')
|
394
|
+
xml.find('//x:trace').each do |node|
|
395
|
+
rec_insert(e.dig('event'),node.add('x:event'))
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
File.write(File.basename(f,'.xes.yaml') + '.xes.xml', xml.to_s)
|
401
|
+
end
|
303
402
|
else
|
304
403
|
puts ARGV.options
|
305
404
|
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.3.
|
4
|
+
version: 1.3.6
|
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: 2024-
|
12
|
+
date: 2024-03-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: riddl
|