UNPKG

pm4js

Version:

Process Mining for Javascript

79 lines (76 loc) 1.94 kB
class OcelIntervalTree { static buildEventTimestampIntervalTree(ocel) { let events = ocel["ocel:events"]; let tree = new IntervalTree(); for (let evId in events) { let eve = events[evId]; let evTimest = eve["ocel:timestamp"].getTime() / 1000.0; tree.insert(evTimest-0.00001, evTimest+0.00001, eve); } let mintime = null; for (let n of tree.ascending()) { mintime = n.low; break; } let maxtime = null; for (let n of tree.descending()) { maxtime = n.high; break; } tree.mintime = mintime; tree.maxtime = maxtime; return tree; } static getObjectsLifecycle(ocel) { let lif = {}; let objects = ocel["ocel:objects"]; for (let objId in objects) { lif[objId] = []; } let events = ocel["ocel:events"]; for (let evId in events) { let eve = events[evId]; for (let objId of eve["ocel:omap"]) { lif[objId].push(eve); } } return lif; } static buildObjectLifecycleTimestampIntervalTree(ocel) { let objects = ocel["ocel:objects"]; let objLifecycle = OcelIntervalTree.getObjectsLifecycle(ocel); let tree = new IntervalTree(); for (let objId in objects) { let obj = objects[objId]; let lif = objLifecycle[objId]; if (lif.length > 0) { let st = lif[0]["ocel:timestamp"].getTime() / 1000.0; let et = lif[lif.length - 1]["ocel:timestamp"].getTime() / 1000.0; if (et > st) { tree.insert(st-0.00001, et+0.00001, [obj, lif]); } } } let mintime = null; for (let n of tree.ascending()) { mintime = n.low; break; } let maxtime = null; for (let n of tree.descending()) { maxtime = n.high; break; } tree.mintime = mintime; tree.maxtime = maxtime; return tree; } } try { module.exports = {OcelIntervalTree: OcelIntervalTree}; global.OcelIntervalTree = OcelIntervalTree; } catch (err) { // not in node //console.log(err); }