cpee-logging-xes-yaml 1.3.5 → 1.3.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|