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
         |