cpee-logging-xes-yaml 1.0 → 1.0.1
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 +2 -2
- data/tools/cpee-logging-xes-yaml +75 -11
- metadata +3 -3
- data/tools/sic.rb +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5233866b6ce08af2156e106e2813f40d684833933726adfea60a1297f0fef556
|
4
|
+
data.tar.gz: 93cbef9a422a9388bed75adb86a04eec7faa06036540e6190cc41ec07658a664
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55569ea8f23429cb63bf6d8d6df57064a9a3982ba66876fe36d8b400937c7d57a8dcc2c7ed9f833324541739338dfa1ff24198a4dae35888745c53a3fcf54132
|
7
|
+
data.tar.gz: c28f5c119e48cc76a3edef1b4649ed9d5f0ba6f75b848b0a1b734018de5afa45e0d6be918fd40d940667742b44c5b576f2297b7b210935519ba4ce778ebb1d62
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cpee-logging-xes-yaml"
|
3
|
-
s.version = "1.0"
|
3
|
+
s.version = "1.0.1"
|
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)"
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
|
16
16
|
s.required_ruby_version = '>=2.4.0'
|
17
17
|
|
18
|
-
s.authors = ['Juergen eTM Mangler']
|
18
|
+
s.authors = ['Juergen eTM Mangler','Florian Stertz']
|
19
19
|
|
20
20
|
s.email = 'juergen.mangler@gmail.com'
|
21
21
|
s.homepage = 'http://cpee.org/'
|
data/tools/cpee-logging-xes-yaml
CHANGED
@@ -4,15 +4,18 @@ require 'rubygems'
|
|
4
4
|
require 'optparse'
|
5
5
|
require 'fileutils'
|
6
6
|
require 'xml/smart'
|
7
|
+
require 'yaml'
|
8
|
+
require 'typhoeus'
|
9
|
+
require 'stringio'
|
7
10
|
|
8
|
-
def wrap(s, width=78, indent=18)
|
11
|
+
def wrap(s, width=78, indent=18, extra_indent=4)
|
9
12
|
lines = []
|
10
13
|
line, s = s[0..indent-2], s[indent..-1]
|
11
14
|
s.split(/\n/).each do |ss|
|
12
15
|
ss.split(/[ \t]+/).each do |word|
|
13
16
|
if line.size + word.size >= width
|
14
17
|
lines << line
|
15
|
-
line = (" " * (indent)) + word
|
18
|
+
line = (" " * (indent + extra_indent)) + word
|
16
19
|
else
|
17
20
|
line << " " << word
|
18
21
|
end
|
@@ -23,27 +26,88 @@ def wrap(s, width=78, indent=18)
|
|
23
26
|
return lines.join "\n"
|
24
27
|
end
|
25
28
|
|
29
|
+
def follow(fname,io,copy,deep=0)
|
30
|
+
if copy
|
31
|
+
File.write(File.basename(fname,'.xes.yaml') + '.xes.yaml',io.read)
|
32
|
+
io.rewind
|
33
|
+
end
|
34
|
+
YAML.load_stream(io) do |e|
|
35
|
+
if name = e.dig('log','trace','cpee:name')
|
36
|
+
puts " " * deep + name + " (#{File.basename(fname,'.xes.yaml')}) - #{e.dig('log','trace','concept:name')}"
|
37
|
+
end
|
38
|
+
if e.dig('event','concept:endpoint') == 'https://centurio.work/flow/start/url/' && e.dig('event','cpee:lifecycle:transition') == 'task/instantiation'
|
39
|
+
base = e.dig('event','data','data_receiver')
|
40
|
+
val = base.dig('CPEE-INSTANCE') rescue nil
|
41
|
+
if val.nil?
|
42
|
+
val = File.basename(base)
|
43
|
+
end
|
44
|
+
uuid = base.dig('CPEE-INSTANCE-UUID') rescue nil
|
45
|
+
unless uuid
|
46
|
+
res = Typhoeus.get(File.join('https://centurio.work/flow/engine/',val,'/properties/values/attributes/uuid/'))
|
47
|
+
if res.success?
|
48
|
+
uuid = XML::Smart.string(res.body).find('string(/*)')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
react File.dirname(fname) + "/#{uuid}.xes.yaml",copy,deep + 2
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def react(name,copy=false,deep=0)
|
57
|
+
if name.nil?
|
58
|
+
help
|
59
|
+
elsif name =~ /^https?:\/\//
|
60
|
+
res = Typhoeus.get(name)
|
61
|
+
if res.success?
|
62
|
+
file = Tempfile.new('sic')
|
63
|
+
file.write(res.body)
|
64
|
+
file.rewind
|
65
|
+
follow name, file, copy, deep
|
66
|
+
file.close
|
67
|
+
file.unlink
|
68
|
+
end
|
69
|
+
elsif File.exists? name
|
70
|
+
follow name, File.open(name), copy, deep
|
71
|
+
else
|
72
|
+
help
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
exname = File.basename($0)
|
77
|
+
|
26
78
|
ARGV.options { |opt|
|
27
79
|
opt.summary_indent = ' ' * 2
|
28
80
|
opt.summary_width = 15
|
29
|
-
opt.banner = "Usage:\n#{opt.summary_indent}#{
|
81
|
+
opt.banner = "Usage:\n#{opt.summary_indent}#{exname} new [DIR] | view [URI] | copy [URI]\n"
|
30
82
|
opt.on("Options:")
|
31
83
|
opt.on("--help", "-h", "This text") { puts opt; exit }
|
32
84
|
opt.on("")
|
33
|
-
opt.on(wrap("[DIR]
|
85
|
+
opt.on(wrap("new [DIR] scaffolds a sample logging service. Add a handler to a cpee instance to experience the pleasure.",78,18,0))
|
86
|
+
opt.on("")
|
87
|
+
opt.on(wrap("view [DIR] view the dependencies between processes and subprocesses.\nWorks for local and remote logs. Examples:\n#{exname} view https://cpee.org/log/123.xes.yaml\n#{exname} view https://cpee.org/log/a.xes.yaml > index.txt\n#{exname} view ~/log/logs/456.xes.yaml"))
|
88
|
+
opt.on("")
|
89
|
+
opt.on(wrap("copy [DIR] copy dependent processes and subprocesses to the current\ndirectory. Works for local and remote logs. Examples:\n#{exname} copy https://cpee.org/log/123.xes.yaml\n#{exname} copy ~/log/logs/456.xes.yaml"))
|
34
90
|
opt.parse!
|
35
91
|
}
|
36
|
-
if (ARGV.length !=
|
92
|
+
if (ARGV.length != 2)
|
37
93
|
puts ARGV.options
|
38
94
|
exit
|
39
95
|
else
|
40
|
-
|
96
|
+
command = ARGV[0]
|
97
|
+
dir = ARGV[1]
|
41
98
|
end
|
42
99
|
|
43
|
-
if
|
44
|
-
|
45
|
-
|
46
|
-
|
100
|
+
if command == 'new'
|
101
|
+
if !File.exists?(p1)
|
102
|
+
FileUtils.cp_r(File.join(curpath,'..','server'),p1)
|
103
|
+
FileUtils.mkdir(File.join(p1,'logs')) rescue nil
|
104
|
+
else
|
105
|
+
puts 'Directory already exists.'
|
106
|
+
end
|
107
|
+
elsif command == 'view'
|
108
|
+
react dir, false
|
109
|
+
elsif command == 'copy'
|
110
|
+
react dir, true
|
47
111
|
else
|
48
|
-
puts
|
112
|
+
puts ARGV.options
|
49
113
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpee-logging-xes-yaml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen eTM Mangler
|
8
|
+
- Florian Stertz
|
8
9
|
autorequire:
|
9
10
|
bindir: tools
|
10
11
|
cert_chain: []
|
11
|
-
date: 2020-10-
|
12
|
+
date: 2020-10-05 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: riddl
|
@@ -76,7 +77,6 @@ files:
|
|
76
77
|
- lib/cpee-logging-xes-yaml/template.xes_yaml
|
77
78
|
- server/log
|
78
79
|
- tools/cpee-logging-xes-yaml
|
79
|
-
- tools/sic.rb
|
80
80
|
homepage: http://cpee.org/
|
81
81
|
licenses:
|
82
82
|
- LGPL-3.0
|
data/tools/sic.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
require 'yaml'
|
3
|
-
require 'typhoeus'
|
4
|
-
require 'stringio'
|
5
|
-
require 'xml/smart'
|
6
|
-
|
7
|
-
def follow(fname,io,deep=0)
|
8
|
-
if ARGV[1] == 'copy'
|
9
|
-
File.write(File.basename(fname,'.xes.yaml') + '.xes.yaml',io.read)
|
10
|
-
io.rewind
|
11
|
-
end
|
12
|
-
YAML.load_stream(io) do |e|
|
13
|
-
if name = e.dig('log','trace','cpee:name')
|
14
|
-
puts " " * deep + name + " (#{File.basename(fname,'.xes.yaml')}) - #{e.dig('log','trace','concept:name')}"
|
15
|
-
end
|
16
|
-
if e.dig('event','concept:endpoint') == 'https://centurio.work/flow/start/url/' && e.dig('event','cpee:lifecycle:transition') == 'task/instantiation'
|
17
|
-
base = e.dig('event','data','data_receiver')
|
18
|
-
val = base.dig('CPEE-INSTANCE') rescue nil
|
19
|
-
if val.nil?
|
20
|
-
val = File.basename(base)
|
21
|
-
end
|
22
|
-
uuid = base.dig('CPEE-INSTANCE-UUID') rescue nil
|
23
|
-
unless uuid
|
24
|
-
res = Typhoeus.get(File.join('https://centurio.work/flow/engine/',val,'/properties/values/attributes/uuid/'))
|
25
|
-
if res.success?
|
26
|
-
uuid = XML::Smart.string(res.body).find('string(/*)')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
react File.dirname(fname) + "/#{uuid}.xes.yaml",deep + 2
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def react(name,deep=0)
|
35
|
-
if name.nil?
|
36
|
-
help
|
37
|
-
elsif name =~ /^https?:\/\//
|
38
|
-
res = Typhoeus.get(name)
|
39
|
-
if res.success?
|
40
|
-
file = Tempfile.new('sic')
|
41
|
-
file.write(res.body)
|
42
|
-
file.rewind
|
43
|
-
follow name, file, deep
|
44
|
-
file.close
|
45
|
-
file.unlink
|
46
|
-
end
|
47
|
-
elsif File.exists? name
|
48
|
-
follow name, File.open(name), deep
|
49
|
-
else
|
50
|
-
help
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def help
|
55
|
-
puts 'Views or copies log file trees to current directory.'
|
56
|
-
puts
|
57
|
-
puts ' View: sic.rb https://centurio.work/log/865916c6-2b18-4e9d-81d4-0fab0df248f4.xes.yaml'
|
58
|
-
puts ' Copy: sic.rb https://centurio.work/log/865916c6-2b18-4e9d-81d4-0fab0df248f4.xes.yaml copy'
|
59
|
-
puts ' Copy: sic.rb ~/Projects/cpee/log/logs/865916c6-2b18-4e9d-81d4-0fab0df248f4.xes.yaml copy'
|
60
|
-
puts ' View: sic.rb 865916c6-2b18-4e9d-81d4-0fab0df248f4.xes.yaml'
|
61
|
-
true
|
62
|
-
end
|
63
|
-
|
64
|
-
react(ARGV[0]) || help
|